public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/7507: gcc segv
@ 2002-08-06  7:06 Han-Wen Nienhuys
  0 siblings, 0 replies; only message in thread
From: Han-Wen Nienhuys @ 2002-08-06  7:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7507
>Category:       c
>Synopsis:       gcc segv
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 06 07:06:04 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Han-Wen Nienhuys
>Release:        3.1.1
>Organization:
CS Dept. Utrecht University -- The Netherlands
>Environment:
System: Linux meddo.cs.uu.nl 2.4.18 #1 di feb 26 12:12:46 CET 2002 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.1.1/configure --prefix=/users/hanwen/usr/pkg/gcc3 --program-suffix=3 --with-cpu=i686 --enable-languages=java,c++,c
>Description:
	(gdb) r -O2 gccsegv.c
eval.c: In function `scm_ceval':
eval.c:3314: internal error: Segmentatie fout
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.


>How-To-Repeat:
# 1 "eval.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "eval.c"
# 58 "eval.c"
# 1 "../libguile/scmconfig.h" 1
# 59 "eval.c" 2
# 77 "eval.c"
# 1 "../libguile/_scm.h" 1
# 49 "../libguile/_scm.h"
# 1 "../libguile/__scm.h" 1
# 157 "../libguile/__scm.h"
# 1 "../libguile/scmconfig.h" 1
# 158 "../libguile/__scm.h" 2
# 304 "../libguile/__scm.h"
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 1 3
# 11 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/syslimits.h" 1 3






# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 1 3
# 132 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 3
# 1 "/usr/include/limits.h" 1 3
# 26 "/usr/include/limits.h" 3
# 1 "/usr/include/features.h" 1 3
# 291 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 292 "/usr/include/features.h" 2 3
# 320 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 321 "/usr/include/features.h" 2 3
# 27 "/usr/include/limits.h" 2 3
# 144 "/usr/include/limits.h" 3
# 1 "/usr/include/bits/posix1_lim.h" 1 3
# 126 "/usr/include/bits/posix1_lim.h" 3
# 1 "/usr/include/bits/local_lim.h" 1 3
# 36 "/usr/include/bits/local_lim.h" 3
# 1 "/usr/include/linux/limits.h" 1 3
# 37 "/usr/include/bits/local_lim.h" 2 3
# 127 "/usr/include/bits/posix1_lim.h" 2 3
# 145 "/usr/include/limits.h" 2 3



# 1 "/usr/include/bits/posix2_lim.h" 1 3
# 149 "/usr/include/limits.h" 2 3
# 133 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 2 3
# 8 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/syslimits.h" 2 3
# 12 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/limits.h" 2 3
# 305 "../libguile/__scm.h" 2
# 328 "../libguile/__scm.h"
# 1 "/usr/include/stdlib.h" 1 3
# 33 "/usr/include/stdlib.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 201 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 3
typedef unsigned int size_t;
# 294 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 3
typedef long int wchar_t;
# 34 "/usr/include/stdlib.h" 2 3


# 94 "/usr/include/stdlib.h" 3
typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
# 133 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;



extern double atof (__const char *__nptr) __attribute__ ((__pure__));

extern int atoi (__const char *__nptr) __attribute__ ((__pure__));

extern long int atol (__const char *__nptr) __attribute__ ((__pure__));



__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__pure__));



extern double strtod (__const char *__restrict __nptr,
                      char **__restrict __endptr) ;
# 163 "/usr/include/stdlib.h" 3
extern long int strtol (__const char *__restrict __nptr,
                        char **__restrict __endptr, int __base) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
                                  char **__restrict __endptr, int __base)
     ;



__extension__
extern long long int strtoq (__const char *__restrict __nptr,
                             char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
                                       char **__restrict __endptr, int __base)
     ;






__extension__
extern long long int strtoll (__const char *__restrict __nptr,
                              char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
                                        char **__restrict __endptr, int __base)
     ;
# 250 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr,
                                 char **__restrict __endptr, int __group)
     ;
extern float __strtof_internal (__const char *__restrict __nptr,
                                char **__restrict __endptr, int __group)
     ;
extern long double __strtold_internal (__const char *__restrict __nptr,
                                       char **__restrict __endptr,
                                       int __group) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
                                   char **__restrict __endptr,
                                   int __base, int __group) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
                                             char **__restrict __endptr,
                                             int __base, int __group) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
                                         char **__restrict __endptr,
                                         int __base, int __group) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
                                                   __restrict __nptr,
                                                   char **__restrict __endptr,
                                                   int __base, int __group)
     ;







extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 325 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
          int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 384 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) ;


extern long int a64l (__const char *__s) __attribute__ ((__pure__));


# 1 "/usr/include/sys/types.h" 1 3
# 28 "/usr/include/sys/types.h" 3


# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/bits/types.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef int __clockid_t;


typedef int __timer_t;






typedef int __key_t;


typedef unsigned short int __ipc_pid_t;



typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_quad_t __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;


typedef unsigned int __socklen_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
  {
    int __sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3


struct _pthread_fastlock
{
  long int __status;
  int __spinlock;

};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct __pthread_attr_s
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;
# 140 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 144 "/usr/include/bits/types.h" 2 3
# 31 "/usr/include/sys/types.h" 2 3



typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 61 "/usr/include/sys/types.h" 3
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 99 "/usr/include/sys/types.h" 3
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 132 "/usr/include/sys/types.h" 3
# 1 "/usr/include/time.h" 1 3
# 70 "/usr/include/time.h" 3
typedef __time_t time_t;
# 82 "/usr/include/time.h" 3
typedef __clockid_t clockid_t;
# 94 "/usr/include/time.h" 3
typedef __timer_t timer_t;
# 133 "/usr/include/sys/types.h" 2 3
# 146 "/usr/include/sys/types.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 147 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 190 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 212 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 37 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 38 "/usr/include/endian.h" 2 3
# 213 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 31 "/usr/include/sys/select.h" 3
# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3
# 106 "/usr/include/time.h" 3
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3

# 1 "/usr/include/bits/time.h" 1 3
# 67 "/usr/include/bits/time.h" 3
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3


typedef __suseconds_t suseconds_t;





typedef long int __fd_mask;







typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } fd_set;






typedef __fd_mask fd_mask;
# 95 "/usr/include/sys/select.h" 3







extern int select (int __nfds, fd_set *__restrict __readfds,
                   fd_set *__restrict __writefds,
                   fd_set *__restrict __exceptfds,
                   struct timeval *__restrict __timeout) ;
# 118 "/usr/include/sys/select.h" 3

# 216 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 219 "/usr/include/sys/types.h" 2 3
# 230 "/usr/include/sys/types.h" 3
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 262 "/usr/include/sys/types.h" 3

# 391 "/usr/include/stdlib.h" 2 3






extern long int random (void) ;


extern void srandom (unsigned int __seed) ;





extern char *initstate (unsigned int __seed, char *__statebuf,
                        size_t __statelen) ;



extern char *setstate (char *__statebuf) ;







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
                     int32_t *__restrict __result) ;

extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
                        size_t __statelen,
                        struct random_data *__restrict __buf) ;

extern int setstate_r (char *__restrict __statebuf,
                       struct random_data *__restrict __buf) ;





extern int rand (void) ;

extern void srand (unsigned int __seed) ;



extern int rand_r (unsigned int *__seed) ;







extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;


extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;


extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;


extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      double *__restrict __result) ;


extern int lrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int mrand48_r (struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
                      struct drand48_data *__restrict __buffer,
                      long int *__restrict __result) ;


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     ;

extern int seed48_r (unsigned short int __seed16v[3],
                     struct drand48_data *__buffer) ;

extern int lcong48_r (unsigned short int __param[7],
                      struct drand48_data *__buffer) ;
# 527 "/usr/include/stdlib.h" 3
extern void *malloc (size_t __size) __attribute__ ((__malloc__));

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__malloc__));





extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__));

extern void free (void *__ptr) ;



extern void cfree (void *__ptr) ;



# 1 "/usr/include/alloca.h" 1 3
# 25 "/usr/include/alloca.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3







extern void *alloca (size_t __size) ;






# 547 "/usr/include/stdlib.h" 2 3




extern void *valloc (size_t __size) __attribute__ ((__malloc__));
# 561 "/usr/include/stdlib.h" 3
extern void abort (void) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) ;




extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     ;





extern void exit (int __status) __attribute__ ((__noreturn__));
# 587 "/usr/include/stdlib.h" 3
extern char *getenv (__const char *__name) ;



extern char *__secure_getenv (__const char *__name) ;





extern int putenv (char *__string) ;





extern int setenv (__const char *__name, __const char *__value, int __replace)
     ;


extern int unsetenv (__const char *__name) ;






extern int clearenv (void) ;
# 623 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) ;







extern int mkstemp (char *__template) ;
# 650 "/usr/include/stdlib.h" 3
extern char *mkdtemp (char *__template) ;




extern int system (__const char *__command) ;
# 672 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name,
                       char *__restrict __resolved) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);
# 689 "/usr/include/stdlib.h" 3
extern void *bsearch (__const void *__key, __const void *__base,
                      size_t __nmemb, size_t __size, __compar_fn_t __compar);



extern void qsort (void *__base, size_t __nmemb, size_t __size,
                   __compar_fn_t __compar);



extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
# 710 "/usr/include/stdlib.h" 3
extern div_t div (int __numer, int __denom)
     __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__const__));
# 728 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign) ;




extern char *gcvt (double __value, int __ndigit, char *__buf) ;




extern char *qecvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
                   int *__restrict __sign, char *__restrict __buf,
                   size_t __len) ;

extern int qecvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
                    int *__restrict __decpt, int *__restrict __sign,
                    char *__restrict __buf, size_t __len) ;






extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc,
                   __const char *__restrict __s, size_t __n) ;


extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
                        __const char *__restrict __s, size_t __n) ;

extern size_t wcstombs (char *__restrict __s,
                        __const wchar_t *__restrict __pwcs, size_t __n)
     ;







extern int rpmatch (__const char *__response) ;
# 858 "/usr/include/stdlib.h" 3
extern int getloadavg (double __loadavg[], int __nelem) ;






# 329 "../libguile/__scm.h" 2






# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 147 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 3
typedef int ptrdiff_t;
# 336 "../libguile/__scm.h" 2
# 350 "../libguile/__scm.h"
# 1 "../libguile/tags.h" 1
# 54 "../libguile/tags.h"
# 1 "/usr/include/stdint.h" 1 3
# 27 "/usr/include/stdint.h" 3
# 1 "/usr/include/bits/wchar.h" 1 3
# 28 "/usr/include/stdint.h" 2 3
# 1 "/usr/include/bits/wordsize.h" 1 3
# 29 "/usr/include/stdint.h" 2 3
# 49 "/usr/include/stdint.h" 3
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;

typedef unsigned int uint32_t;





__extension__
typedef unsigned long long int uint64_t;






typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;



__extension__
typedef long long int int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;



__extension__
typedef unsigned long long int uint_least64_t;






typedef signed char int_fast8_t;





typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;



typedef unsigned char uint_fast8_t;





typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__
typedef unsigned long long int uint_fast64_t;
# 126 "/usr/include/stdint.h" 3
typedef int intptr_t;


typedef unsigned int uintptr_t;
# 138 "/usr/include/stdint.h" 3
__extension__
typedef long long int intmax_t;
__extension__
typedef unsigned long long int uintmax_t;
# 55 "../libguile/tags.h" 2



# 1 "/usr/include/inttypes.h" 1 3
# 35 "/usr/include/inttypes.h" 3
typedef long int __gwchar_t;
# 274 "/usr/include/inttypes.h" 3

# 288 "/usr/include/inttypes.h" 3
typedef struct
  {
    long long int quot;
    long long int rem;
  } imaxdiv_t;





extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__const__));


extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
      __attribute__ ((__const__));


extern intmax_t strtoimax (__const char *__restrict __nptr,
                           char **__restrict __endptr, int __base) ;


extern uintmax_t strtoumax (__const char *__restrict __nptr,
                            char ** __restrict __endptr, int __base) ;


extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
                           __gwchar_t **__restrict __endptr, int __base)
     ;


extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
                            __gwchar_t ** __restrict __endptr, int __base)
     ;
# 396 "/usr/include/inttypes.h" 3
extern __inline intmax_t
strtoimax (__const char *__restrict nptr, char **__restrict endptr,
           int base)
{
  return __strtoll_internal (nptr, endptr, base, 0);
}
# 414 "/usr/include/inttypes.h" 3
extern __inline uintmax_t
strtoumax (__const char *__restrict nptr, char **__restrict endptr,
           int base)
{
  return __strtoull_internal (nptr, endptr, base, 0);
}



__extension__
extern long long int __wcstoll_internal (__const __gwchar_t *
                                         __restrict __nptr,
                                         __gwchar_t **__restrict __endptr,
                                         int __base, int __group) ;


extern __inline intmax_t
wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
           int base)
{
  return __wcstoll_internal (nptr, endptr, base, 0);
}




__extension__
extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
                                                   __restrict __nptr,
                                                   __gwchar_t **
                                                   __restrict __endptr,
                                                   int __base,
                                                   int __group) ;


extern __inline uintmax_t
wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
           int base)
{
  return __wcstoull_internal (nptr, endptr, base, 0);
}





# 59 "../libguile/tags.h" 2
# 73 "../libguile/tags.h"
typedef unsigned long scm_t_bits;
typedef signed long scm_t_signed_bits;
# 93 "../libguile/tags.h"
    typedef struct scm_unused_struct * SCM;
# 394 "../libguile/tags.h"
enum scm_tags
{
  scm_tc8_char = 0xf4,
  scm_tc8_iloc = 0xfc
};
# 420 "../libguile/tags.h"
extern char *scm_isymnames[];
# 351 "../libguile/__scm.h" 2
# 371 "../libguile/__scm.h"
# 1 "/usr/include/setjmp.h" 1 3
# 28 "/usr/include/setjmp.h" 3


# 1 "/usr/include/bits/setjmp.h" 1 3
# 36 "/usr/include/bits/setjmp.h" 3
typedef int __jmp_buf[6];
# 31 "/usr/include/setjmp.h" 2 3
# 1 "/usr/include/bits/sigset.h" 1 3
# 32 "/usr/include/setjmp.h" 2 3


typedef struct __jmp_buf_tag
  {




    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  } jmp_buf[1];




extern int setjmp (jmp_buf __env) ;



extern int _setjmp (jmp_buf __env) ;




extern int __sigsetjmp (jmp_buf __env, int __savemask) ;
# 73 "/usr/include/setjmp.h" 3
extern void longjmp (jmp_buf __env, int __val)
     __attribute__ ((__noreturn__));




extern void _longjmp (jmp_buf __env, int __val)
     __attribute__ ((__noreturn__));







typedef jmp_buf sigjmp_buf;
# 98 "/usr/include/setjmp.h" 3
extern void siglongjmp (sigjmp_buf __env, int __val)
     __attribute__ ((__noreturn__));



# 372 "../libguile/__scm.h" 2
# 403 "../libguile/__scm.h"
typedef long SCM_STACKITEM;
# 422 "../libguile/__scm.h"
extern int scm_asyncs_pending_p;
# 595 "../libguile/__scm.h"
extern SCM scm_call_generic_0 (SCM gf);
# 604 "../libguile/__scm.h"
extern SCM scm_call_generic_1 (SCM gf, SCM a1);
# 613 "../libguile/__scm.h"
extern SCM scm_call_generic_2 (SCM gf, SCM a1, SCM a2);
# 624 "../libguile/__scm.h"
extern SCM scm_apply_generic (SCM gf, SCM args);
# 50 "../libguile/_scm.h" 2
# 65 "../libguile/_scm.h"
# 1 "../libguile/error.h" 1
# 52 "../libguile/error.h"
extern int scm_ints_disabled;

extern SCM scm_system_error_key;
extern SCM scm_num_overflow_key;
extern SCM scm_out_of_range_key;
extern SCM scm_args_number_key;
extern SCM scm_arg_type_key;
extern SCM scm_memory_alloc_key;
extern SCM scm_misc_error_key;



extern void scm_error (SCM key, const char *subr, const char *message,
                        SCM args, SCM rest) __attribute__ ((noreturn));
extern SCM scm_error_scm (SCM key, SCM subr, SCM message,
                           SCM args, SCM rest) __attribute__ ((noreturn));
extern SCM scm_strerror (SCM err);
extern void scm_syserror (const char *subr) __attribute__ ((noreturn));
extern void scm_syserror_msg (const char *subr, const char *message,
                               SCM args, int eno) __attribute__ ((noreturn));
extern void scm_num_overflow (const char *subr) __attribute__ ((noreturn));
extern void scm_out_of_range (const char *subr, SCM bad_value)
     __attribute__ ((noreturn));
extern void scm_out_of_range_pos (const char *subr, SCM bad_value, SCM pos)
     __attribute__ ((noreturn));
extern void scm_wrong_num_args (SCM proc) __attribute__ ((noreturn));
extern void scm_error_num_args_subr (const char* subr) __attribute__ ((noreturn));
extern void scm_wrong_type_arg (const char *subr, int pos,
                                 SCM bad_value) __attribute__ ((noreturn));
extern void scm_wrong_type_arg_msg (const char *subr, int pos,
                                     SCM bad_value, const char *sz) __attribute__ ((noreturn));
extern void scm_memory_error (const char *subr) __attribute__ ((noreturn));
extern void scm_misc_error (const char *subr, const char *message,
                             SCM args) __attribute__ ((noreturn));
extern void scm_init_error (void);
# 66 "../libguile/_scm.h" 2
# 1 "../libguile/print.h" 1
# 51 "../libguile/print.h"
# 1 "../libguile/options.h" 1
# 56 "../libguile/options.h"
typedef struct scm_t_option
{
  unsigned int type;
  const char *name;
  scm_t_bits val;
  char *doc;
} scm_t_option;







extern SCM scm_options (SCM, scm_t_option [], unsigned int, const char*);
extern void scm_init_opts (SCM (*) (SCM), scm_t_option [], unsigned int n);
extern void scm_init_options (void);
# 52 "../libguile/print.h" 2

extern scm_t_option scm_print_opts[];
# 83 "../libguile/print.h"
typedef struct scm_print_state {
  SCM handle;
  int revealed;
  unsigned long writingp;
  unsigned long fancyp;
  unsigned long level;
  unsigned long length;
  SCM hot_ref;
  unsigned long list_offset;
  unsigned long top;
  unsigned long ceiling;
  SCM *ref_stack;

  SCM ref_vect;
} scm_print_state;

extern SCM scm_print_state_vtable;

extern scm_t_bits scm_tc16_port_with_ps;

extern SCM scm_print_options (SCM setting);
extern SCM scm_make_print_state (void);
extern void scm_free_print_state (SCM print_state);
extern void scm_intprint (long n, int radix, SCM port);
extern void scm_ipruk (char *hdr, SCM ptr, SCM port);
extern void scm_iprlist (char *hdr, SCM exp, int tlr, SCM port, scm_print_state *pstate);
extern void scm_print_symbol_name (const char *str, size_t len, SCM port);
extern void scm_prin1 (SCM exp, SCM port, int writingp);
extern void scm_iprin1 (SCM exp, SCM port, scm_print_state *pstate);
extern SCM scm_write (SCM obj, SCM port);
extern SCM scm_display (SCM obj, SCM port);
extern SCM scm_simple_format (SCM port, SCM message, SCM args);
extern SCM scm_newline (SCM port);
extern SCM scm_write_char (SCM chr, SCM port);
extern SCM scm_printer_apply (SCM proc, SCM exp, SCM port, scm_print_state *);
extern SCM scm_port_with_print_state (SCM port, SCM pstate);
extern SCM scm_get_print_state (SCM port);
extern int scm_valid_oport_value_p (SCM val);
extern void scm_init_print (void);
# 67 "../libguile/_scm.h" 2
# 1 "../libguile/pairs.h" 1
# 106 "../libguile/pairs.h"
extern SCM scm_cons (SCM x, SCM y);
extern SCM scm_cons2 (SCM w, SCM x, SCM y);
extern SCM scm_pair_p (SCM x);
extern SCM scm_set_car_x (SCM pair, SCM value);
extern SCM scm_set_cdr_x (SCM pair, SCM value);
extern void scm_init_pairs (void);
# 68 "../libguile/_scm.h" 2
# 1 "../libguile/list.h" 1
# 53 "../libguile/list.h"
extern SCM scm_list_1 (SCM e1);
extern SCM scm_list_2 (SCM e1, SCM e2);
extern SCM scm_list_3 (SCM e1, SCM e2, SCM e3);
extern SCM scm_list_4 (SCM e1, SCM e2, SCM e3, SCM e4);
extern SCM scm_list_5 (SCM e1, SCM e2, SCM e3, SCM e4, SCM e5);
extern SCM scm_list_n (SCM elt, ...);
extern SCM scm_list_head (SCM lst, SCM k);
extern SCM scm_list (SCM objs);
extern SCM scm_cons_star (SCM arg, SCM objs);
extern SCM scm_null_p (SCM x);
extern SCM scm_list_p (SCM x);
extern long scm_ilength (SCM sx);
extern SCM scm_length (SCM x);
extern SCM scm_append (SCM args);
extern SCM scm_append_x (SCM args);
extern SCM scm_reverse (SCM lst);
extern SCM scm_reverse_x (SCM lst, SCM newtail);
extern SCM scm_list_ref (SCM lst, SCM k);
extern SCM scm_list_set_x (SCM lst, SCM k, SCM val);
extern SCM scm_list_cdr_set_x (SCM lst, SCM k, SCM val);
extern SCM scm_last_pair (SCM sx);
extern SCM scm_list_tail (SCM lst, SCM k);
extern SCM scm_c_memq (SCM x, SCM lst);
extern SCM scm_memq (SCM x, SCM lst);
extern SCM scm_memv (SCM x, SCM lst);
extern SCM scm_member (SCM x, SCM lst);
extern SCM scm_delq_x (SCM item, SCM lst);
extern SCM scm_delv_x (SCM item, SCM lst);
extern SCM scm_delete_x (SCM item, SCM lst);
extern SCM scm_list_copy (SCM lst);
extern SCM scm_delq (SCM item, SCM lst);
extern SCM scm_delv (SCM item, SCM lst);
extern SCM scm_delete (SCM item, SCM lst);
extern SCM scm_delq1_x (SCM item, SCM lst);
extern SCM scm_delv1_x (SCM item, SCM lst);
extern SCM scm_delete1_x (SCM item, SCM lst);
extern void scm_init_list (void);
# 69 "../libguile/_scm.h" 2
# 1 "../libguile/gc.h" 1
# 51 "../libguile/gc.h"
# 1 "../libguile/hooks.h" 1
# 60 "../libguile/hooks.h"
typedef enum scm_t_c_hook_type {
  SCM_C_HOOK_NORMAL,
  SCM_C_HOOK_OR,
  SCM_C_HOOK_AND
} scm_t_c_hook_type;

typedef void *(*scm_t_c_hook_function) (void *hook_data,
                                         void *func_data,
                                         void *data);

typedef struct scm_t_c_hook_entry {
  struct scm_t_c_hook_entry *next;
  scm_t_c_hook_function func;
  void *data;
} scm_t_c_hook_entry;

typedef struct scm_t_c_hook {
  scm_t_c_hook_entry *first;
  scm_t_c_hook_type type;
  void *data;
} scm_t_c_hook;

extern void scm_c_hook_init (scm_t_c_hook *hook,
                              void *hook_data,
                              scm_t_c_hook_type type);
extern void scm_c_hook_add (scm_t_c_hook *hook,
                             scm_t_c_hook_function func,
                             void *func_data,
                             int appendp);
extern void scm_c_hook_remove (scm_t_c_hook *hook,
                                scm_t_c_hook_function func,
                                void *func_data);
extern void *scm_c_hook_run (scm_t_c_hook *hook, void *data);





extern scm_t_bits scm_tc16_hook;






extern SCM scm_make_hook (SCM n_args);
extern SCM scm_hook_p (SCM x);
extern SCM scm_hook_empty_p (SCM hook);
extern SCM scm_add_hook_x (SCM hook, SCM thunk, SCM appendp);
extern SCM scm_remove_hook_x (SCM hook, SCM thunk);
extern SCM scm_reset_hook_x (SCM hook);
extern SCM scm_run_hook (SCM hook, SCM args);
extern void scm_c_run_hook (SCM hook, SCM args);
extern SCM scm_hook_to_list (SCM hook);
extern void scm_init_hooks (void);
# 52 "../libguile/gc.h" 2



typedef struct scm_t_cell
{
  scm_t_bits word_0;
  scm_t_bits word_1;
} scm_t_cell;
# 132 "../libguile/gc.h"
typedef unsigned long scm_t_c_bvec_long;
# 251 "../libguile/gc.h"
extern int scm_debug_cell_accesses_p;
extern int scm_expensive_debug_cell_accesses_p;
extern int scm_debug_cells_gc_interval ;


extern int scm_block_gc;
extern int scm_gc_heap_lock;
extern unsigned int scm_gc_running_p;



extern size_t scm_default_init_heap_size_1;
extern int scm_default_min_yield_1;
extern size_t scm_default_init_heap_size_2;
extern int scm_default_min_yield_2;
extern size_t scm_default_max_segment_size;
# 276 "../libguile/gc.h"
extern size_t scm_max_segment_size;





extern SCM scm_i_freelist;
extern struct scm_t_cell_type_statistics scm_i_master_freelist;
extern SCM scm_i_freelist2;
extern struct scm_t_cell_type_statistics scm_i_master_freelist2;


extern unsigned long scm_gc_cells_swept;
extern unsigned long scm_gc_cells_collected;
extern unsigned long scm_gc_cells_collected;
extern unsigned long scm_gc_malloc_collected;
extern unsigned long scm_gc_ports_collected;
extern long scm_cells_allocated;
extern int scm_gc_cell_yield_percentage;
extern int scm_gc_malloc_yield_percentage;
extern unsigned long scm_mallocated;
extern unsigned long scm_mtrigger;



extern SCM scm_after_gc_hook;

extern scm_t_c_hook scm_before_gc_c_hook;
extern scm_t_c_hook scm_before_mark_c_hook;
extern scm_t_c_hook scm_before_sweep_c_hook;
extern scm_t_c_hook scm_after_sweep_c_hook;
extern scm_t_c_hook scm_after_gc_c_hook;
# 320 "../libguile/gc.h"
extern void scm_assert_cell_valid (SCM);


extern SCM scm_set_debug_cell_accesses_x (SCM flag);


extern SCM scm_object_address (SCM obj);
extern SCM scm_gc_stats (void);
extern SCM scm_gc (void);
extern void scm_gc_for_alloc (struct scm_t_cell_type_statistics *freelist);
extern SCM scm_gc_for_newcell (struct scm_t_cell_type_statistics *master, SCM *freelist);
extern void scm_igc (const char *what);
extern void scm_gc_mark (SCM p);
extern void scm_gc_mark_dependencies (SCM p);
extern void scm_mark_locations (SCM_STACKITEM x[], unsigned long n);
extern int scm_in_heap_p (SCM value);
extern void scm_gc_sweep (void);

extern void *scm_malloc (size_t size);
extern void *scm_calloc (size_t size);
extern void *scm_realloc (void *mem, size_t size);
extern char *scm_strdup (const char *str);
extern char *scm_strndup (const char *str, size_t n);
extern void scm_gc_register_collectable_memory (void *mem, size_t size,
                                                 const char *what);
extern void scm_gc_unregister_collectable_memory (void *mem, size_t size,
                                                   const char *what);
extern void *scm_gc_calloc (size_t size, const char *what);
extern void *scm_gc_malloc (size_t size, const char *what);
extern void *scm_gc_realloc (void *mem, size_t old_size,
                              size_t new_size, const char *what);
extern void scm_gc_free (void *mem, size_t size, const char *what);
extern char *scm_gc_strdup (const char *str, const char *what);
extern char *scm_gc_strndup (const char *str, size_t n, const char *what);

extern void scm_remember_upto_here_1 (SCM obj);
extern void scm_remember_upto_here_2 (SCM obj1, SCM obj2);
extern void scm_remember_upto_here (SCM obj1, ...);
extern SCM scm_return_first (SCM elt, ...);
extern int scm_return_first_int (int x, ...);
extern SCM scm_permanent_object (SCM obj);
extern SCM scm_gc_protect_object (SCM obj);
extern SCM scm_gc_unprotect_object (SCM obj);
extern void scm_gc_register_root (SCM *p);
extern void scm_gc_unregister_root (SCM *p);
extern void scm_gc_register_roots (SCM *b, unsigned long n);
extern void scm_gc_unregister_roots (SCM *b, unsigned long n);
extern int scm_init_storage (void);
extern void *scm_get_stack_base (void);
extern void scm_init_gc (void);



extern SCM scm_deprecated_newcell (void);
extern SCM scm_deprecated_newcell2 (void);






extern void * scm_must_malloc (size_t len, const char *what);
extern void * scm_must_realloc (void *where,
                                 size_t olen, size_t len,
                                 const char *what);
extern char *scm_must_strdup (const char *str);
extern char *scm_must_strndup (const char *str, size_t n);
extern void scm_done_malloc (long size);
extern void scm_done_free (long size);
extern void scm_must_free (void *obj);
# 70 "../libguile/_scm.h" 2
# 1 "../libguile/gsubr.h" 1
# 64 "../libguile/gsubr.h"
extern SCM scm_f_gsubr_apply;

extern SCM scm_c_make_gsubr (const char *name,
                              int req, int opt, int rst, SCM (*fcn) ());
extern SCM scm_c_make_gsubr_with_generic (const char *name,
                                           int req, int opt, int rst,
                                           SCM (*fcn) (), SCM *gf);
extern SCM scm_c_define_gsubr (const char *name,
                                int req, int opt, int rst, SCM (*fcn) ());
extern SCM scm_c_define_gsubr_with_generic (const char *name,
                                             int req, int opt, int rst,
                                             SCM (*fcn) (), SCM *gf);

extern SCM scm_gsubr_apply (SCM args);
extern void scm_init_gsubr (void);
# 71 "../libguile/_scm.h" 2
# 1 "../libguile/procs.h" 1
# 57 "../libguile/procs.h"
typedef struct
{
  SCM handle;
  SCM name;
  SCM *generic;


  SCM properties;
} scm_t_subr_entry;
# 157 "../libguile/procs.h"
extern scm_t_subr_entry *scm_subr_table;
extern long scm_subr_table_size;
extern long scm_subr_table_room;



extern void scm_mark_subr_table (void);
extern void scm_free_subr_entry (SCM subr);
extern SCM scm_c_make_subr (const char *name, long type, SCM (*fcn)());
extern SCM scm_c_make_subr_with_generic (const char *name, long type,
                                          SCM (*fcn)(), SCM *gf);
extern SCM scm_c_define_subr (const char *name, long type, SCM (*fcn)());
extern SCM scm_c_define_subr_with_generic (const char *name, long type,
                                            SCM (*fcn)(), SCM *gf);
extern SCM scm_makcclo (SCM proc, size_t len);
extern SCM scm_procedure_p (SCM obj);
extern SCM scm_closure_p (SCM obj);
extern SCM scm_thunk_p (SCM obj);
extern int scm_subr_p (SCM obj);
extern SCM scm_procedure_documentation (SCM proc);
extern SCM scm_procedure_with_setter_p (SCM obj);
extern SCM scm_make_procedure_with_setter (SCM procedure, SCM setter);
extern SCM scm_procedure (SCM proc);
extern SCM scm_setter (SCM proc);
extern void scm_init_subr_table (void);
extern void scm_init_procs (void);
# 72 "../libguile/_scm.h" 2
# 1 "../libguile/numbers.h" 1
# 115 "../libguile/numbers.h"
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/float.h" 1 3
# 116 "../libguile/numbers.h" 2
# 205 "../libguile/numbers.h"
typedef struct scm_t_double
{
  SCM type;
  SCM pad;
  double real;
} scm_t_double;

typedef struct scm_t_complex
{
  double real;
  double imag;
} scm_t_complex;



extern SCM scm_exact_p (SCM x);
extern SCM scm_odd_p (SCM n);
extern SCM scm_even_p (SCM n);
extern SCM scm_inf_p (SCM n);
extern SCM scm_nan_p (SCM n);
extern SCM scm_inf (void);
extern SCM scm_nan (void);
extern SCM scm_abs (SCM x);
extern SCM scm_quotient (SCM x, SCM y);
extern SCM scm_remainder (SCM x, SCM y);
extern SCM scm_modulo (SCM x, SCM y);
extern SCM scm_gcd (SCM x, SCM y);
extern SCM scm_lcm (SCM n1, SCM n2);
extern SCM scm_logand (SCM n1, SCM n2);
extern SCM scm_logior (SCM n1, SCM n2);
extern SCM scm_logxor (SCM n1, SCM n2);
extern SCM scm_logtest (SCM n1, SCM n2);
extern SCM scm_logbit_p (SCM n1, SCM n2);
extern SCM scm_lognot (SCM n);
extern SCM scm_integer_expt (SCM z1, SCM z2);
extern SCM scm_ash (SCM n, SCM cnt);
extern SCM scm_bit_extract (SCM n, SCM start, SCM end);
extern SCM scm_logcount (SCM n);
extern SCM scm_integer_length (SCM n);
extern SCM scm_i_mkbig (size_t nlen, int sign);
extern SCM scm_i_big2inum (SCM b, size_t l);
extern SCM scm_i_adjbig (SCM b, size_t nlen);
extern SCM scm_i_normbig (SCM b);
extern SCM scm_i_copybig (SCM b, int sign);
extern SCM scm_i_short2big (short n);
extern SCM scm_i_ushort2big (unsigned short n);
extern SCM scm_i_int2big (int n);
extern SCM scm_i_uint2big (unsigned int n);
extern SCM scm_i_long2big (long n);
extern SCM scm_i_ulong2big (unsigned long n);
extern SCM scm_i_size2big (size_t n);
extern SCM scm_i_ptrdiff2big (ptrdiff_t n);


extern SCM scm_i_long_long2big (long long n);
extern SCM scm_i_ulong_long2big (unsigned long long n);


extern int scm_bigcomp (SCM x, SCM y);
extern long scm_pseudolong (long x);
extern void scm_longdigs (long x, unsigned short digs[]);
extern SCM scm_addbig (unsigned short *x, size_t nx, int xsgn, SCM bigy, int sgny);
extern SCM scm_mulbig (unsigned short *x, size_t nx, unsigned short *y, size_t ny, int sgn);
extern unsigned int scm_divbigdig (unsigned short *ds, size_t h, unsigned short div);
extern size_t scm_iint2str (long num, int rad, char *p);
extern SCM scm_number_to_string (SCM x, SCM radix);
extern int scm_print_real (SCM sexp, SCM port, scm_print_state *pstate);
extern int scm_print_complex (SCM sexp, SCM port, scm_print_state *pstate);
extern int scm_bigprint (SCM exp, SCM port, scm_print_state *pstate);
extern SCM scm_i_mem2number (const char *mem, size_t len, unsigned int radix);
extern SCM scm_string_to_number (SCM str, SCM radix);
extern SCM scm_make_real (double x);
extern SCM scm_make_complex (double x, double y);
extern SCM scm_bigequal (SCM x, SCM y);
extern SCM scm_real_equalp (SCM x, SCM y);
extern SCM scm_complex_equalp (SCM x, SCM y);
extern SCM scm_number_p (SCM x);
extern SCM scm_real_p (SCM x);
extern SCM scm_integer_p (SCM x);
extern SCM scm_inexact_p (SCM x);
extern SCM scm_num_eq_p (SCM x, SCM y);
extern SCM scm_less_p (SCM x, SCM y);
extern SCM scm_gr_p (SCM x, SCM y);
extern SCM scm_leq_p (SCM x, SCM y);
extern SCM scm_geq_p (SCM x, SCM y);
extern SCM scm_zero_p (SCM z);
extern SCM scm_positive_p (SCM x);
extern SCM scm_negative_p (SCM x);
extern SCM scm_max (SCM x, SCM y);
extern SCM scm_min (SCM x, SCM y);
extern SCM scm_sum (SCM x, SCM y);
extern SCM scm_difference (SCM x, SCM y);
extern SCM scm_product (SCM x, SCM y);
extern double scm_num2dbl (SCM a, const char * why);
extern SCM scm_divide (SCM x, SCM y);
extern double scm_asinh (double x);
extern double scm_acosh (double x);
extern double scm_atanh (double x);
extern double scm_truncate (double x);
extern double scm_round (double x);
extern SCM scm_sys_expt (SCM z1, SCM z2);
extern SCM scm_sys_atan2 (SCM z1, SCM z2);
extern SCM scm_make_rectangular (SCM z1, SCM z2);
extern SCM scm_make_polar (SCM z1, SCM z2);
extern SCM scm_real_part (SCM z);
extern SCM scm_imag_part (SCM z);
extern SCM scm_magnitude (SCM z);
extern SCM scm_angle (SCM z);
extern SCM scm_exact_to_inexact (SCM z);
extern SCM scm_inexact_to_exact (SCM z);
extern SCM scm_trunc (SCM x);
extern SCM scm_i_dbl2big (double d);
extern double scm_i_big2dbl (SCM b);

extern SCM scm_short2num (short n);
extern SCM scm_ushort2num (unsigned short n);
extern SCM scm_int2num (int n);
extern SCM scm_uint2num (unsigned int n);
extern SCM scm_long2num (long n);
extern SCM scm_ulong2num (unsigned long n);
extern SCM scm_size2num (size_t n);
extern SCM scm_ptrdiff2num (ptrdiff_t n);
extern short scm_num2short (SCM num, unsigned long int pos,
                             const char *s_caller);
extern unsigned short scm_num2ushort (SCM num, unsigned long int pos,
                                       const char *s_caller);
extern int scm_num2int (SCM num, unsigned long int pos,
                         const char *s_caller);
extern unsigned int scm_num2uint (SCM num, unsigned long int pos,
                                   const char *s_caller);
extern long scm_num2long (SCM num, unsigned long int pos,
                           const char *s_caller);
extern unsigned long scm_num2ulong (SCM num, unsigned long int pos,
                                     const char *s_caller);
extern ptrdiff_t scm_num2ptrdiff (SCM num, unsigned long int pos,
                                   const char *s_caller);
extern size_t scm_num2size (SCM num, unsigned long int pos,
                             const char *s_caller);

extern SCM scm_long_long2num (long long sl);
extern SCM scm_ulong_long2num (unsigned long long sl);
extern long long scm_num2long_long (SCM num, unsigned long int pos,
                                     const char *s_caller);
extern unsigned long long scm_num2ulong_long (SCM num, unsigned long int pos,
                                               const char *s_caller);


extern SCM scm_float2num (float n);
extern SCM scm_double2num (double n);
extern float scm_num2float (SCM num, unsigned long int pos,
                             const char *s_caller);
extern double scm_num2double (SCM num, unsigned long int pos,
                               const char *s_caller);





extern void scm_init_numbers (void);
# 73 "../libguile/_scm.h" 2
# 1 "../libguile/symbols.h" 1
# 81 "../libguile/symbols.h"
extern SCM scm_mem2symbol (const char*, size_t);
extern SCM scm_mem2uninterned_symbol (const char *name, size_t len);
extern SCM scm_str2symbol (const char*);

extern SCM scm_symbol_p (SCM x);
extern SCM scm_symbol_interned_p (SCM sym);
extern SCM scm_make_symbol (SCM name);
extern SCM scm_symbol_to_string (SCM s);
extern SCM scm_string_to_symbol (SCM s);

extern SCM scm_symbol_fref (SCM s);
extern SCM scm_symbol_pref (SCM s);
extern SCM scm_symbol_fset_x (SCM s, SCM val);
extern SCM scm_symbol_pset_x (SCM s, SCM val);

extern SCM scm_symbol_hash (SCM s);
extern SCM scm_gensym (SCM prefix);

extern char *scm_c_symbol2str (SCM obj, char *str, size_t *lenp);
extern void scm_symbols_prehistory (void);
extern void scm_init_symbols (void);
# 74 "../libguile/_scm.h" 2
# 1 "../libguile/boolean.h" 1
# 76 "../libguile/boolean.h"
extern SCM scm_not (SCM x);
extern SCM scm_boolean_p (SCM obj);
extern void scm_init_boolean (void);
# 75 "../libguile/_scm.h" 2




# 1 "../libguile/snarf.h" 1
# 80 "../libguile/_scm.h" 2
# 1 "../libguile/variable.h" 1
# 50 "../libguile/variable.h"
# 1 "../libguile/smob.h" 1
# 55 "../libguile/smob.h"
typedef struct scm_smob_descriptor
{
  char *name;
  size_t size;
  SCM (*mark) (SCM);
  size_t (*free) (SCM);
  int (*print) (SCM exp, SCM port, scm_print_state *pstate);
  SCM (*equalp) (SCM, SCM);
  SCM (*apply) ();
  SCM (*apply_0) (SCM);
  SCM (*apply_1) (SCM, SCM);
  SCM (*apply_2) (SCM, SCM, SCM);
  SCM (*apply_3) (SCM, SCM, SCM, SCM);
  int gsubr_type;
} scm_smob_descriptor;
# 122 "../libguile/smob.h"
extern long scm_numsmob;
extern scm_smob_descriptor scm_smobs[];



extern SCM scm_mark0 (SCM ptr);
extern SCM scm_markcdr (SCM ptr);
extern size_t scm_free0 (SCM ptr);
extern size_t scm_smob_free (SCM obj);
extern int scm_smob_print (SCM exp, SCM port, scm_print_state *pstate);
# 141 "../libguile/smob.h"
extern scm_t_bits scm_make_smob_type (char *name, size_t size);

extern void scm_set_smob_mark (scm_t_bits tc, SCM (*mark) (SCM));
extern void scm_set_smob_free (scm_t_bits tc, size_t (*free) (SCM));
extern void scm_set_smob_print (scm_t_bits tc,
                                 int (*print) (SCM, SCM, scm_print_state*));
extern void scm_set_smob_equalp (scm_t_bits tc, SCM (*equalp) (SCM, SCM));
extern void scm_set_smob_apply (scm_t_bits tc,
                                 SCM (*apply) (),
                                 unsigned int req,
                                 unsigned int opt,
                                 unsigned int rst);



extern SCM scm_make_smob (scm_t_bits tc);
extern void scm_smob_prehistory (void);
# 51 "../libguile/variable.h" 2
# 63 "../libguile/variable.h"
extern SCM scm_make_variable (SCM init);
extern SCM scm_make_undefined_variable (void);
extern SCM scm_variable_p (SCM obj);
extern SCM scm_variable_ref (SCM var);
extern SCM scm_variable_set_x (SCM var, SCM val);
extern SCM scm_variable_bound_p (SCM var);

extern void scm_i_variable_print (SCM var, SCM port, scm_print_state *pstate);

extern void scm_init_variable (void);
# 81 "../libguile/_scm.h" 2
# 1 "../libguile/modules.h" 1
# 51 "../libguile/modules.h"
# 1 "../libguile/validate.h" 1
# 52 "../libguile/modules.h" 2



extern int scm_module_system_booted_p;
extern scm_t_bits scm_module_tag;
# 84 "../libguile/modules.h"
extern scm_t_bits scm_tc16_eval_closure;





extern SCM scm_current_module (void);
extern SCM scm_interaction_environment (void);
extern SCM scm_set_current_module (SCM module);

extern SCM scm_c_call_with_current_module (SCM module,
                                            SCM (*func)(void *), void *data);

extern SCM scm_c_lookup (const char *name);
extern SCM scm_c_define (const char *name, SCM val);
extern SCM scm_lookup (SCM symbol);
extern SCM scm_define (SCM symbol, SCM val);

extern SCM scm_c_module_lookup (SCM module, const char *name);
extern SCM scm_c_module_define (SCM module, const char *name, SCM val);
extern SCM scm_module_lookup (SCM module, SCM symbol);
extern SCM scm_module_define (SCM module, SCM symbol, SCM val);
extern SCM scm_module_reverse_lookup (SCM module, SCM variable);

extern SCM scm_c_resolve_module (const char *name);
extern SCM scm_resolve_module (SCM name);
extern SCM scm_c_define_module (const char *name,
                                 void (*init)(void *), void *data);
extern void scm_c_use_module (const char *name);
extern void scm_c_export (const char *name, ...);

extern SCM scm_sym2var (SCM sym, SCM thunk, SCM definep);

extern SCM scm_module_lookup_closure (SCM module);
extern SCM scm_module_transformer (SCM module);
extern SCM scm_current_module_lookup_closure (void);
extern SCM scm_current_module_transformer (void);
extern SCM scm_eval_closure_lookup (SCM eclo, SCM sym, SCM definep);
extern SCM scm_standard_eval_closure (SCM module);
extern SCM scm_standard_interface_eval_closure (SCM module);
extern SCM scm_get_pre_modules_obarray (void);
extern SCM scm_lookup_closure_module (SCM proc);

extern SCM scm_env_top_level (SCM env);
extern SCM scm_env_module (SCM env);
extern SCM scm_top_level_env (SCM thunk);
extern SCM scm_system_module_env_p (SCM env);

extern void scm_modules_prehistory (void);
extern void scm_init_modules (void);
# 82 "../libguile/_scm.h" 2
# 1 "../libguile/inline.h" 1
# 57 "../libguile/inline.h"
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 1 3
# 39 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3




# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 44 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 2 3
# 54 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
typedef struct _IO_FILE FILE;
# 64 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
typedef struct _IO_FILE __FILE;
# 74 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 32 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 14 "/usr/include/_G_config.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 321 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 24 "/usr/include/_G_config.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3
# 67 "/usr/include/wchar.h" 3
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3
# 1 "/usr/include/gconv.h" 1 3
# 28 "/usr/include/gconv.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 48 "/usr/include/wchar.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 49 "/usr/include/wchar.h" 2 3
# 29 "/usr/include/gconv.h" 2 3


# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stddef.h" 1 3
# 32 "/usr/include/gconv.h" 2 3





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
                            __const unsigned char **, __const unsigned char *,
                            unsigned char **, size_t *, int, int);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
                                  struct __gconv_step_data *, void *,
                                  __const unsigned char *,
                                  __const unsigned char **,
                                  __const unsigned char *, unsigned char **,
                                  size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
                                          __const unsigned char *,
                                          unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
                                        size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  char *__from_name;
  char *__to_name;

  __gconv_fct __fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3
# 53 "/usr/include/libio.h" 3
# 1 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdarg.h" 1 3
# 43 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3
# 160 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 170 "/usr/include/libio.h" 3
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 193 "/usr/include/libio.h" 3
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 261 "/usr/include/libio.h" 3
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 305 "/usr/include/libio.h" 3
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 344 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
                                 size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 396 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 426 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 456 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
                        __gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
                         __gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 75 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 2 3
# 89 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
typedef _G_fpos_t fpos_t;
# 138 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 139 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
# 153 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;




extern FILE *tmpfile (void) ;
# 172 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern char *tmpnam (char *__s) ;




extern char *tmpnam_r (char *__s) ;
# 189 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx)
     __attribute__ ((__malloc__));




extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;



extern int fflush_unlocked (FILE *__stream) ;
# 212 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename,
                    __const char *__restrict __modes) ;

extern FILE *freopen (__const char *__restrict __filename,
                      __const char *__restrict __modes,
                      FILE *__restrict __stream) ;
# 242 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 265 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
                    int __modes, size_t __n) ;




extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
                       size_t __size) ;


extern void setlinebuf (FILE *__stream) ;




extern int fprintf (FILE *__restrict __stream,
                    __const char *__restrict __format, ...) ;

extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s,
                    __const char *__restrict __format, ...) ;


extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;

extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
     ;

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
                     __gnuc_va_list __arg) ;



extern int snprintf (char *__restrict __s, size_t __maxlen,
                     __const char *__restrict __format, ...)
     __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
                      __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 3, 0)));
# 336 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream,
                   __const char *__restrict __format, ...) ;

extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
                   __const char *__restrict __format, ...) ;
# 362 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;







extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;




extern int fgetc_unlocked (FILE *__stream) ;




extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;







extern int fputc_unlocked (int __c, FILE *__stream) ;




extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;





extern int getw (FILE *__stream) ;


extern int putw (int __w, FILE *__stream) ;




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
# 428 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern char *gets (char *__s) ;
# 452 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
     ;
# 462 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size,
                     size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
                      size_t __n, FILE *__restrict __s) ;



extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
                              size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
                               size_t __n, FILE *__restrict __stream) ;




extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;
# 506 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
     ;

extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 542 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;



extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;




extern void perror (__const char *__s) ;




extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 573 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern int fileno (FILE *__stream) ;




extern int fileno_unlocked (FILE *__stream) ;






extern FILE *popen (__const char *__command, __const char *__modes) ;


extern int pclose (FILE *__stream) ;





extern char *ctermid (char *__s) ;
# 620 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;



extern int ftrylockfile (FILE *__stream) ;


extern void funlockfile (FILE *__stream) ;
# 641 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 33 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}


extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
getc_unlocked (FILE *__fp)
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 111 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 642 "/users/hanwen/usr/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include/stdio.h" 2 3



# 58 "../libguile/inline.h" 2
extern void scm_i_expensive_validation_check (SCM);


extern SCM scm_cell (scm_t_bits car, scm_t_bits cdr);
extern SCM scm_double_cell (scm_t_bits car, scm_t_bits cbr,
                             scm_t_bits ccr, scm_t_bits cdr);







extern unsigned scm_newcell2_count;
extern unsigned scm_newcell_count;




extern inline
SCM
scm_cell (scm_t_bits car, scm_t_bits cdr)
{
  SCM z;

  if (((((scm_t_bits) ((scm_i_freelist))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      z = scm_gc_for_newcell (&scm_i_master_freelist, &scm_i_freelist);
    }
  else
    {
      z = scm_i_freelist;
      scm_i_freelist = ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((scm_i_freelist)))))) [1]))));
    }






  scm_cells_allocated += 1;


    if (scm_debug_cell_accesses_p)
    {
      if ((((scm_t_c_bvec_long *) ((((scm_t_cell *) ((long) (z) & (~(256 * sizeof (scm_t_cell) - 1)))))->word_0))[((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) >> 5)] & (1L << ((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) & 31))))
        {
          fprintf(stderr, "scm_cell tried to allocate a marked cell.\n");
          abort();
        }
      else if ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [0]) != (127 + 0 * 256L))
        {
          fprintf(stderr, "cell from freelist is not a free cell.\n");
          abort();
        }

      (((scm_t_c_bvec_long *) ((((scm_t_cell *) ((long) (z) & (~(256 * sizeof (scm_t_cell) - 1)))))->word_0))[((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) >> 5)] |= (1L << ((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) & 31)));
    }
# 125 "../libguile/inline.h"
  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [1] = (scm_t_bits) (cdr));
  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [0] = (scm_t_bits) (car));
# 141 "../libguile/inline.h"
  if (scm_expensive_debug_cell_accesses_p )
    scm_i_expensive_validation_check (z);


  return z;
}

extern inline
SCM
scm_double_cell (scm_t_bits car, scm_t_bits cbr,
                 scm_t_bits ccr, scm_t_bits cdr)
{
  SCM z;


  if (((((scm_t_bits) ((scm_i_freelist2))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      z = scm_gc_for_newcell (&scm_i_master_freelist2, &scm_i_freelist2);
    }
  else
    {
      z = scm_i_freelist2;
      scm_i_freelist2 = ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((scm_i_freelist2)))))) [1]))));
    }

  scm_cells_allocated += 2;







  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [1] = (scm_t_bits) (cbr));
  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [2] = (scm_t_bits) (ccr));
  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [3] = (scm_t_bits) (cdr));
  (((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (z))))) [0] = (scm_t_bits) (car));
# 192 "../libguile/inline.h"
  if (scm_debug_cell_accesses_p)
    {
      if ((((scm_t_c_bvec_long *) ((((scm_t_cell *) ((long) (z) & (~(256 * sizeof (scm_t_cell) - 1)))))->word_0))[((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) >> 5)] & (1L << ((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) & 31))))
        {
          fprintf(stderr,
                  "scm_double_cell tried to allocate a marked cell.\n");
          abort();
        }

      (((scm_t_c_bvec_long *) ((((scm_t_cell *) ((long) (z) & (~(256 * sizeof (scm_t_cell) - 1)))))->word_0))[((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) >> 5)] |= (1L << ((((long) (z) & (256 * sizeof (scm_t_cell) - 1)) >> 3) & 31)));
    }


  return z;
}



extern int scm_i_cell_validation_already_running ;

extern inline
void
scm_assert_cell_valid (SCM cell)
{
  if (!scm_i_cell_validation_already_running && scm_debug_cell_accesses_p)
    {
      scm_i_cell_validation_already_running = 1;





      if (scm_gc_running_p)
        return;





      if (scm_expensive_debug_cell_accesses_p)
        scm_i_expensive_validation_check (cell);

      if (!(((scm_t_c_bvec_long *) ((((scm_t_cell *) ((long) (cell) & (~(256 * sizeof (scm_t_cell) - 1)))))->word_0))[((((long) (cell) & (256 * sizeof (scm_t_cell) - 1)) >> 3) >> 5)] & (1L << ((((long) (cell) & (256 * sizeof (scm_t_cell) - 1)) >> 3) & 31))))
        {
          fprintf (stderr,
                   "scm_assert_cell_valid: this object is unmarked. \n"
                   "It has been garbage-collected in the last GC run: "
                   "%lux\n",
                   (unsigned long) ((scm_t_bits) (cell)));
          abort ();
        }

      scm_i_cell_validation_already_running = 0;
    }
}
# 83 "../libguile/_scm.h" 2
# 121 "../libguile/_scm.h"
    extern int errno;
# 78 "eval.c" 2
# 1 "../libguile/debug.h" 1
# 71 "../libguile/debug.h"
extern scm_t_option scm_debug_opts[];
# 89 "../libguile/debug.h"
extern SCM (*scm_ceval_ptr) (SCM exp, SCM env);

extern int scm_debug_mode;
extern int scm_check_entry_p;
extern int scm_check_apply_p;
extern int scm_check_exit_p;
# 112 "../libguile/debug.h"
typedef union scm_t_debug_info
{
  struct { SCM exp, env; } e;
  struct { SCM proc, args; } a;
  SCM id;
} scm_t_debug_info;

extern long scm_debug_eframe_size;

typedef struct scm_t_debug_frame
{
  struct scm_t_debug_frame *prev;
  long status;
  scm_t_debug_info *vect;
  scm_t_debug_info *info;
} scm_t_debug_frame;


extern scm_t_debug_frame *scm_last_debug_frame;
# 167 "../libguile/debug.h"
extern scm_t_bits scm_tc16_debugobj;
# 178 "../libguile/debug.h"
extern scm_t_bits scm_tc16_memoized;







extern SCM scm_debug_object_p (SCM obj);
extern SCM scm_local_eval (SCM exp, SCM env);
extern SCM scm_reverse_lookup (SCM env, SCM data);
extern SCM scm_start_stack (SCM id, SCM exp, SCM env);
extern SCM scm_procedure_environment (SCM proc);
extern SCM scm_procedure_source (SCM proc);
extern SCM scm_procedure_name (SCM proc);
extern SCM scm_memoized_environment (SCM m);
extern SCM scm_make_memoized (SCM exp, SCM env);
extern SCM scm_memoized_p (SCM obj);
extern SCM scm_with_traps (SCM thunk);
extern SCM scm_evaluator_traps (SCM setting);
extern SCM scm_debug_options (SCM setting);
extern SCM scm_unmemoize (SCM memoized);
extern SCM scm_make_debugobj (scm_t_debug_frame *debug);
extern void scm_init_debug (void);
# 79 "eval.c" 2
# 1 "../libguile/dynwind.h" 1
# 53 "../libguile/dynwind.h"
typedef void (*scm_t_guard) (void *);
typedef SCM (*scm_t_inner) (void *);

extern SCM scm_dynamic_wind (SCM thunk1, SCM thunk2, SCM thunk3);
extern SCM scm_internal_dynamic_wind (scm_t_guard before,
                                       scm_t_inner inner,
                                       scm_t_guard after,
                                       void *inner_data,
                                       void *guard_data);
extern void scm_dowinds (SCM to, long delta);
extern void scm_init_dynwind (void);

extern void scm_swap_bindings (SCM vars, SCM vals);
# 80 "eval.c" 2
# 1 "../libguile/alist.h" 1
# 53 "../libguile/alist.h"
extern SCM scm_acons (SCM w, SCM x, SCM y);
extern SCM scm_sloppy_assq (SCM x, SCM alist);
extern SCM scm_sloppy_assv (SCM x, SCM alist);
extern SCM scm_sloppy_assoc (SCM x, SCM alist);
extern SCM scm_assq (SCM x, SCM alist);
extern SCM scm_assv (SCM x, SCM alist);
extern SCM scm_assoc (SCM x, SCM alist);
extern SCM scm_assq_ref (SCM alist, SCM key);
extern SCM scm_assv_ref (SCM alist, SCM key);
extern SCM scm_assoc_ref (SCM alist, SCM key);
extern SCM scm_assq_set_x (SCM alist, SCM key, SCM val);
extern SCM scm_assv_set_x (SCM alist, SCM key, SCM val);
extern SCM scm_assoc_set_x (SCM alist, SCM key, SCM val);
extern SCM scm_assq_remove_x (SCM alist, SCM key);
extern SCM scm_assv_remove_x (SCM alist, SCM key);
extern SCM scm_assoc_remove_x (SCM alist, SCM key);
extern void scm_init_alist (void);
# 81 "eval.c" 2
# 1 "../libguile/eq.h" 1
# 53 "../libguile/eq.h"
extern SCM scm_eq_p (SCM x, SCM y);
extern SCM scm_eqv_p (SCM x, SCM y);
extern SCM scm_equal_p (SCM x, SCM y);
extern void scm_init_eq (void);
# 82 "eval.c" 2
# 1 "../libguile/continuations.h" 1
# 66 "../libguile/continuations.h"
extern scm_t_bits scm_tc16_continuation;

typedef struct
{
  SCM throw_value;
  jmp_buf jmpbuf;
  SCM dynenv;





  SCM_STACKITEM *base;
  size_t num_stack_items;
  unsigned long seq;




  struct scm_t_debug_frame *dframe;

  SCM_STACKITEM stack[1];
} scm_t_contregs;
# 106 "../libguile/continuations.h"
extern SCM scm_make_continuation (int *first);
extern void scm_init_continuations (void);
# 83 "eval.c" 2
# 1 "../libguile/throw.h" 1
# 53 "../libguile/throw.h"
typedef SCM (*scm_t_catch_body) (void *data);
typedef SCM (*scm_t_catch_handler) (void *data,
                                    SCM tag, SCM throw_args);

extern SCM scm_internal_catch (SCM tag,
                                scm_t_catch_body body,
                                void *body_data,
                                scm_t_catch_handler handler,
                                void *handler_data);

extern SCM scm_internal_lazy_catch (SCM tag,
                                     scm_t_catch_body body,
                                     void *body_data,
                                     scm_t_catch_handler handler,
                                     void *handler_data);

extern SCM scm_internal_stack_catch (SCM tag,
                                      scm_t_catch_body body,
                                      void *body_data,
                                      scm_t_catch_handler handler,
                                      void *handler_data);



struct scm_body_thunk_data
{



  SCM tag;



  SCM body_proc;
};

extern SCM scm_body_thunk (void *);


extern SCM scm_handle_by_proc (void *, SCM, SCM);
extern SCM scm_handle_by_proc_catching_all (void *, SCM, SCM);
extern SCM scm_handle_by_message (void *, SCM, SCM);
extern SCM scm_handle_by_message_noexit (void *, SCM, SCM);
extern SCM scm_handle_by_throw (void *, SCM, SCM);
extern int scm_exit_status (SCM args);

extern SCM scm_catch (SCM tag, SCM thunk, SCM handler);
extern SCM scm_lazy_catch (SCM tag, SCM thunk, SCM handler);
extern SCM scm_ithrow (SCM key, SCM args, int noreturn);

extern SCM scm_throw (SCM key, SCM args);
extern void scm_init_throw (void);
# 84 "eval.c" 2

# 1 "../libguile/macros.h" 1
# 60 "../libguile/macros.h"
extern scm_t_bits scm_tc16_macro;

extern SCM scm_makacro (SCM code);
extern SCM scm_makmmacro (SCM code);
extern SCM scm_macro_p (SCM obj);
extern SCM scm_macro_type (SCM m);
extern SCM scm_macro_name (SCM m);
extern SCM scm_macro_transformer (SCM m);
extern SCM scm_make_synt (const char *name,
                           SCM (*macroizer) (SCM),
                           SCM (*fcn) ());
extern void scm_init_macros (void);


extern SCM scm_makmacro (SCM code);
# 86 "eval.c" 2
# 1 "../libguile/procprop.h" 1
# 53 "../libguile/procprop.h"
extern SCM scm_sym_name;
extern SCM scm_sym_arity;
extern SCM scm_sym_system_procedure;



extern SCM scm_i_procedure_arity (SCM proc);
extern SCM scm_procedure_properties (SCM proc);
extern SCM scm_set_procedure_properties_x (SCM proc, SCM new_val);
extern SCM scm_procedure_property (SCM p, SCM k);
extern SCM scm_set_procedure_property_x (SCM p, SCM k, SCM v);
extern void scm_init_procprop (void);
# 87 "eval.c" 2
# 1 "../libguile/hashtab.h" 1
# 59 "../libguile/hashtab.h"
extern SCM scm_c_make_hash_table (unsigned long k);

extern SCM scm_hash_fn_get_handle (SCM table, SCM obj, unsigned long (*hash_fn) (), SCM (*assoc_fn) (), void * closure);
extern SCM scm_hash_fn_create_handle_x (SCM table, SCM obj, SCM init, unsigned long (*hash_fn) (), SCM (*assoc_fn) (), void * closure);
extern SCM scm_hash_fn_ref (SCM table, SCM obj, SCM dflt, unsigned long (*hash_fn) (), SCM (*assoc_fn) (), void * closure);
extern SCM scm_hash_fn_set_x (SCM table, SCM obj, SCM val, unsigned long (*hash_fn) (), SCM (*assoc_fn) (), void * closure);
extern SCM scm_hash_fn_remove_x (SCM table, SCM obj, unsigned long (*hash_fn) (), SCM (*assoc_fn) (), SCM (*delete_fn) (), void * closure);
extern SCM scm_internal_hash_fold (SCM (*fn) (), void *closure, SCM init, SCM table);

extern SCM scm_hashq_get_handle (SCM table, SCM obj);
extern SCM scm_hashq_create_handle_x (SCM table, SCM obj, SCM init);
extern SCM scm_hashq_ref (SCM table, SCM obj, SCM dflt);
extern SCM scm_hashq_set_x (SCM table, SCM obj, SCM val);
extern SCM scm_hashq_remove_x (SCM table, SCM obj);
extern SCM scm_hashv_get_handle (SCM table, SCM obj);
extern SCM scm_hashv_create_handle_x (SCM table, SCM obj, SCM init);
extern SCM scm_hashv_ref (SCM table, SCM obj, SCM dflt);
extern SCM scm_hashv_set_x (SCM table, SCM obj, SCM val);
extern SCM scm_hashv_remove_x (SCM table, SCM obj);
extern SCM scm_hash_get_handle (SCM table, SCM obj);
extern SCM scm_hash_create_handle_x (SCM table, SCM obj, SCM init);
extern SCM scm_hash_ref (SCM table, SCM obj, SCM dflt);
extern SCM scm_hash_set_x (SCM table, SCM obj, SCM val);
extern SCM scm_hash_remove_x (SCM table, SCM obj);
extern SCM scm_hashx_get_handle (SCM hash, SCM assoc, SCM table, SCM obj);
extern SCM scm_hashx_create_handle_x (SCM hash, SCM assoc, SCM table, SCM obj, SCM init);
extern SCM scm_hashx_ref (SCM hash, SCM assoc, SCM table, SCM obj, SCM dflt);
extern SCM scm_hashx_set_x (SCM hash, SCM assoc, SCM table, SCM obj, SCM val);
extern SCM scm_hashx_remove_x (SCM hash, SCM assoc, SCM del, SCM table, SCM obj);
extern SCM scm_hash_fold (SCM proc, SCM init, SCM hash);
extern void scm_init_hashtab (void);
# 88 "eval.c" 2
# 1 "../libguile/hash.h" 1
# 53 "../libguile/hash.h"
extern unsigned long scm_string_hash (const unsigned char *str, size_t len);
extern unsigned long scm_hasher (SCM obj, unsigned long n, size_t d);
extern unsigned long scm_ihashq (SCM obj, unsigned long n);
extern SCM scm_hashq (SCM obj, SCM n);
extern unsigned long scm_ihashv (SCM obj, unsigned long n);
extern SCM scm_hashv (SCM obj, SCM n);
extern unsigned long scm_ihash (SCM obj, unsigned long n);
extern SCM scm_hash (SCM obj, SCM n);
extern void scm_init_hash (void);
# 89 "eval.c" 2
# 1 "../libguile/srcprop.h" 1
# 80 "../libguile/srcprop.h"
extern scm_t_bits scm_tc16_srcprops;

typedef struct scm_t_srcprops
{
  unsigned long pos;
  SCM fname;
  SCM copy;
  SCM plist;
} scm_t_srcprops;


typedef struct scm_t_srcprops_chunk
{
  struct scm_t_srcprops_chunk *next;
  scm_t_srcprops srcprops[1];
} scm_t_srcprops_chunk;
# 120 "../libguile/srcprop.h"
extern SCM scm_sym_filename;
extern SCM scm_sym_copy;
extern SCM scm_sym_line;
extern SCM scm_sym_column;
extern SCM scm_sym_breakpoint;



extern int scm_c_source_property_breakpoint_p (SCM form);
extern SCM scm_srcprops_to_plist (SCM obj);
extern SCM scm_make_srcprops (long line, int col, SCM fname, SCM copy, SCM plist);
extern SCM scm_source_property (SCM obj, SCM key);
extern SCM scm_set_source_property_x (SCM obj, SCM key, SCM datum);
extern SCM scm_source_properties (SCM obj);
extern SCM scm_set_source_properties_x (SCM obj, SCM props);
extern void scm_finish_srcprop (void);
extern void scm_init_srcprop (void);
# 90 "eval.c" 2
# 1 "../libguile/stackchk.h" 1
# 86 "../libguile/stackchk.h"
extern int scm_stack_checking_enabled_p;



extern void scm_report_stack_overflow (void);
extern long scm_stack_size (SCM_STACKITEM *start);
extern void scm_stack_report (void);
extern void scm_init_stackchk (void);
# 91 "eval.c" 2
# 1 "../libguile/objects.h" 1
# 61 "../libguile/objects.h"
# 1 "../libguile/struct.h" 1
# 74 "../libguile/struct.h"
typedef void (*scm_t_struct_free) (scm_t_bits * vtable, scm_t_bits * data);
# 102 "../libguile/struct.h"
extern SCM scm_struct_table;



extern SCM scm_structs_to_free;



extern scm_t_bits * scm_alloc_struct (int n_words, int n_extra,
                                       const char *what);
extern void scm_struct_free_0 (scm_t_bits * vtable, scm_t_bits * data);
extern void scm_struct_free_light (scm_t_bits * vtable, scm_t_bits * data);
extern void scm_struct_free_standard (scm_t_bits * vtable, scm_t_bits * data);
extern void scm_struct_free_entity (scm_t_bits * vtable, scm_t_bits * data);
extern SCM scm_make_struct_layout (SCM fields);
extern SCM scm_struct_p (SCM x);
extern SCM scm_struct_vtable_p (SCM x);
extern SCM scm_make_struct (SCM vtable, SCM tail_array_size, SCM init);
extern SCM scm_make_vtable_vtable (SCM extra_fields, SCM tail_array_size, SCM init);
extern SCM scm_struct_ref (SCM handle, SCM pos);
extern SCM scm_struct_set_x (SCM handle, SCM pos, SCM val);
extern SCM scm_struct_vtable (SCM handle);
extern SCM scm_struct_vtable_tag (SCM handle);
extern unsigned long scm_struct_ihashq (SCM obj, unsigned long n);
extern SCM scm_struct_create_handle (SCM obj);
extern SCM scm_struct_vtable_name (SCM vtable);
extern SCM scm_set_struct_vtable_name_x (SCM vtable, SCM name);
extern void scm_print_struct (SCM exp, SCM port, scm_print_state *);
extern void scm_struct_prehistory (void);
extern void scm_init_struct (void);
# 62 "../libguile/objects.h" 2
# 139 "../libguile/objects.h"
struct scm_metaclass_standard {
  SCM layout;
  SCM vcell;
  SCM vtable;
  SCM print;
};


struct scm_metaclass_operator {
  SCM layout;
  SCM vcell;
  SCM vtable;
  SCM print;
  SCM procedure;
  SCM setter;
};
# 182 "../libguile/objects.h"
typedef struct scm_effective_slot_definition {
  SCM name;
  long location;
  SCM init_value;
  SCM (*get) (SCM obj, SCM slotdef);
  SCM (*set) (SCM obj, SCM slotdef, SCM value);
} scm_effective_slot_definition;
# 203 "../libguile/objects.h"
extern SCM scm_metaclass_standard;
extern SCM scm_metaclass_operator;
extern SCM scm_class_boolean;
extern SCM scm_class_char;
extern SCM scm_class_pair;
extern SCM scm_class_procedure;
extern SCM scm_class_string;
extern SCM scm_class_symbol;
extern SCM scm_class_procedure_with_setter;
extern SCM scm_class_primitive_generic;
extern SCM scm_class_vector, scm_class_null;
extern SCM scm_class_real;
extern SCM scm_class_complex;
extern SCM scm_class_integer;
extern SCM scm_class_unknown;
extern SCM *scm_port_class;
extern SCM *scm_smob_class;

extern SCM scm_no_applicable_method;


extern SCM scm_make_extended_class (char *type_name);
extern void scm_make_port_classes (long ptobnum, char *type_name);
extern void scm_change_object_class (SCM, SCM, SCM);
extern SCM scm_memoize_method (SCM x, SCM args);

extern SCM scm_class_of (SCM obj);
extern SCM scm_mcache_lookup_cmethod (SCM cache, SCM args);
extern SCM scm_mcache_compute_cmethod (SCM cache, SCM args);






extern SCM scm_call_generic_3 (SCM gf, SCM a1, SCM a2, SCM a3);
extern SCM scm_entity_p (SCM obj);
extern SCM scm_operator_p (SCM obj);
extern SCM scm_valid_object_procedure_p (SCM proc);
extern SCM scm_set_object_procedure_x (SCM obj, SCM proc);



extern SCM scm_make_class_object (SCM metaclass, SCM layout);
extern SCM scm_make_subclass_object (SCM c, SCM layout);

extern SCM scm_i_make_class_object (SCM metaclass, SCM layout_string,
                                     unsigned long flags);
extern void scm_init_objects (void);
# 92 "eval.c" 2
# 1 "../libguile/async.h" 1
# 53 "../libguile/async.h"
extern unsigned int scm_mask_ints;



extern int scm_asyncs_pending (void);
extern void scm_async_click (void);
extern void scm_switch (void);
extern SCM scm_async (SCM thunk);
extern SCM scm_system_async (SCM thunk);
extern SCM scm_async_mark (SCM a);
extern SCM scm_system_async_mark (SCM a);
extern void scm_system_async_mark_from_signal_handler (SCM a);
extern SCM scm_run_asyncs (SCM list_of_a);
extern SCM scm_noop (SCM args);
extern SCM scm_set_tick_rate (SCM n);
extern SCM scm_set_switch_rate (SCM n);
extern SCM scm_unmask_signals (void);
extern SCM scm_mask_signals (void);
extern void scm_init_async (void);
# 93 "eval.c" 2
# 1 "../libguile/feature.h" 1
# 51 "../libguile/feature.h"
extern void scm_add_feature (const char* str);
extern SCM scm_program_arguments (void);
extern void scm_set_program_arguments (int argc, char **argv, char *first);
extern void scm_init_feature (void);
# 94 "eval.c" 2

# 1 "../libguile/ports.h" 1
# 62 "../libguile/ports.h"
typedef enum scm_t_port_rw_active {
  SCM_PORT_NEITHER = 0,
  SCM_PORT_READ = 1,
  SCM_PORT_WRITE = 2
} scm_t_port_rw_active;



typedef struct
{
  SCM port;
  long entry;
  int revealed;



  scm_t_bits stream;

  SCM file_name;
  long line_number;
  int column_number;
# 93 "../libguile/ports.h"
  unsigned char *read_buf;
  const unsigned char *read_pos;
  unsigned char *read_end;
  off_t read_buf_size;





  unsigned char *saved_read_buf;
  const unsigned char *saved_read_pos;
  unsigned char *saved_read_end;
  off_t saved_read_buf_size;





  unsigned char *write_buf;
  unsigned char *write_pos;
  unsigned char *write_end;
  off_t write_buf_size;

  unsigned char shortbuf;

  int rw_random;




  scm_t_port_rw_active rw_active;







  unsigned char *putback_buf;
  size_t putback_buf_size;
} scm_t_port;

extern scm_t_port **scm_port_table;
extern long scm_port_table_size;
# 188 "../libguile/ports.h"
typedef struct scm_t_ptob_descriptor
{
  char *name;
  SCM (*mark) (SCM);
  size_t (*free) (SCM);
  int (*print) (SCM exp, SCM port, scm_print_state *pstate);
  SCM (*equalp) (SCM, SCM);
  int (*close) (SCM port);

  void (*write) (SCM port, const void *data, size_t size);
  void (*flush) (SCM port);

  void (*end_input) (SCM port, int offset);
  int (*fill_input) (SCM port);
  int (*input_waiting) (SCM port);

  off_t (*seek) (SCM port, off_t OFFSET, int WHENCE);
  void (*truncate) (SCM port, off_t length);

} scm_t_ptob_descriptor;
# 216 "../libguile/ports.h"
extern scm_t_ptob_descriptor *scm_ptobs;
extern long scm_numptob;
extern long scm_port_table_room;



extern SCM scm_markstream (SCM ptr);
extern scm_t_bits scm_make_port_type (char *name,
                                       int (*fill_input) (SCM port),
                                       void (*write) (SCM port,
                                                      const void *data,
                                                      size_t size));
extern void scm_set_port_mark (long tc, SCM (*mark) (SCM));
extern void scm_set_port_free (long tc, size_t (*free) (SCM));
extern void scm_set_port_print (long tc,
                                 int (*print) (SCM exp,
                                               SCM port,
                                               scm_print_state *pstate));
extern void scm_set_port_equalp (long tc, SCM (*equalp) (SCM, SCM));
extern void scm_set_port_close (long tc, int (*close) (SCM));

extern void scm_set_port_flush (long tc,
                                 void (*flush) (SCM port));
extern void scm_set_port_end_input (long tc,
                                     void (*end_input) (SCM port,
                                                        int offset));
extern void scm_set_port_seek (long tc,
                                off_t (*seek) (SCM port,
                                               off_t OFFSET,
                                               int WHENCE));
extern void scm_set_port_truncate (long tc,
                                    void (*truncate) (SCM port,
                                                      off_t length));
extern void scm_set_port_input_waiting (long tc, int (*input_waiting) (SCM));
extern SCM scm_char_ready_p (SCM port);
size_t scm_take_from_input_buffers (SCM port, char *dest, size_t read_len);
extern SCM scm_drain_input (SCM port);
extern SCM scm_current_input_port (void);
extern SCM scm_current_output_port (void);
extern SCM scm_current_error_port (void);
extern SCM scm_current_load_port (void);
extern SCM scm_set_current_input_port (SCM port);
extern SCM scm_set_current_output_port (SCM port);
extern SCM scm_set_current_error_port (SCM port);
extern scm_t_port * scm_new_port_table_entry (void);
extern void scm_remove_from_port_table (SCM port);
extern void scm_grow_port_cbuf (SCM port, size_t requested);
extern SCM scm_pt_size (void);
extern SCM scm_pt_member (SCM member);
extern void scm_port_non_buffer (scm_t_port *pt);
extern int scm_revealed_count (SCM port);
extern SCM scm_port_revealed (SCM port);
extern SCM scm_set_port_revealed_x (SCM port, SCM rcount);
extern long scm_mode_bits (char *modes);
extern SCM scm_port_mode (SCM port);
extern SCM scm_close_input_port (SCM port);
extern SCM scm_close_output_port (SCM port);
extern SCM scm_close_port (SCM port);
extern SCM scm_port_for_each (SCM proc);
extern SCM scm_input_port_p (SCM x);
extern SCM scm_output_port_p (SCM x);
extern SCM scm_port_p (SCM x);
extern SCM scm_port_closed_p (SCM port);
extern SCM scm_eof_object_p (SCM x);
extern SCM scm_force_output (SCM port);
extern SCM scm_flush_all_ports (void);
extern SCM scm_read_char (SCM port);
extern void scm_putc (char c, SCM port);
extern void scm_puts (const char *str_data, SCM port);
extern size_t scm_c_read (SCM port, void *buffer, size_t size);
extern void scm_c_write (SCM port, const void *buffer, size_t size);
extern void scm_lfwrite (const char *ptr, size_t size, SCM port);
extern void scm_flush (SCM port);
extern void scm_end_input (SCM port);
extern int scm_fill_input (SCM port);
extern int scm_getc (SCM port);
extern void scm_ungetc (int c, SCM port);
extern void scm_ungets (const char *s, int n, SCM port);
extern SCM scm_peek_char (SCM port);
extern SCM scm_unread_char (SCM cobj, SCM port);
extern SCM scm_unread_string (SCM str, SCM port);
extern SCM scm_seek (SCM object, SCM offset, SCM whence);
extern SCM scm_truncate_file (SCM object, SCM length);
extern SCM scm_port_line (SCM port);
extern SCM scm_set_port_line_x (SCM port, SCM line);
extern SCM scm_port_column (SCM port);
extern SCM scm_set_port_column_x (SCM port, SCM line);
extern SCM scm_port_filename (SCM port);
extern SCM scm_set_port_filename_x (SCM port, SCM filename);
extern int scm_port_print (SCM exp, SCM port, scm_print_state *);
extern void scm_print_port_mode (SCM exp, SCM port);
extern void scm_ports_prehistory (void);
extern SCM scm_void_port (char * mode_str);
extern SCM scm_sys_make_void_port (SCM mode);
extern void scm_init_ports (void);
# 96 "eval.c" 2
# 1 "../libguile/root.h" 1
# 75 "../libguile/root.h"
extern SCM scm_sys_protects[];



extern scm_t_bits scm_tc16_root;




typedef struct scm_root_state
{
  SCM_STACKITEM * stack_base;
  jmp_buf save_regs_gc_mark;
  int errjmp_bad;

  SCM rootcont;
  SCM dynwinds;


  scm_t_debug_frame *last_debug_frame;


  SCM progargs;
  SCM exitval;

  SCM cur_inp;
  SCM cur_outp;
  SCM cur_errp;
  SCM cur_loadp;

  SCM fluids;

  SCM handle;
  SCM parent;
} scm_root_state;
# 131 "../libguile/root.h"
extern struct scm_root_state *scm_root;





extern SCM scm_make_root (SCM parent);
extern SCM scm_internal_cwdr (scm_t_catch_body body,
                               void *body_data,
                               scm_t_catch_handler handler,
                               void *handler_data,
                               SCM_STACKITEM *stack_start);
extern SCM scm_call_with_dynamic_root (SCM thunk, SCM handler);
extern SCM scm_dynamic_root (void);
extern SCM scm_apply_with_dynamic_root (SCM proc, SCM a1, SCM args, SCM handler);
extern void scm_init_root (void);
# 97 "eval.c" 2
# 1 "../libguile/vectors.h" 1
# 84 "../libguile/vectors.h"
extern SCM scm_c_make_vector (unsigned long int k, SCM fill);

extern SCM scm_vector_p (SCM x);
extern SCM scm_vector_length (SCM v);
extern SCM scm_vector (SCM l);
extern SCM scm_vector_ref (SCM v, SCM k);
extern SCM scm_vector_set_x (SCM v, SCM k, SCM obj);
extern SCM scm_make_vector (SCM k, SCM fill);
extern SCM scm_vector_to_list (SCM v);
extern SCM scm_vector_fill_x (SCM v, SCM fill_x);
extern SCM scm_vector_equal_p (SCM x, SCM y);
extern SCM scm_vector_move_left_x (SCM vec1, SCM start1, SCM end1,
                                    SCM vec2, SCM start2);
extern SCM scm_vector_move_right_x (SCM vec1, SCM start1, SCM end1,
                                     SCM vec2, SCM start2);
extern void scm_init_vectors (void);
# 98 "eval.c" 2
# 1 "../libguile/fluids.h" 1
# 75 "../libguile/fluids.h"
extern scm_t_bits scm_tc16_fluid;
# 92 "../libguile/fluids.h"
extern SCM scm_make_fluid (void);
extern SCM scm_fluid_p (SCM fl);
extern SCM scm_fluid_ref (SCM fluid);
extern SCM scm_fluid_set_x (SCM fluid, SCM value);

extern SCM scm_c_with_fluids (SCM fluids, SCM vals,
                               SCM (*cproc)(void *), void *cdata);
extern SCM scm_c_with_fluid (SCM fluid, SCM val,
                              SCM (*cproc)(void *), void *cdata);
extern SCM scm_with_fluids (SCM fluids, SCM vals, SCM thunk);

extern SCM scm_make_initial_fluids (void);
extern void scm_copy_fluids (scm_root_state *);
extern void scm_swap_fluids (SCM fluids, SCM vals);
extern void scm_swap_fluids_reverse (SCM fluids, SCM vals);

extern void scm_init_fluids (void);
# 99 "eval.c" 2
# 1 "../libguile/goops.h" 1
# 92 "../libguile/goops.h"
typedef struct scm_t_method {
  SCM generic_function;
  SCM specializers;
  SCM procedure;
} scm_t_method;
# 184 "../libguile/goops.h"
extern SCM scm_class_top;
extern SCM scm_class_object;
extern SCM scm_class_class;
extern SCM scm_class_entity;
extern SCM scm_class_entity_with_setter;
extern SCM scm_class_generic;
extern SCM scm_class_generic_with_setter;
extern SCM scm_class_method;
extern SCM scm_class_simple_method;
extern SCM scm_class_accessor;
extern SCM scm_class_procedure_class;
extern SCM scm_class_operator_class;
extern SCM scm_class_operator_with_setter_class;
extern SCM scm_class_entity_class;
extern SCM scm_class_number;
extern SCM scm_class_list;
extern SCM scm_class_keyword;
extern SCM scm_class_port;
extern SCM scm_class_input_output_port;
extern SCM scm_class_input_port;
extern SCM scm_class_output_port;
extern SCM scm_class_foreign_class;
extern SCM scm_class_foreign_object;
extern SCM scm_class_foreign_slot;
extern SCM scm_class_self;
extern SCM scm_class_protected;
extern SCM scm_class_opaque;
extern SCM scm_class_read_only;
extern SCM scm_class_protected_opaque;
extern SCM scm_class_protected_read_only;
extern SCM scm_class_scm;
extern SCM scm_class_int;
extern SCM scm_class_float;
extern SCM scm_class_double;
extern const char *scm_s_slot_set_x;

extern SCM scm_module_goops;

extern SCM scm_goops_version (void);
extern SCM scm_oldfmt (SCM);
extern char *scm_c_oldfmt0 (char *);
extern char *scm_c_oldfmt (char *, int n);
extern void scm_load_goops (void);
extern SCM scm_make_foreign_object (SCM cls, SCM initargs);
extern SCM scm_make_class (SCM meta, char *s_name, SCM supers, size_t size,
                            void * (*constructor) (SCM initargs),
                            size_t (*destructor) (void *));
extern void scm_add_slot (SCM c, char *slot, SCM slot_class,
                           SCM (*getter) (SCM obj),
                           SCM (*setter) (SCM obj, SCM x),
                           char *accessor_name);
extern SCM scm_wrap_object (SCM c, void *);
extern SCM scm_wrap_component (SCM c, SCM obj, void *);
extern SCM scm_ensure_accessor (SCM name);
extern void scm_add_method (SCM gf, SCM m);


extern SCM scm_make_next_method (SCM methods, SCM args, SCM gf);
extern SCM scm_basic_basic_make_class (SCM c, SCM name, SCM dsupers, SCM dslots);
extern SCM scm_basic_make_class (SCM c, SCM name, SCM dsupers, SCM dslots);


extern SCM scm_sys_allocate_instance (SCM c, SCM initargs);
extern SCM scm_sys_set_object_setter_x (SCM obj, SCM setter);
extern SCM scm_slot_ref (SCM obj, SCM slot_name);
extern SCM scm_slot_set_x (SCM obj, SCM slot_name, SCM value);

extern SCM scm_compute_applicable_methods (SCM gf, SCM args, long len, int scm_find_method);
extern SCM scm_sys_compute_applicable_methods (SCM gf, SCM args);
extern SCM scm_m_atslot_ref (SCM xorig, SCM env);
extern SCM scm_m_atslot_set_x (SCM xorig, SCM env);
extern SCM scm_m_atdispatch (SCM xorig, SCM env);




extern SCM scm_sys_compute_slots (SCM c);
extern SCM scm_i_get_keyword (SCM key, SCM l, long len, SCM default_value, const char *subr);
extern SCM scm_get_keyword (SCM key, SCM l, SCM default_value);
extern SCM scm_sys_initialize_object (SCM obj, SCM initargs);
extern SCM scm_sys_prep_layout_x (SCM c);
extern SCM scm_sys_inherit_magic_x (SCM c, SCM dsupers);
extern SCM scm_instance_p (SCM obj);
extern SCM scm_class_name (SCM obj);
extern SCM scm_class_direct_supers (SCM obj);
extern SCM scm_class_direct_slots (SCM obj);
extern SCM scm_class_direct_subclasses (SCM obj);
extern SCM scm_class_direct_methods (SCM obj);
extern SCM scm_class_precedence_list (SCM obj);
extern SCM scm_class_slots (SCM obj);
extern SCM scm_class_environment (SCM obj);
extern SCM scm_generic_function_name (SCM obj);
extern SCM scm_generic_function_methods (SCM obj);
extern SCM scm_method_generic_function (SCM obj);
extern SCM scm_method_specializers (SCM obj);
extern SCM scm_method_procedure (SCM obj);
extern SCM scm_accessor_method_slot_definition (SCM obj);
extern SCM scm_sys_tag_body (SCM body);
extern SCM scm_sys_fast_slot_ref (SCM obj, SCM index);
extern SCM scm_sys_fast_slot_set_x (SCM obj, SCM index, SCM value);
extern SCM scm_slot_ref_using_class (SCM cls, SCM obj, SCM slot_name);
extern SCM scm_slot_set_using_class_x (SCM cls, SCM obj, SCM slot_name, SCM value);
extern SCM scm_slot_bound_using_class_p (SCM cls, SCM obj, SCM slot_name);
extern SCM scm_slot_exists_using_class_p (SCM cls, SCM obj, SCM slot_name);
extern SCM scm_slot_bound_p (SCM obj, SCM slot_name);
extern SCM scm_slot_exists_p (SCM obj, SCM slot_name);
extern SCM scm_sys_modify_instance (SCM old, SCM newinst);
extern SCM scm_sys_modify_class (SCM old, SCM newcls);
extern SCM scm_sys_invalidate_class (SCM cls);
extern SCM scm_make_method_cache (SCM gf);
extern SCM scm_sys_invalidate_method_cache_x (SCM gf);
extern SCM scm_generic_capability_p (SCM proc);
extern SCM scm_enable_primitive_generic_x (SCM subrs);
extern SCM scm_primitive_generic_generic (SCM subr);
extern SCM stklos_version (void);
extern SCM scm_make (SCM args);
extern SCM scm_find_method (SCM args);
extern SCM scm_sys_method_more_specific_p (SCM m1, SCM m2, SCM targs);

extern SCM scm_init_goops_builtins (void);
extern void scm_init_goops (void);
# 100 "eval.c" 2
# 1 "../libguile/values.h" 1
# 51 "../libguile/values.h"
extern SCM scm_values_vtable;




extern SCM scm_values (SCM args);
extern void scm_init_values (void);
# 101 "eval.c" 2


# 1 "../libguile/eval.h" 1
# 58 "../libguile/eval.h"
extern scm_t_option scm_eval_opts[];




extern long scm_eval_stack;

extern scm_t_option scm_evaluator_trap_table[];

extern SCM scm_eval_options_interface (SCM setting);
# 136 "../libguile/eval.h"
extern const char scm_s_expression[];
extern const char scm_s_test[];
extern const char scm_s_body[];
extern const char scm_s_bindings[];
extern const char scm_s_variable[];
extern const char scm_s_clauses[];
extern const char scm_s_formals[];
extern const char scm_s_set_x[];

extern SCM scm_sym_and;
extern SCM scm_sym_begin;
extern SCM scm_sym_case;
extern SCM scm_sym_cond;
extern SCM scm_sym_define;
extern SCM scm_sym_do;
extern SCM scm_sym_if;
extern SCM scm_sym_lambda;
extern SCM scm_sym_let;
extern SCM scm_sym_letstar;
extern SCM scm_sym_letrec;
extern SCM scm_sym_quote;
extern SCM scm_sym_quasiquote;
extern SCM scm_sym_unquote;
extern SCM scm_sym_uq_splicing;

extern SCM scm_sym_dot;
extern SCM scm_sym_atapply;
extern SCM scm_sym_atcall_cc;
extern SCM scm_sym_at_call_with_values;
extern SCM scm_sym_delay;
extern SCM scm_sym_arrow;
extern SCM scm_sym_else;
extern SCM scm_sym_apply;
extern SCM scm_sym_set_x;
extern SCM scm_sym_args;

extern SCM scm_f_apply;



extern SCM * scm_ilookup (SCM iloc, SCM env);
extern SCM * scm_lookupcar (SCM vloc, SCM genv, int check);
extern SCM scm_unmemocar (SCM form, SCM env);
extern SCM scm_unmemocopy (SCM form, SCM env);
extern SCM scm_eval_car (SCM pair, SCM env);
extern SCM scm_eval_body (SCM code, SCM env);
extern SCM scm_eval_args (SCM i, SCM env, SCM proc);
extern SCM scm_m_quote (SCM xorig, SCM env);
extern SCM scm_m_begin (SCM xorig, SCM env);
extern SCM scm_m_if (SCM xorig, SCM env);
extern SCM scm_m_set_x (SCM xorig, SCM env);
extern SCM scm_m_vref (SCM xorig, SCM env);
extern SCM scm_m_vset (SCM xorig, SCM env);
extern SCM scm_m_and (SCM xorig, SCM env);
extern SCM scm_m_or (SCM xorig, SCM env);
extern SCM scm_m_case (SCM xorig, SCM env);
extern SCM scm_m_cond (SCM xorig, SCM env);
extern SCM scm_m_lambda (SCM xorig, SCM env);
extern SCM scm_m_letstar (SCM xorig, SCM env);
extern SCM scm_m_do (SCM xorig, SCM env);
extern SCM scm_m_quasiquote (SCM xorig, SCM env);
extern SCM scm_m_delay (SCM xorig, SCM env);
extern SCM scm_m_define (SCM x, SCM env);
extern SCM scm_m_letrec (SCM xorig, SCM env);
extern SCM scm_m_let (SCM xorig, SCM env);
extern SCM scm_m_apply (SCM xorig, SCM env);
extern SCM scm_m_cont (SCM xorig, SCM env);

extern SCM scm_m_nil_cond (SCM xorig, SCM env);
extern SCM scm_m_atfop (SCM xorig, SCM env);

extern SCM scm_m_atbind (SCM xorig, SCM env);
extern SCM scm_m_at_call_with_values (SCM xorig, SCM env);
extern int scm_badargsp (SCM formals, SCM args);
extern SCM scm_ceval (SCM x, SCM env);
extern SCM scm_deval (SCM x, SCM env);
extern SCM scm_call_0 (SCM proc);
extern SCM scm_call_1 (SCM proc, SCM arg1);
extern SCM scm_call_2 (SCM proc, SCM arg1, SCM arg2);
extern SCM scm_call_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3);
extern SCM scm_call_4 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4);
extern SCM scm_apply_0 (SCM proc, SCM args);
extern SCM scm_apply_1 (SCM proc, SCM arg1, SCM args);
extern SCM scm_apply_2 (SCM proc, SCM arg1, SCM arg2, SCM args);
extern SCM scm_apply_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM args);
extern SCM scm_nconc2last (SCM lst);
extern SCM scm_apply (SCM proc, SCM arg1, SCM args);
extern SCM scm_dapply (SCM proc, SCM arg1, SCM args);
extern SCM scm_m_expand_body (SCM xorig, SCM env);
extern SCM scm_macroexp (SCM x, SCM env);
extern SCM scm_map (SCM proc, SCM arg1, SCM args);
extern SCM scm_for_each (SCM proc, SCM arg1, SCM args);
extern SCM scm_closure (SCM code, SCM env);
extern SCM scm_makprom (SCM code);
extern SCM scm_force (SCM x);
extern SCM scm_promise_p (SCM x);
extern SCM scm_cons_source (SCM xorig, SCM x, SCM y);
extern SCM scm_copy_tree (SCM obj);
extern SCM scm_i_eval_x (SCM exp, SCM env);
extern SCM scm_i_eval (SCM exp, SCM env);
extern SCM scm_primitive_eval (SCM exp);
extern SCM scm_primitive_eval_x (SCM exp);
extern SCM scm_eval (SCM exp, SCM module);
extern SCM scm_eval_x (SCM exp, SCM module);

extern void scm_init_eval (void);
# 104 "eval.c" 2
# 1 "../libguile/lang.h" 1
# 76 "../libguile/lang.h"
extern void scm_init_lang (void);
# 105 "eval.c" 2
# 155 "eval.c"
SCM *
scm_ilookup (SCM iloc, SCM env)
{
  register long ir = ((long)(((0x00080000L)-(0x00000100L))>>8) & (((scm_t_bits) (iloc)) >> 8));
  register SCM er = env;
  for (; 0 != ir; --ir)
    er = (((scm_assert_cell_valid ((er)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((er)))))) [(1)])))))));
  er = (((scm_assert_cell_valid ((er)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((er)))))) [(0)])))))));
  for (ir = (((scm_t_bits) (iloc)) >> 20); 0 != ir; --ir)
    er = (((scm_assert_cell_valid ((er)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((er)))))) [(1)])))))));
  if (((0x00080000L) & ((scm_t_bits) (iloc))))
    return ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((er))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((er))))))) [(1)])))));
  return ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid ((((((scm_assert_cell_valid ((er)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((er)))))) [(1)])))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((((scm_assert_cell_valid ((er)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((er)))))) [(1)])))))))))))))) [(0)])))));
}
# 247 "eval.c"
static SCM scm_unbound_variable_key ;





SCM *
scm_lookupcar (SCM vloc, SCM genv, int check)

{
  SCM env = genv;
  register SCM *al, fl, var = (((scm_assert_cell_valid ((vloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((vloc)))))) [(0)])))))));
  register SCM iloc = ((SCM) (((0L) << 8) + scm_tc8_iloc));
  for (; (!(6 & ((scm_t_bits) (env)))); env = (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)]))))))))
    {
      if (!(!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)])))) == 0)))
        break;
      al = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((env))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((env))))))) [(0)])))));
      for (fl = (((scm_assert_cell_valid ((*al)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*al)))))) [(0)]))))))); (!(6 & ((scm_t_bits) (fl)))); fl = (((scm_assert_cell_valid ((fl)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((fl)))))) [(1)]))))))))
        {
          if (!(!(6 & ((scm_t_bits) (fl))) && ((1 & (scm_assert_cell_valid ((fl)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((fl)))))) [(0)])))) == 0)))
            {
              if ((((scm_t_bits) (fl)) == ((scm_t_bits) (var))))
              {




                (scm_assert_cell_valid ((vloc)), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((vloc)))))) [(0)] = (scm_t_bits) ((((scm_t_bits) (iloc)) + (0x00080000L))))));
                return ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*al))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*al))))))) [(1)])))));
              }
              else
                break;
            }
          al = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*al))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*al))))))) [(1)])))));
          if ((((scm_t_bits) ((((scm_assert_cell_valid ((fl)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((fl)))))) [(0)]))))))))) == ((scm_t_bits) (var))))
            {
              if (((((scm_t_bits) (((((scm_assert_cell_valid ((*al)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*al)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
                {
                  env = ((SCM) (((20) << 9) + 0x174L));
                  goto errout;
                }




              (((scm_assert_cell_valid (((vloc))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((vloc))))))) [(0)] = ((scm_t_bits) (((iloc)))))))));
              return ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*al))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*al))))))) [(0)])))));
            }
          iloc = ((SCM) (((scm_t_bits) (iloc)) + (0x00100000L)));
        }
      iloc = ((SCM) ((~(-(0x00100000L))) & (((scm_t_bits) (iloc)) + (0x00000100L))));
    }
  {
    SCM top_thunk, real_var;
    if ((!(6 & ((scm_t_bits) (env)))))
      {
        top_thunk = (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))));

        env = (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)])))))));
      }
    else
      top_thunk = ((SCM) (((16) << 9) + 0x174L));
    real_var = scm_sym2var (var, top_thunk, ((SCM) (((16) << 9) + 0x174L)));
    if (((((scm_t_bits) ((real_var))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
      goto errout;

    if (!((((scm_t_bits) ((env))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) (((scm_assert_cell_valid ((real_var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((real_var)))))) [(1)])))))))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
      {
      errout:
        if (check)
          {
            if (((((scm_t_bits) ((env))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
              scm_error (scm_unbound_variable_key, ((void *)0),
                         "Unbound variable: ~S",
                         scm_list_1 (var), ((SCM) (((16) << 9) + 0x174L)));
            else
              scm_misc_error (((void *)0), "Damaged environment: ~S",
                              scm_list_1 (var));
          }
        else
          {


            static SCM undef_object = ((SCM) (((18) << 9) + 0x174L));
            return &undef_object;
          }
      }
# 357 "eval.c"
    (((scm_assert_cell_valid (((vloc))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((vloc))))))) [(0)] = ((scm_t_bits) (((real_var)))))))));
    return ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((real_var))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((real_var))))))) [(1)])))));
  }
}
# 375 "eval.c"
static SCM sym_three_question_marks ;

SCM
scm_unmemocar (SCM form, SCM env)
{
  if (!(!(6 & ((scm_t_bits) (form))) && ((1 & (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))) == 0)))
    return form;
  else
    {
      SCM c = (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))))));
      if ((!(6 & ((scm_t_bits) (c))) && (0x7f & (scm_assert_cell_valid ((c)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((c)))))) [(0)])))) == 7))
        {
          SCM sym = scm_module_reverse_lookup (scm_env_module (env), c);
          if (((((scm_t_bits) ((sym))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
            sym = sym_three_question_marks;
          (((scm_assert_cell_valid (((form))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((form))))))) [(0)] = ((scm_t_bits) (((sym)))))))));
        }
      else if (((((scm_t_bits) (c)) & 0xff)==scm_tc8_iloc))
        {
          unsigned long int ir;

          for (ir = ((long)(((0x00080000L)-(0x00000100L))>>8) & (((scm_t_bits) (c)) >> 8)); ir != 0; --ir)
            env = (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)])))))));
          env = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)])))))));
          for (ir = (((scm_t_bits) (c)) >> 20); ir != 0; --ir)
            env = (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)])))))));
          (((scm_assert_cell_valid (((form))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((form))))))) [(0)] = ((scm_t_bits) (((((0x00080000L) & ((scm_t_bits) (c))) ? env : (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))))));
        }
      return form;
    }
}


SCM
scm_eval_car (SCM pair, SCM env)
{
  return ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm!
_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (pair, env, 1) : (*scm_ceval_ptr) ((((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)]))))))), env)));
}







const char scm_s_expression[] = "missing or extra expression";
const char scm_s_test[] = "bad test";
const char scm_s_body[] = "bad body";
const char scm_s_bindings[] = "bad bindings";
const char scm_s_duplicate_bindings[] = "duplicate bindings";
const char scm_s_variable[] = "bad variable";
const char scm_s_clauses[] = "bad or missing clauses";
const char scm_s_formals[] = "bad formals";
const char scm_s_duplicate_formals[] = "duplicate formals";
static const char s_splicing[] = "bad (non-list) result for unquote-splicing";

SCM scm_sym_dot ;
SCM scm_sym_arrow ;
SCM scm_sym_else ;
SCM scm_sym_unquote ;
SCM scm_sym_uq_splicing ;

SCM scm_f_apply;


SCM scm_sym_enter_frame ;
SCM scm_sym_apply_frame ;
SCM scm_sym_exit_frame ;
SCM scm_sym_trace ;
# 460 "eval.c"
static SCM
scm_m_body (SCM op, SCM xorig, const char *what)
{
  if (!(scm_ilength (xorig) >= 1)) scm_misc_error (what, scm_s_body, ((SCM) (((20) << 9) + 0x174L)));;


  if (((0x187 & ((scm_t_bits) ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)])))))))))) == 4))
    return xorig;


  if (!(!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))))))))) [(0)])))) == 0)))
    {
      if (!((((scm_t_bits) (((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        return scm_cons ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))),
                         scm_m_body (op, (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))), what));
      return xorig;
    }

  return scm_cons (op, xorig);
}


static const char s_quote[]="quote";
SCM scm_sym_quote ;

SCM
scm_m_quote (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))) == 1)) scm_misc_error (s_quote, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((11) << 9) + ((11) << 3) + 4L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}


static const char s_begin[]="begin";
SCM scm_sym_begin ;

SCM
scm_m_begin (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))) >= 0)) scm_misc_error (s_begin, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((1) << 9) + ((1) << 3) + 4L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}


static const char s_if[]="if";
SCM scm_sym_if ;

SCM
scm_m_if (SCM xorig, SCM env __attribute__ ((unused)))
{
  long len = scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  if (!(len >= 2 && len <= 3)) scm_misc_error (s_if, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((5) << 9) + ((5) << 3) + 4L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}




const char scm_s_set_x[] = "set!";
SCM scm_sym_set_x ;

SCM
scm_m_set_x (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  if (!(scm_ilength (x) == 2)) scm_misc_error (scm_s_set_x, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  if (!((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)))) scm_misc_error (scm_s_set_x, scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((12) << 9) + ((12) << 3) + 4L)), x);
}


static const char s_and[]="and";
SCM scm_sym_and ;

SCM
scm_m_and (SCM xorig, SCM env __attribute__ ((unused)))
{
  long len = scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  if (!(len >= 0)) scm_misc_error (s_and, scm_s_test, ((SCM) (((20) << 9) + 0x174L)));;
  if (len >= 1)
    return scm_cons (((SCM) (((0) << 9) + ((0) << 3) + 4L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  else
    return ((SCM) (((17) << 9) + 0x174L));
}


static const char s_or[]="or";
SCM scm_sym_or ;

SCM
scm_m_or (SCM xorig, SCM env __attribute__ ((unused)))
{
  long len = scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  if (!(len >= 0)) scm_misc_error (s_or, scm_s_test, ((SCM) (((20) << 9) + 0x174L)));;
  if (len >= 1)
    return scm_cons (((SCM) (((10) << 9) + ((10) << 3) + 4L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  else
    return ((SCM) (((16) << 9) + 0x174L));
}


static const char s_case[]="case";
SCM scm_sym_case ;

SCM
scm_m_case (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM clauses;
  SCM cdrx = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  if (!(scm_ilength (cdrx) >= 2)) scm_misc_error (s_case, scm_s_clauses, ((SCM) (((20) << 9) + 0x174L)));;
  clauses = (((scm_assert_cell_valid ((cdrx)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((cdrx)))))) [(1)])))))));
  while (!((((scm_t_bits) ((clauses))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM clause = (((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(0)])))))));
      if (!(scm_ilength (clause) >= 2)) scm_misc_error (s_case, scm_s_clauses, ((SCM) (((20) << 9) + 0x174L)));;
      if (!(scm_ilength ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))) >= 0 || ((((scm_t_bits) (scm_sym_else)) == ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) && ((((scm_t_bits) (((((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))))) scm_misc_error (s_case, scm_s_clauses, ((SCM) (((20) << 9) + 0x174L)));;



      clauses = (((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(1)])))))));
    }
  return scm_cons (((SCM) (((2) << 9) + ((2) << 3) + 4L)), cdrx);
}


static const char s_cond[]="cond";
SCM scm_sym_cond ;

SCM
scm_m_cond (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM cdrx = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  SCM clauses = cdrx;
  if (!(scm_ilength (clauses) >= 1)) scm_misc_error (s_cond, scm_s_clauses, ((SCM) (((20) << 9) + 0x174L)));;
  while (!((((scm_t_bits) ((clauses))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM clause = (((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(0)])))))));
      long len = scm_ilength (clause);
      if (!(len >= 1)) scm_misc_error (s_cond, scm_s_clauses, ((SCM) (((20) << 9) + 0x174L)));;
      if ((((scm_t_bits) (scm_sym_else)) == ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))))
        {
          int last_clause_p = ((((scm_t_bits) (((((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))));
          if (!(len >= 2 && last_clause_p)) scm_misc_error (s_cond, "bad ELSE clause", ((SCM) (((20) << 9) + 0x174L)));;
        }
      else if (len >= 2 && (((scm_t_bits) (scm_sym_arrow)) == ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)]))))))))))))) [(0)])))))))))))
        {
          if (!(len > 2)) scm_misc_error (s_cond, "missing recipient", ((SCM) (((20) << 9) + 0x174L)));;
          if (!(len == 3)) scm_misc_error (s_cond, "bad recipient", ((SCM) (((20) << 9) + 0x174L)));;
        }
      clauses = (((scm_assert_cell_valid ((clauses)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clauses)))))) [(1)])))))));
    }
  return scm_cons (((SCM) (((3) << 9) + ((3) << 3) + 4L)), cdrx);
}


static const char s_lambda[]="lambda";
SCM scm_sym_lambda ;




static int
scm_c_improper_memq (SCM obj, SCM list)
{
  for (; (!(6 & ((scm_t_bits) (list))) && ((1 & (scm_assert_cell_valid ((list)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((list)))))) [(0)])))) == 0)); list = (((scm_assert_cell_valid ((list)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((list)))))) [(1)]))))))))
    {
      if ((((scm_t_bits) ((((scm_assert_cell_valid ((list)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((list)))))) [(0)]))))))))) == ((scm_t_bits) (obj))))
        return 1;
    }
  return (((scm_t_bits) (list)) == ((scm_t_bits) (obj)));
}

SCM
scm_m_lambda (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM formals;
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));

  if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (s_lambda, scm_s_formals, ((SCM) (((20) << 9) + 0x174L)));;

  formals = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  while ((!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0)))
    {
      SCM formal = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))))));
      if (!((!(6 & ((scm_t_bits) (formal))) && ((0x7f & (scm_assert_cell_valid ((formal)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formal)))))) [(0)])))) == 5)))) scm_misc_error (s_lambda, scm_s_formals, ((SCM) (((20) << 9) + 0x174L)));;
      if (scm_c_improper_memq (formal, (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))))))
        scm_misc_error (s_lambda, scm_s_duplicate_formals, ((SCM) (((20) << 9) + 0x174L)));
      formals = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))));
    }
  if (!((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) && !(!(6 & ((scm_t_bits) (formals))) && ((0x7f & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 5)))
    scm_misc_error (s_lambda, scm_s_formals, ((SCM) (((20) << 9) + 0x174L)));

  return scm_cons2 (((SCM) (((6) << 9) + ((6) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))),
                    scm_m_body (((SCM) (((6) << 9) + ((6) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), s_lambda));
}


static const char s_letstar[]="let*";
SCM scm_sym_letstar ;



SCM
scm_m_letstar (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM bindings;
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  SCM vars = ((SCM) (((20) << 9) + 0x174L));
  SCM *varloc = &vars;

  if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (s_letstar, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;

  bindings = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  if (!(scm_ilength (bindings) >= 0)) scm_misc_error (s_letstar, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
  while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM binding = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
      if (!(scm_ilength (binding) == 2)) scm_misc_error (s_letstar, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      if (!((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))))))) [(0)])))) == 5)))) scm_misc_error (s_letstar, scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
      *varloc = scm_list_2 ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))), (((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(0)]))))))));
      varloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid ((((((scm_assert_cell_valid ((*varloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*varloc)))))) [(1)])))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((((scm_assert_cell_valid ((*varloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*varloc)))))) [(1)])))))))))))))) [(1)])))));
      bindings = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
    }

  return scm_cons2 (((SCM) (((8) << 9) + ((8) << 3) + 4L)), vars,
                    scm_m_body (((SCM) (((8) << 9) + ((8) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), s_letstar));
}
# 708 "eval.c"
static const char s_do[]="do";
SCM scm_sym_do ;

SCM
scm_m_do (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM bindings;
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  SCM vars = ((SCM) (((20) << 9) + 0x174L));
  SCM inits = ((SCM) (((20) << 9) + 0x174L));
  SCM *initloc = &inits;
  SCM steps = ((SCM) (((20) << 9) + 0x174L));
  SCM *steploc = &steps;
  if (!(scm_ilength (x) >= 2)) scm_misc_error ("do", scm_s_test, ((SCM) (((20) << 9) + 0x174L)));;
  bindings = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  if (!(scm_ilength (bindings) >= 0)) scm_misc_error ("do", scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
  while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM binding = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
      long len = scm_ilength (binding);
      if (!(len == 2 || len == 3)) scm_misc_error ("do", scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      {
        SCM name = (((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)])))))));
        SCM init = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(0)])))))));
        SCM step = (len == 2) ? name : (((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))));
        if (!((!(6 & ((scm_t_bits) (name))) && ((0x7f & (scm_assert_cell_valid ((name)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(0)])))) == 5)))) scm_misc_error ("do", scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
        vars = scm_cons (name, vars);
        *initloc = scm_list_1 (init);
        initloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*initloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*initloc))))))) [(1)])))));
        *steploc = scm_list_1 (step);
        steploc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*steploc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*steploc))))))) [(1)])))));
        bindings = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
      }
    }
  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  if (!(scm_ilength ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))) >= 1)) scm_misc_error ("do", scm_s_test, ((SCM) (((20) << 9) + 0x174L)));;
  x = scm_cons2 ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), steps);
  x = scm_cons2 (vars, inits, x);
  return scm_cons (((SCM) (((4) << 9) + ((4) << 3) + 4L)), x);
}


static const char s_quasiquote[]="quasiquote";
SCM scm_sym_quasiquote ;





static SCM
iqq (SCM form, SCM env, unsigned long int depth)
{
  if ((!(6 & ((scm_t_bits) (form))) && ((1 & (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))) == 0)))
    {
      SCM tmp = (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))))));
      if ((((scm_t_bits) (tmp)) == ((scm_t_bits) (scm_sym_quasiquote))))
        {
          SCM args = (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)])))))));
          if (!(scm_ilength (args) == 1)) scm_misc_error (s_quasiquote, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
          return scm_list_2 (tmp, iqq ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))), env, depth + 1));
        }
      else if ((((scm_t_bits) (tmp)) == ((scm_t_bits) (scm_sym_unquote))))
        {
          SCM args = (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)])))))));
          if (!(scm_ilength (args) == 1)) scm_misc_error (s_quasiquote, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
          if (depth - 1 == 0)
            return scm_eval_car (args, env);
          else
            return scm_list_2 (tmp, iqq ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))), env, depth - 1));
        }
      else if ((!(6 & ((scm_t_bits) (tmp))) && ((1 & (scm_assert_cell_valid ((tmp)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp)))))) [(0)])))) == 0))
               && (((scm_t_bits) ((((scm_assert_cell_valid ((tmp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp)))))) [(0)]))))))))) == ((scm_t_bits) (scm_sym_uq_splicing))))
        {
          SCM args = (((scm_assert_cell_valid ((tmp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp)))))) [(1)])))))));
          if (!(scm_ilength (args) == 1)) scm_misc_error (s_quasiquote, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
          if (depth - 1 == 0)
            {
              SCM list = scm_eval_car (args, env);
              SCM rest = (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)])))))));
              if (!(scm_ilength (list) >= 0)) scm_misc_error (s_quasiquote, s_splicing, ((SCM) (((20) << 9) + 0x174L)));;
              return scm_append (scm_list_2 (list, iqq (rest, env, depth)));
            }
          else
            return scm_cons (iqq ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)]))))))), env, depth - 1),
                             iqq ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)]))))))), env, depth));
        }
      else
        return scm_cons (iqq ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)]))))))), env, depth),
                         iqq ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)]))))))), env, depth));
    }
  else if ((!(6 & ((scm_t_bits) (form))) && (((0x7f & ~2) & (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))) == 13)))
    {
      size_t i = (((unsigned long) (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))) >> 8);
      SCM const *data = ((const SCM *) (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)]))));
      SCM tmp = ((SCM) (((20) << 9) + 0x174L));
      while (i != 0)
        tmp = scm_cons (data[--i], tmp);
      scm_remember_upto_here_1 (form);
      return scm_vector (iqq (tmp, env, depth));
    }
  else
    return form;
}

SCM
scm_m_quasiquote (SCM xorig, SCM env)
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  if (!(scm_ilength (x) == 1)) scm_misc_error (s_quasiquote, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return iqq ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env, 1);
}


static const char s_delay[]="delay";
SCM scm_sym_delay ;





SCM
scm_m_delay (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength (xorig) == 2)) scm_misc_error (s_delay, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons2 (((SCM) (((27) << 9) + 0x74L)), ((SCM) (((20) << 9) + 0x174L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}


static const char s_define[]="define";
SCM scm_sym_define ;
# 858 "eval.c"
SCM
scm_m_define (SCM x, SCM env)
{
  SCM name;
  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  if (!(scm_ilength (x) >= 2)) scm_misc_error (s_define, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  name = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  while ((!(6 & ((scm_t_bits) (name))) && ((1 & (scm_assert_cell_valid ((name)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(0)])))) == 0)))
    {

      SCM formals = (((scm_assert_cell_valid ((name)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(1)])))))));
      x = scm_list_1 (scm_cons2 (scm_sym_lambda, formals, x));
      name = (((scm_assert_cell_valid ((name)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(0)])))))));
    }
  if (!((!(6 & ((scm_t_bits) (name))) && ((0x7f & (scm_assert_cell_valid ((name)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(0)])))) == 5)))) scm_misc_error (s_define, scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
  if (!(scm_ilength (x) == 1)) scm_misc_error (s_define, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  if ((((((scm_t_bits) ((env))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) (scm_procedure_p ((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((17) << 9) + 0x174L))))))))
    {
      SCM var;
      x = scm_eval_car (x, env);
      if (scm_debug_opts[3].val)
        {
          SCM tmp = x;
          while ((!(6 & ((scm_t_bits) ((tmp)))) && (0xffff & (scm_assert_cell_valid (((tmp))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tmp))))))) [(0)])))) == (scm_tc16_macro)))
            tmp = (scm_assert_cell_valid ((tmp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp)))))) [(1)])))));
          if ((!(6 & ((scm_t_bits) (tmp))) && ((7 & (scm_assert_cell_valid ((tmp)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp)))))) [(0)])))) == 3))

              && ((((scm_t_bits) ((scm_procedure_property (tmp, scm_sym_name)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
            scm_set_procedure_property_x (tmp, scm_sym_name, name);
        }
      var = scm_sym2var (name, scm_env_top_level (env), ((SCM) (((17) << 9) + 0x174L)));
      (scm_assert_cell_valid ((var)), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)] = ((scm_t_bits) ((x))))));
      return ((SCM) (((21) << 9) + 0x174L));
    }
  else
    return scm_cons2 (((SCM) (((13) << 9) + ((13) << 3) + 4L)), name, x);
}





static void
transform_bindings (SCM bindings, SCM *rvarloc, SCM *initloc, const char *what)
{
  SCM rvars = ((SCM) (((20) << 9) + 0x174L));
  *rvarloc = ((SCM) (((20) << 9) + 0x174L));
  *initloc = ((SCM) (((20) << 9) + 0x174L));

  if (!(scm_ilength (bindings) >= 1)) scm_misc_error (what, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;

  do
    {
      SCM binding = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
      if (!(scm_ilength (binding) == 2)) scm_misc_error (what, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      if (!((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))))))) [(0)])))) == 5)))) scm_misc_error (what, scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
      if (scm_c_improper_memq ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))), rvars))
        scm_misc_error (what, scm_s_duplicate_bindings, ((SCM) (((20) << 9) + 0x174L)));
      rvars = scm_cons ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))), rvars);
      *initloc = scm_list_1 ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(0)]))))))));
      initloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*initloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*initloc))))))) [(1)])))));
      bindings = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
    }
  while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));

  *rvarloc = rvars;
}


static const char s_letrec[]="letrec";
SCM scm_sym_letrec ;

SCM
scm_m_letrec (SCM xorig, SCM env)
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (s_letrec, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;

  if (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {

      SCM body = scm_m_body (((SCM) (((9) << 9) + ((9) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), s_letrec);
      return scm_m_letstar (scm_cons2 ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))), ((SCM) (((20) << 9) + 0x174L)), body), env);
    }
  else
    {
      SCM rvars, inits, body;
      transform_bindings ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), &rvars, &inits, "letrec");
      body = scm_m_body (((SCM) (((9) << 9) + ((9) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), "letrec");
      return scm_cons2 (((SCM) (((9) << 9) + ((9) << 3) + 4L)), rvars, scm_cons (inits, body));
    }
}


static const char s_let[]="let";
SCM scm_sym_let ;

SCM
scm_m_let (SCM xorig, SCM env)
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  SCM temp;

  if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (s_let, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
  temp = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  if (((((scm_t_bits) ((temp))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
      || (scm_ilength (temp) == 1 && (!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((temp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((temp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((temp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp)))))) [(0)]))))))))))))) [(0)])))) == 0))))
    {

      SCM bindings = temp;
      SCM body = scm_m_body (((SCM) (((7) << 9) + ((7) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), s_let);
      return scm_m_letstar (scm_cons2 ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))), bindings, body), env);
    }
  else if ((!(6 & ((scm_t_bits) (temp))) && ((1 & (scm_assert_cell_valid ((temp)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp)))))) [(0)])))) == 0)))
    {

      SCM bindings = temp;
      SCM rvars, inits, body;
      transform_bindings (bindings, &rvars, &inits, "let");
      body = scm_m_body (((SCM) (((7) << 9) + ((7) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), "let");
      return scm_cons2 (((SCM) (((7) << 9) + ((7) << 3) + 4L)), rvars, scm_cons (inits, body));
    }
  else
    {



      SCM name = temp;
      SCM vars = ((SCM) (((20) << 9) + 0x174L));
      SCM *varloc = &vars;
      SCM inits = ((SCM) (((20) << 9) + 0x174L));
      SCM *initloc = &inits;
      SCM bindings;

      if (!((!(6 & ((scm_t_bits) (name))) && ((0x7f & (scm_assert_cell_valid ((name)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((name)))))) [(0)])))) == 5)))) scm_misc_error (s_let, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (s_let, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      bindings = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!(scm_ilength (bindings) >= 0)) scm_misc_error (s_let, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM binding = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
          if (!(scm_ilength (binding) == 2)) scm_misc_error (s_let, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
          if (!((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))))))))) [(0)])))) == 5)))) scm_misc_error (s_let, scm_s_variable, ((SCM) (((20) << 9) + 0x174L)));;
          *varloc = scm_list_1 ((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(0)]))))))));
          varloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*varloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*varloc))))))) [(1)])))));
          *initloc = scm_list_1 ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((binding)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((binding)))))) [(1)]))))))))))))) [(0)]))))))));
          initloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*initloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*initloc))))))) [(1)])))));
          bindings = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
        }

      {
        SCM lambda_body = scm_m_body (((SCM) (((7) << 9) + ((7) << 3) + 4L)), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), "let");
        SCM lambda_form = scm_cons2 (scm_sym_lambda, vars, lambda_body);
        SCM rvar = scm_list_1 (name);
        SCM init = scm_list_1 (lambda_form);
        SCM body = scm_m_body (((SCM) (((7) << 9) + ((7) << 3) + 4L)), scm_list_1 (name), "let");
        SCM letrec = scm_cons2 (((SCM) (((9) << 9) + ((9) << 3) + 4L)), rvar, scm_cons (init, body));
        return scm_cons (letrec, inits);
      }
    }
}


static const char s_atapply[]="@apply";
SCM scm_sym_atapply ;
SCM scm_sym_apply ;

SCM
scm_m_apply (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))) == 2)) scm_misc_error (s_atapply, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((14) << 9) + 0x74L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}


static const char s_atcall_cc[]="@call-with-current-continuation";
SCM scm_sym_atcall_cc ;


SCM
scm_m_cont (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))) == 1)) scm_misc_error (s_atcall_cc, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;

  return scm_cons (((SCM) (((15) << 9) + 0x74L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}



static const char s_nil_cond[]="nil-cond";

SCM
scm_m_nil_cond (SCM xorig, SCM env __attribute__ ((unused)))
{
  long len = scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
  if (!(len >= 1 && (len & 1) == 1)) scm_misc_error ("nil-cond", scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  return scm_cons (((SCM) (((25) << 9) + 0x74L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}

static const char s_atfop[]="@fop";

SCM
scm_m_atfop (SCM xorig, SCM env __attribute__ ((unused)))
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))), var;
  if (!(scm_ilength (x) >= 1)) scm_misc_error ("@fop", scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;
  var = scm_symbol_fref ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))));






  if (!((!(6 & ((scm_t_bits) (var))) && (0x7f & (scm_assert_cell_valid ((var)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(0)])))) == 7))) scm_misc_error (((char *) ((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)]))))), "Symbol's function definition is void", ((SCM) (((20) << 9) + 0x174L)));;



  while ((!(6 & ((scm_t_bits) ((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)])))))))) && ((0x7f & (scm_assert_cell_valid (((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)]))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)]))))))))))) [(0)])))) == 5)))
    {
      var = scm_symbol_fref ((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)]))))));
      if (!((!(6 & ((scm_t_bits) (var))) && (0x7f & (scm_assert_cell_valid ((var)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(0)])))) == 7))) scm_misc_error (((char *) ((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)]))))), "Symbol's function definition is void", ((SCM) (((20) << 9) + 0x174L)));;


    }



  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((var)))))))));




  if (!(!(6 & ((scm_t_bits) (((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)]))))))))) && (0xffff & (scm_assert_cell_valid ((((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)])))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((scm_assert_cell_valid ((var)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((var)))))) [(1)])))))))))))) [(0)])))) == (scm_tc16_macro)))
    {
      (((scm_assert_cell_valid (((xorig))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((xorig))))))) [(0)] = ((scm_t_bits) (((((SCM) (((14) << 9) + 0x74L)))))))))));
      return xorig;
    }



  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)]))))))))))))) [(1)]))))))))))))))));
  return x;
}
# 1123 "eval.c"
static const char s_atbind[]="@bind";

SCM
scm_m_atbind (SCM xorig, SCM env)
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))));
  SCM top_level = scm_env_top_level (env);
  SCM vars = ((SCM) (((20) << 9) + 0x174L)), var;
  SCM exps = ((SCM) (((20) << 9) + 0x174L));

  if (!(scm_ilength (x) > 1)) scm_misc_error (s_atbind, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;

  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  while ((!(6 & ((scm_t_bits) (x)))))
    {
      SCM rest;
      SCM sym_exp = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!(scm_ilength (sym_exp) == 2)) scm_misc_error (s_atbind, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      if (!((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)]))))))))))))) [(0)])))) == 5)))) scm_misc_error (s_atbind, scm_s_bindings, ((SCM) (((20) << 9) + 0x174L)));;
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      for (rest = x; (!(6 & ((scm_t_bits) (rest)))); rest = (((scm_assert_cell_valid ((rest)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((rest)))))) [(1)]))))))))
        if ((((scm_t_bits) ((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)]))))))))) == ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((rest)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((rest)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((rest)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((rest)))))) [(0)]))))))))))))) [(0)])))))))))))
          scm_misc_error (s_atbind, scm_s_duplicate_bindings, ((SCM) (((20) << 9) + 0x174L)));


      var = scm_sym2var ((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)]))))))), top_level, ((SCM) (((16) << 9) + 0x174L)));
      if (((((scm_t_bits) ((var))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
        var = scm_sym2var ((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(0)]))))))), top_level, ((SCM) (((17) << 9) + 0x174L)));
      vars = scm_cons (var, vars);
      exps = scm_cons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((sym_exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((sym_exp)))))) [(1)]))))))))))))) [(0)]))))))), exps);
    }
  return scm_cons (((SCM) (((26) << 9) + 0x74L)),
                   scm_cons (scm_cons (scm_reverse_x (vars, ((SCM) (((20) << 9) + 0x174L))), exps),
                             (((scm_assert_cell_valid (((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))))))))) [(1)])))))))));
}

static const char s_at_call_with_values[]="@call-with-values";
SCM scm_sym_at_call_with_values ;

SCM
scm_m_at_call_with_values (SCM xorig, SCM env __attribute__ ((unused)))
{
  if (!(scm_ilength ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)])))))))) == 2)) scm_misc_error (s_at_call_with_values, scm_s_expression, ((SCM) (((20) << 9) + 0x174L)));;

  return scm_cons (((SCM) (((28) << 9) + 0x74L)), (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))));
}

SCM
scm_m_expand_body (SCM xorig, SCM env)
{
  SCM x = (((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(1)]))))))), defs = ((SCM) (((20) << 9) + 0x174L));
  char *what = (scm_isymnames[(((scm_t_bits) ((((scm_assert_cell_valid ((xorig)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((xorig)))))) [(0)]))))))))) >> 9)]) + 2;

  while ((!(6 & ((scm_t_bits) (x)))))
    {
      SCM form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!(!(6 & ((scm_t_bits) (form))) && ((1 & (scm_assert_cell_valid ((form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))) == 0)))
        break;
      if (!(!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)]))))))))))))) [(0)])))) == 5)))
        break;

      form = scm_macroexp (scm_cons_source (form,
                                            (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)]))))))),
                                            (((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)])))))))),
                           env);

      if ((((scm_t_bits) (((SCM) (((13) << 9) + ((13) << 3) + 4L)))) == ((scm_t_bits) ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))))))))))
        {
          defs = scm_cons ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)]))))))), defs);
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }
      else if (!(6 & ((scm_t_bits) (defs))))
        {
          break;
        }
      else if ((((scm_t_bits) (((SCM) (((1) << 9) + ((1) << 3) + 4L)))) == ((scm_t_bits) ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(0)])))))))))))
        {
          x = scm_append (scm_list_2 ((((scm_assert_cell_valid ((form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((form)))))) [(1)]))))))), (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))));
        }
      else
        {
          x = scm_cons (form, (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))));
          break;
        }
    }

  if (!((((scm_t_bits) ((defs))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM rvars, inits, body, letrec;
      transform_bindings (defs, &rvars, &inits, what);
      body = scm_m_body (((SCM) (((13) << 9) + ((13) << 3) + 4L)), x, what);
      letrec = scm_cons2 (((SCM) (((9) << 9) + ((9) << 3) + 4L)), rvars, scm_cons (inits, body));
      (((scm_assert_cell_valid (((xorig))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((xorig))))))) [(0)] = ((scm_t_bits) (((letrec)))))))));
      (((scm_assert_cell_valid (((xorig))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((xorig))))))) [(1)] = ((scm_t_bits) (((((SCM) (((20) << 9) + 0x174L)))))))))));
    }
  else
    {
      if (!((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))) scm_misc_error (what, scm_s_body, ((SCM) (((20) << 9) + 0x174L)));;
      (((scm_assert_cell_valid (((xorig))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((xorig))))))) [(0)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))))));
      (((scm_assert_cell_valid (((xorig))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((xorig))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))))));
    }

  return xorig;
}

SCM
scm_macroexp (SCM x, SCM env)
{
  SCM res, proc, orig_sym;




 macro_tail:
  orig_sym = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
  if (!(!(6 & ((scm_t_bits) (orig_sym))) && ((0x7f & (scm_assert_cell_valid ((orig_sym)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((orig_sym)))))) [(0)])))) == 5)))
    return x;
# 1252 "eval.c"
  proc = *scm_lookupcar (x, env, 0);





  if (!(!(6 & ((scm_t_bits) ((proc)))) && (0xffff & (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(0)])))) == (scm_tc16_macro)) || ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 16) != 2)
    return x;

  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((orig_sym)))))))));
  res = scm_call_2 ((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), x, env);

  if (scm_ilength (res) <= 0)
    res = scm_list_2 (((SCM) (((1) << 9) + ((1) << 3) + 4L)), res);

  do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((res)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((res)))))) [(0)]))))))))))))))));
  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((res)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((res)))))) [(1)]))))))))))))))));
  do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);

  goto macro_tail;
}
# 1292 "eval.c"
static SCM
build_binding_list (SCM names, SCM inits)
{
  SCM bindings = ((SCM) (((20) << 9) + 0x174L));
  while (!((((scm_t_bits) ((names))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      SCM binding = scm_list_2 ((((scm_assert_cell_valid ((names)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((names)))))) [(0)]))))))), (((scm_assert_cell_valid ((inits)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((inits)))))) [(0)]))))))));
      bindings = scm_cons (binding, bindings);
      names = (((scm_assert_cell_valid ((names)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((names)))))) [(1)])))))));
      inits = (((scm_assert_cell_valid ((inits)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((inits)))))) [(1)])))))));
    }
  return bindings;
}

static SCM
unmemocopy (SCM x, SCM env)
{
  SCM ls, z;

  SCM p;

  if (!(!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
    return x;

  p = scm_hash_fn_ref (scm_sys_protects[13], x, ((SCM) (((16) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0);

  switch ((127 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))))
    {
    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + ((0) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_and, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((1) << 9) + ((1) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_begin, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((2) << 9) + ((2) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_case, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((3) << 9) + ((3) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_cond, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((4) << 9) + ((4) << 3) + 4L))))):
      {





        SCM names, inits, test, memoized_body, steps, bindings;

        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        names = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        inits = scm_reverse (unmemocopy ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env));
        env = scm_acons (names, ((SCM) (((20) << 9) + 0x174L)), env);
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        test = unmemocopy ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        memoized_body = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        steps = scm_reverse (unmemocopy (x, env));


        bindings = ((SCM) (((20) << 9) + 0x174L));
        while (!((((scm_t_bits) ((names))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          {
            SCM name = (((scm_assert_cell_valid ((names)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((names)))))) [(0)])))))));
            SCM init = (((scm_assert_cell_valid ((inits)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((inits)))))) [(0)])))))));
            SCM step = (((scm_assert_cell_valid ((steps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((steps)))))) [(0)])))))));
            step = (((scm_t_bits) (step)) == ((scm_t_bits) (name))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_list_1 (step);

            bindings = scm_cons (scm_cons2 (name, init, step), bindings);

            names = (((scm_assert_cell_valid ((names)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((names)))))) [(1)])))))));
            inits = (((scm_assert_cell_valid ((inits)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((inits)))))) [(1)])))))));
            steps = (((scm_assert_cell_valid ((steps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((steps)))))) [(1)])))))));
          }
        z = scm_cons (test, ((SCM) (((21) << 9) + 0x174L)));
        ls = scm_cons2 (scm_sym_do, bindings, z);

        x = scm_cons (((SCM) (((16) << 9) + 0x174L)), memoized_body);
        break;
      }
    case (127 & ((scm_t_bits) (((SCM) (((5) << 9) + ((5) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_if, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((7) << 9) + ((7) << 3) + 4L))))):
      {



        SCM names, inits, bindings;

        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        names = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        inits = scm_reverse (unmemocopy ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env));
        env = scm_acons (names, ((SCM) (((20) << 9) + 0x174L)), env);

        bindings = build_binding_list (names, inits);
        z = scm_cons (bindings, ((SCM) (((21) << 9) + 0x174L)));
        ls = scm_cons (scm_sym_let, z);
        break;
      }
    case (127 & ((scm_t_bits) (((SCM) (((9) << 9) + ((9) << 3) + 4L))))):
      {



        SCM names, inits, bindings;

        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        names = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        env = scm_acons (names, ((SCM) (((20) << 9) + 0x174L)), env);
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        inits = scm_reverse (unmemocopy ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env));

        bindings = build_binding_list (names, inits);
        z = scm_cons (bindings, ((SCM) (((21) << 9) + 0x174L)));
        ls = scm_cons (scm_sym_letrec, z);
        break;
      }
    case (127 & ((scm_t_bits) (((SCM) (((8) << 9) + ((8) << 3) + 4L))))):
      {
        SCM b, y;
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        b = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        y = ((SCM) (((20) << 9) + 0x174L));
        if (6 & ((scm_t_bits) (b)))
          {
            env = scm_acons (((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)), env);
            goto letstar;
          }
        y = z = scm_acons ((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(0)]))))))),
                           scm_unmemocar (
        scm_cons (unmemocopy ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))))))) [(0)]))))))), env), ((SCM) (((20) << 9) + 0x174L))), env),
                           ((SCM) (((21) << 9) + 0x174L)));
        env = scm_acons ((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(0)]))))))), ((SCM) (((16) << 9) + 0x174L)), env);
        b = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))))))) [(1)])))))));
        if ((6 & ((scm_t_bits) (b))))
          {
            (((scm_assert_cell_valid (((y))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((y))))))) [(1)] = ((scm_t_bits) (((((SCM) (((20) << 9) + 0x174L)))))))))));
            ls = scm_cons (scm_sym_let, z = scm_cons (y, ((SCM) (((21) << 9) + 0x174L))));
            break;
          }
        do
          {
            (((scm_assert_cell_valid (((z))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((z))))))) [(1)] = ((scm_t_bits) (((scm_acons ((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(0)]))))))), scm_unmemocar ( scm_list_1 (unmemocopy ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))))))) [(0)]))))))), env)), env), ((SCM) (((21) << 9) + 0x174L))))))))))));



            z = (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)])))))));
            env = scm_acons ((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(0)]))))))), ((SCM) (((16) << 9) + 0x174L)), env);
            b = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((b)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((b)))))) [(1)]))))))))))))) [(1)])))))));
          }
        while ((!(6 & ((scm_t_bits) (b)))));
        (((scm_assert_cell_valid (((z))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((z))))))) [(1)] = ((scm_t_bits) (((((SCM) (((20) << 9) + 0x174L)))))))))));
      letstar:
        ls = scm_cons (scm_sym_letstar, z = scm_cons (y, ((SCM) (((21) << 9) + 0x174L))));
        break;
      }
    case (127 & ((scm_t_bits) (((SCM) (((10) << 9) + ((10) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_or, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((6) << 9) + ((6) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      z = scm_cons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), ((SCM) (((21) << 9) + 0x174L)));
      ls = scm_cons (scm_sym_lambda, z);
      env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), ((SCM) (((20) << 9) + 0x174L)), env);
      break;
    case (127 & ((scm_t_bits) (((SCM) (((11) << 9) + ((11) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_quote, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((12) << 9) + ((12) << 3) + 4L))))):
      ls = z = scm_cons (scm_sym_set_x, ((SCM) (((21) << 9) + 0x174L)));
      break;
    case (127 & ((scm_t_bits) (((SCM) (((13) << 9) + ((13) << 3) + 4L))))):
      {
        SCM n;
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        n = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        z = scm_cons (n, ((SCM) (((21) << 9) + 0x174L)));
        ls = scm_cons (scm_sym_define, z);
        if (!((((scm_t_bits) ((env))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          env = scm_cons (scm_cons (scm_cons (n, (((scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)])))))))),
                                    (((scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(1)])))))))),
                          (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)]))))))));
        break;
      }
    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + 0x74L))))):
      z = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!((0x187 & ((scm_t_bits) (z))) == 4))
        goto unmemo;
      switch ((((scm_t_bits) (z)) >> 9))
        {
        case ((((scm_t_bits) (((SCM) (((14) << 9) + 0x74L)))) >> 9)):
          ls = z = scm_cons (scm_sym_atapply, ((SCM) (((21) << 9) + 0x174L)));
          goto loop;
        case ((((scm_t_bits) (((SCM) (((15) << 9) + 0x74L)))) >> 9)):
          ls = z = scm_cons (scm_sym_atcall_cc, ((SCM) (((21) << 9) + 0x174L)));
          goto loop;
        case ((((scm_t_bits) (((SCM) (((27) << 9) + 0x74L)))) >> 9)):
          ls = z = scm_cons (scm_sym_delay, ((SCM) (((21) << 9) + 0x174L)));
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          goto loop;
        case ((((scm_t_bits) (((SCM) (((28) << 9) + 0x74L)))) >> 9)):
          ls = z = scm_cons (scm_sym_at_call_with_values, ((SCM) (((21) << 9) + 0x174L)));
          goto loop;
        default:
                                              ;
        }
    unmemo:
    default:
      ls = z = scm_unmemocar (scm_cons (unmemocopy ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env),
                                    ((SCM) (((21) << 9) + 0x174L))),
                          env);
    }
loop:
  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  while ((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
    {
      SCM form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!((0x187 & ((scm_t_bits) (form))) == 4))
        {
          SCM copy = scm_cons (unmemocopy (form, env), ((SCM) (((21) << 9) + 0x174L)));
          (((scm_assert_cell_valid (((z))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((z))))))) [(1)] = ((scm_t_bits) (((scm_unmemocar (copy, env))))))))));
          z = (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)])))))));
        }
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
    }
  (((scm_assert_cell_valid (((z))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((z))))))) [(1)] = ((scm_t_bits) (((x)))))))));

  if (!((((scm_t_bits) ((p))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
    do { register SCM w = (scm_sys_protects[13]); (((scm_assert_cell_valid (((scm_hash_fn_create_handle_x (w, ls, ((SCM) (((21) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0)))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_hash_fn_create_handle_x (w, ls, ((SCM) (((21) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0)))))))) [(1)] = ((scm_t_bits) (((p))))))))); } while (0);

  return ls;
}


SCM
scm_unmemocopy (SCM x, SCM env)
{
  if (!((((scm_t_bits) ((env))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))


    return unmemocopy (x, scm_cons ((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))), (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)])))))))));
  else
    return unmemocopy (x, env);
}


int
scm_badargsp (SCM formals, SCM args)
{
  while (!((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      if (!(!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0)))
        return 0;
      if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        return 1;
      formals = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))));
      args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
    }
  return !((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) ? 1 : 0;
}


static int
scm_badformalsp (SCM closure, int n)
{
  SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((closure)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((closure)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((closure)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((closure)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((closure)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((closure)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((closure)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((closure)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));
  while (!((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      if (!(!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0)))
        return 0;
      if (n == 0)
        return 1;
      --n;
      formals = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))));
    }
  return n;
}


SCM
scm_eval_args (SCM l, SCM env, SCM proc)
{
  SCM results = ((SCM) (((20) << 9) + 0x174L)), *lloc = &results, res;
  while ((!(6 & ((scm_t_bits) (l))) && ((1 & (scm_assert_cell_valid ((l)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))) == 0)))
    {
      res = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)!
))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (l, env, 1) : scm_ceval ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))), env)));

      *lloc = scm_list_1 (res);
      lloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*lloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*lloc))))))) [(1)])))));
      l = (((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(1)])))))));
    }
  if (!((((scm_t_bits) ((l))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    scm_wrong_num_args (proc);
  return results;
}

SCM
scm_eval_body (SCM code, SCM env)
{
  SCM next;
 again:
  next = (((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(1)])))))));
  while (!((((scm_t_bits) ((next))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      if ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))))
        {
          if (((0x187 & ((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) == 4))
            {
              code = scm_m_expand_body (code, env);
              goto again;
            }
        }
      else
        ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) ? (((((scm_t_bits) (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)]))))))))) : (*scm_ceval_ptr) (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))), (env)));
      code = next;
      next = (((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(1)])))))));
    }
  return ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm!
_t_cell *) (((scm_t_bits) ((code)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (code, env, 1) : (*scm_ceval_ptr) ((((scm_assert_cell_valid ((code)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((code)))))) [(0)]))))))), env)));
}
# 1855 "eval.c"
SCM
scm_ceval (SCM x, SCM env)
{
  SCM proc, arg1;
# 1877 "eval.c"
  if (scm_stack_checking_enabled_p
      && ((SCM_STACKITEM *) &proc < ((SCM_STACKITEM *) ((((scm_t_contregs *) (scm_assert_cell_valid (((scm_root->rootcont))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_root->rootcont))))))) [(1)])))))->base) - scm_debug_opts[12].val)))
    {




      scm_report_stack_overflow ();
    }






loop:
# 1956 "eval.c"
  do { do { if (scm_asyncs_pending_p) scm_async_click (); } while (0); ; } while (0);
  switch ((0x7f & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))
    {
    case 5:

      x = scm_cons (x, ((SCM) (((18) << 9) + 0x174L)));
      do { return *scm_lookupcar (x, env, 1); } while (0);

    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + ((0) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((!
scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
          if (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
            do { return ((SCM) (((16) << 9) + 0x174L)); } while (0);
          else
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }
      ;
      goto carloop;

    case (127 & ((scm_t_bits) (((SCM) (((1) << 9) + ((1) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);

      ;

    begin:


      if ((!(6 & ((scm_t_bits) (env))) && ((1 & (scm_assert_cell_valid ((env)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))) == 0)) && !(!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)])))) == 0)))
        {
          do { SCM p = scm_current_module_lookup_closure (); if (p != (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))) env = scm_top_level_env (p); } while (0);
          while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            {
              ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((!
x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
              do { SCM p = scm_current_module_lookup_closure (); if (p != (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))) env = scm_top_level_env (p); } while (0);
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
          goto carloop;
        }
      else
        goto nontoplevel_begin;

    nontoplevel_begin:
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
          if ((6 & ((scm_t_bits) (form))))
            {
              if (((0x187 & ((scm_t_bits) (form))) == 4))
                {
                  x = scm_m_expand_body (x, env);
                  goto nontoplevel_begin;
                }
              else
                do { if ((((scm_t_bits) ((form))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))); } while (0);
            }
          else
            scm_ceval (form, env);
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }

    carloop:
      {

        SCM last_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));

        if ((!(6 & ((scm_t_bits) (last_form))) && ((1 & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 0)))
          {

            x = last_form;
            goto loop;
          }
        else if ((6 & ((scm_t_bits) (last_form))))
          do { return (((((scm_t_bits) (last_form)) & 0xff)==scm_tc8_iloc) ? *scm_ilookup ((last_form), env) : (((((scm_t_bits) ((last_form))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), (last_form))); } while (0);
        else if ((!(6 & ((scm_t_bits) (last_form))) && (0x7f & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 7))
          do { return (scm_assert_cell_valid ((last_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(1)]))))); } while (0);
        else if ((!(6 & ((scm_t_bits) (last_form))) && ((0x7f & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 5)))
          do { return *scm_lookupcar (x, env, 1); } while (0);
        else
          do { return last_form; } while (0);
      }


    case (127 & ((scm_t_bits) (((SCM) (((2) << 9) + ((2) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM key = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits!
) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        while (!((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          {
            SCM clause = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
            SCM labels = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))));
            if ((((scm_t_bits) (labels)) == ((scm_t_bits) (scm_sym_else))))
              {
                x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                ;
                goto begin;
              }
            while (!((((scm_t_bits) ((labels))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
              {
                SCM label = (((scm_assert_cell_valid ((labels)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((labels)))))) [(0)])))))));
                if ((((scm_t_bits) (label)) == ((scm_t_bits) (key))) || !((((scm_t_bits) ((scm_eqv_p (label, key)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
                  {
                    x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                    ;
                    goto begin;
                  }
                labels = (((scm_assert_cell_valid ((labels)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((labels)))))) [(1)])))))));
              }
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          }
      }
      do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((3) << 9) + ((3) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM clause = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
          if ((((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))) == ((scm_t_bits) (scm_sym_else))))
            {
              x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
              ;
              goto begin;
            }
          else
            {
              arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), (((!
(SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (clause, env, 1) : scm_ceval ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))), env)));
              if (!((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
                {
                  x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                  if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                    do { return arg1; } while (0);
                  else if (!(((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) == ((scm_t_bits) (scm_sym_arrow))))
                    {
                      ;
                      goto begin;
                    }
                  else
                    {
                      proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                      proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const!
 scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
                      if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;
                      ;
                      ;
                      if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)) && scm_badformalsp (proc, 1))
                        goto umwrongnumargs;
                      else
                        goto evap1;
                    }
                }
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
        }
      do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((4) << 9) + ((4) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {

        SCM init_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), init_values, env);
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
      {
        SCM test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        SCM body_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM step_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));

        SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((sc!
m_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_ceval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));

        while (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
          {
            {

              SCM temp_forms;
              for (temp_forms = body_forms;
                   !((((scm_t_bits) ((temp_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))));
                   temp_forms = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(1)]))))))))
                {
                  SCM form = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))));
# 2157 "eval.c"
                  if (!(6 & ((scm_t_bits) (form))))
                    scm_ceval (form, env);
                }
            }

            {

              SCM temp_forms;
              SCM step_values = ((SCM) (((20) << 9) + 0x174L));
              for (temp_forms = step_forms;
                   !((((scm_t_bits) ((temp_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))));
                   temp_forms = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(1)]))))))))
                {
                  SCM value = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_!
t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (temp_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))), env)));
                  step_values = scm_cons (value, step_values);
                }
              env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)]))))))), step_values, (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)]))))))));
            }

            test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((sc!
m_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_ceval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));
          }
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);
      ;
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((5) << 9) + ((5) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((sc!
m_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
        if (!((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        else
          {
            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
            if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
              do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);
          }
      }
      ;
      goto carloop;


    case (127 & ((scm_t_bits) (((SCM) (((7) << 9) + ((7) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM init_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        do
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
        env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), init_values, env);
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
      ;
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((9) << 9) + ((9) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), scm_sys_protects[2], env);
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM init_forms = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        do
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
        (((scm_assert_cell_valid ((((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))))))) [(1)] = ((scm_t_bits) (((init_values)))))))));
      }
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      ;
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((8) << 9) + ((8) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM bindings = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        if (((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          env = scm_acons (((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)), env);
        else
          {
            do
              {
                SCM name = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
                SCM init = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
                env = scm_acons (name, ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM!
) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init, env, 1) : scm_ceval ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))), env))), env);
                bindings = (((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(1)])))))));
              }
            while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
          }
      }
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      ;
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((10) << 9) + ((10) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM val = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
          if (!((((scm_t_bits) ((val))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((val))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
            do { return val; } while (0);
          else
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }
      ;
      goto carloop;


    case (127 & ((scm_t_bits) (((SCM) (((6) << 9) + ((6) << 3) + 4L))))):
      do { return scm_closure ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env); } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((11) << 9) + ((11) << 3) + 4L))))):
      do { return (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)]))))))); } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((12) << 9) + ((12) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM *location;
        SCM variable = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        if (((((scm_t_bits) (variable)) & 0xff)==scm_tc8_iloc))
          location = scm_ilookup (variable, env);
        else if ((!(6 & ((scm_t_bits) (variable))) && (0x7f & (scm_assert_cell_valid ((variable)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((variable)))))) [(0)])))) == 7))
          location = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((variable))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((variable))))))) [(1)])))));
        else
          location = scm_lookupcar (x, env, 1);
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        *location = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
      }
      do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((13) << 9) + ((13) << 3) + 4L))))):
      scm_misc_error (((void *)0), "Bad define placement", ((SCM) (((20) << 9) + 0x174L)));



    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + 0x74L))))):
      proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!(((0x187 & ((scm_t_bits) (proc))) == 4))) goto badfun;
      switch ((((scm_t_bits) (proc)) >> 9))
        {


        case ((((scm_t_bits) (((SCM) (((14) << 9) + 0x74L)))) >> 9)):
          proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits !
*) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
          if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;
          if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
            {
              ;
              arg1 = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
              arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_b!
its *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (arg1, env, 1) : scm_ceval ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), env)));
            apply_closure:



              {
                SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));



                if (scm_badargsp (formals, arg1))
                  scm_wrong_num_args (proc);
                ;

                if ((((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
                  env = scm_acons (formals, ((SCM) (((20) << 9) + 0x174L)), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
                else
                  {
                    SCM args = scm_list_1 ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))));
                    SCM tail = args;
                    arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                    while (!(((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
                      {
                        SCM new_tail = scm_list_1 ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))));
                        (((scm_assert_cell_valid (((tail))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tail))))))) [(1)] = ((scm_t_bits) (((new_tail)))))))));
                        tail = new_tail;
                        arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                      }
                    env = scm_acons (formals, args, (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
                  }

                x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
                goto nontoplevel_begin;
              }
            }
          else
            {
              proc = scm_f_apply;
              goto evapply;
            }


        case ((((scm_t_bits) (((SCM) (((15) << 9) + 0x74L)))) >> 9)):
          {
            int first;
            SCM val = scm_make_continuation (&first);

            if (!first)
              do { return val; } while (0);
            else
              {
                arg1 = val;
                proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                proc = scm_eval_car (proc, env);
                if (!((!(6 & ((scm_t_bits) (proc)))))) goto badfun;
                ;
                ;
                if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)) && scm_badformalsp (proc, 1))
                  goto umwrongnumargs;
                goto evap1;
              }
          }


        case ((((scm_t_bits) (((SCM) (((27) << 9) + 0x74L)))) >> 9)):
          do { return scm_makprom (scm_closure ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env)); } while (0);


        case ((((scm_t_bits) (((SCM) (((22) << 9) + 0x74L)))) >> 9)):
          {



            SCM operand_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
            ;
            if (((((scm_t_bits) (operand_forms)) & 0xff)==scm_tc8_iloc))
              arg1 = *scm_ilookup (operand_forms, env);
            else if ((!(6 & ((scm_t_bits) (operand_forms))) && (0x7f & (scm_assert_cell_valid ((operand_forms)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))) == 7))
              arg1 = (scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))));
            else if (!(!(6 & ((scm_t_bits) (operand_forms))) && ((1 & (scm_assert_cell_valid ((operand_forms)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))) == 0)))
              arg1 = *scm_lookupcar ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env, 1);
            else
              {
                SCM tail = arg1 = scm_list_1 (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operan!
d_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (operand_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))), env))));
                operand_forms = (((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))))));
                while (!((((scm_t_bits) ((operand_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                  {
                    SCM new_tail = scm_list_1 (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((opera!
nd_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (operand_forms, env, 1) : scm_ceval ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))), env))));
                    (((scm_assert_cell_valid (((tail))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tail))))))) [(1)] = ((scm_t_bits) (((new_tail)))))))));
                    tail = new_tail;
                    operand_forms = (((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))))));
                  }
              }
          }




        type_dispatch:
# 2440 "eval.c"
        {
            unsigned long int specializers;
            unsigned long int hash_value;
            unsigned long int cache_end_pos;
            unsigned long int mask;
            SCM method_cache;

            {
              SCM z = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
              SCM tmp = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
              specializers = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) >> (2)));






              if ((2 & ((scm_t_bits) (tmp))))
                {
# 2474 "eval.c"
                  unsigned long int hashset = ((((scm_t_signed_bits) ((scm_t_bits) (tmp))) >> (2)));
                  unsigned long int counter = specializers + 1;
                  SCM tmp_arg = arg1;
                  hash_value = 0;
                  while (!((((scm_t_bits) ((tmp_arg))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) && counter != 0)
                    {
                      SCM class = scm_class_of ((((scm_assert_cell_valid ((tmp_arg)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp_arg)))))) [(0)]))))))));
                      hash_value += (((scm_t_bits *) (scm_assert_cell_valid ((class)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((class)))))) [(1)])))) [6 + (hashset)]);
                      tmp_arg = (((scm_assert_cell_valid ((tmp_arg)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp_arg)))))) [(1)])))))));
                      counter--;
                    }
                  z = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(1)])))))));
                  method_cache = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
                  mask = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) >> (2)));
                  hash_value &= mask;
                  cache_end_pos = hash_value;
                }
              else
                {



                  method_cache = tmp;
                  mask = (unsigned long int) ((long) -1);
                  hash_value = 0;
                  cache_end_pos = (((unsigned long) (scm_assert_cell_valid ((method_cache)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((method_cache)))))) [(0)])))) >> 8);
                }
            }

            {
# 2512 "eval.c"
              SCM z;
              do
                {
                  SCM args = arg1;
                  z = ((const SCM *) (scm_assert_cell_valid ((method_cache)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((method_cache)))))) [(1)]))))[hash_value];
                  while (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                    {

                      SCM class_of_arg = scm_class_of ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))));
                      if (!(((scm_t_bits) (class_of_arg)) == ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))))
                        goto next_method;
                      args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
                      z = (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)])))))));
                    }

                  if (((((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || (!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))))))))) [(0)])))) == 0)))
                    goto apply_cmethod;
                next_method:
                  hash_value = (hash_value + 1) & mask;
                } while (hash_value != cache_end_pos);


              z = scm_memoize_method (x, arg1);

            apply_cmethod:
              {
                SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
                env = scm_acons (formals, arg1, (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))));
                x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(1)])))))));
                goto nontoplevel_begin;
              }
            }
          }


        case ((((scm_t_bits) (((SCM) (((23) << 9) + 0x74L)))) >> 9)):
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          {
            SCM instance = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s!
cm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
            unsigned long int slot = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))))))) >> (2)));
            do { return ((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((instance)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((instance)))))) [(1)])))) [slot])); } while (0);
          }


        case ((((scm_t_bits) (((SCM) (((24) << 9) + 0x74L)))) >> 9)):
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          {
            SCM instance = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s!
cm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
            unsigned long int slot = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))))))) >> (2)));
            SCM value = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm!
_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((!
(((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM!
) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((sc!
m_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM)!
 (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))!
)))))) [(0)])))) == 5)) ? *scm_lookupcar ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))), env, 1) : scm_ceval ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))!
) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))), env)));
            ((scm_t_bits *) (scm_assert_cell_valid ((instance)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((instance)))))) [(1)])))) [slot] = ((scm_t_bits) (value));
            do { return ((SCM) (((21) << 9) + 0x174L)); } while (0);
          }




        case ((((scm_t_bits) (((SCM) (((25) << 9) + 0x74L)))) >> 9)):
          {
            SCM test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            x = (((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(1)])))))));
            while (!(((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
              {
                SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits!
) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_ceval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));
                if (!(((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))
                      || (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))))
                  {
                    if ((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) == ((scm_t_bits) (((SCM) (((21) << 9) + 0x174L))))))
                      do { return test_result; } while (0);
                    ;
                    goto carloop;
                  }
                else
                  {
                    test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                    x = (((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(1)])))))));
                  }
              }
            x = test_form;
            ;
            goto carloop;
          }



        case ((((scm_t_bits) (((SCM) (((26) << 9) + 0x74L)))) >> 9)):
          {
            SCM vars, exps, vals;

            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            vars = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))))));
            exps = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)])))))));

            vals = ((SCM) (((20) << 9) + 0x174L));

            while ((!(6 & ((scm_t_bits) (exps)))))
              {
                vals = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((c!
onst scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (exps, env, 1) : scm_ceval ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))), env))), vals);
                exps = (((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(1)])))))));
              }

            scm_swap_bindings (vars, vals);
            (scm_root->dynwinds) = scm_acons (vars, vals, (scm_root->dynwinds));


            for (x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))); !((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))); x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))
              {
                if ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 0)))
                  scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
              }
            proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bit!
s) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));

            (scm_root->dynwinds) = (((scm_assert_cell_valid (((scm_root->dynwinds))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_root->dynwinds))))))) [(1)])))))));
            scm_swap_bindings (vars, vals);

            do { return proc; } while (0);
          }


        case ((((scm_t_bits) (((SCM) (((28) << 9) + 0x74L)))) >> 9)):
          {
            proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            x = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *!
) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
            proc = (((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))));
            proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bit!
s *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
            arg1 = scm_apply (x, ((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)));
            if (((!(6 & ((scm_t_bits) (arg1))) && ((7 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 1)) && (((scm_t_bits) (scm_struct_vtable (arg1))) == ((scm_t_bits) (scm_values_vtable)))))
              arg1 = scm_struct_ref (arg1, ((((SCM) ((((scm_t_signed_bits) (0)) << 2) + 2)))));
            else
              arg1 = scm_list_1 (arg1);
            if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              {
                ;
                goto apply_closure;
              }
            return scm_apply (proc, arg1, ((SCM) (((20) << 9) + 0x174L)));
          }


        default:
          goto badfun;
        }

    default:
      proc = x;
    badfun:
      scm_misc_error (((void *)0), "Wrong type to apply: ~S", scm_list_1 (proc));
    case 13:
    case 15:

    case 71:
    case 77:
    case 55:
    case 79:
    case 37:
    case 45:
    case 47:
    case 53:

    case 29:


    case 21:
    case 127:
    case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
    case 63:
    case 31:
    case 103:case 85:case 87:case 93: case 95:case 101:case 69:case 109: case 111:case 117:case 119:
    case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
      do { return x; } while (0);

    case 7:
      do { return (scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))); } while (0);

    case (127 & ((scm_t_bits) (((SCM) (((0L) << 8) + scm_tc8_iloc))))):
      proc = *scm_ilookup ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
      if (!((!(6 & ((scm_t_bits) (proc)))))) goto badfun;
      goto checkargs;

    case 0:case 8:case 16:case 24: case 32:case 40:case 48:case 56: case 64:case 72:case 80:case 88: case 96:case 104:case 112:case 120:
      if ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)))
        {
          SCM orig_sym = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
# 2706 "eval.c"
          proc = *scm_lookupcar (x, env, 1);


          if ((6 & ((scm_t_bits) (proc))))
            {
              (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((orig_sym)))))))));

              goto badfun;
            }
          if ((!(6 & ((scm_t_bits) ((proc)))) && (0xffff & (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(0)])))) == (scm_tc16_macro)))
            {
              (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((orig_sym)))))))));

            handle_a_macro:





              arg1 = scm_apply ((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), x,
                                  scm_cons (env, scm_sys_protects[1]));




              switch (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 16))
                {
                case 2:
                  if (scm_ilength (arg1) <= 0)
                    arg1 = scm_list_2 (((SCM) (((1) << 9) + ((1) << 3) + 4L)), arg1);
# 2750 "eval.c"
                  do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
                  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))))))))));
                  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)]))))))))))))))));
                  do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
                  ;
                  goto loop;

                case 1:
                  x = arg1;
                  if ((!(6 & ((scm_t_bits) (x)))))
                    {
                      ;
                      goto loop;
                    }
                  else
                    do { return arg1; } while (0);

                case 0:
                  do { return arg1; } while (0);
                }
            }
        }
      else
        proc = scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
      if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;

    checkargs:
      if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
        {
          SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));
          SCM args = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          while (!((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            {
              if (!(!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0)))
                goto evapply;
              if ((6 & ((scm_t_bits) (args))))
                goto umwrongnumargs;
              formals = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))));
              args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
            }
          if (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            goto umwrongnumargs;
        }
      else if ((!(6 & ((scm_t_bits) ((proc)))) && (0xffff & (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(0)])))) == (scm_tc16_macro)))
        goto handle_a_macro;
    }


evapply:
  ;
  if (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))) {
    ;
  evap0:
    switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
      {
      case 85:
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (); } while (0);
      case 109:
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((18) << 9) + 0x174L))); } while (0);
      case 119:
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((20) << 9) + 0x174L))); } while (0);
      case 69:
        do { return ((SCM) (((17) << 9) + 0x174L)); } while (0);
      case 103:
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((18) << 9) + 0x174L)), ((SCM) (((18) << 9) + 0x174L))); } while (0);
      case 127:
        if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
          goto badfun;
        do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_0 (proc)); } while (0);
      case 63:
        arg1 = proc;
        proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));




        goto evap1;
      case 31:
        proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));



        if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
          goto evap0;
        if (scm_badformalsp (proc, 0))
          goto umwrongnumargs;
      case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
        x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
        env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), ((SCM) (((20) << 9) + 0x174L)), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bit!
s) ((proc)))))) [(1)]))))));
        goto nontoplevel_begin;
      case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
        if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
          {
            x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));
            arg1 = ((SCM) (((20) << 9) + 0x174L));
            goto type_dispatch;
          }
        else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
          goto badfun;
        else
          {
            arg1 = proc;
            proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                    ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                    : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));




            if ((!(6 & ((scm_t_bits) (proc)))))
              goto evap1;
            else
              goto badfun;
          }
      case 87:
      case 101:
      case 111:
      case 93:
      case 95:
      case 117:
      umwrongnumargs:
        scm_unmemocar (x, env);
        scm_wrong_num_args (proc);
      default:

        goto badfun;
      }
  }


  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  if ((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
    arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x))!
)))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
  else
    scm_wrong_num_args (proc);



  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  {
    SCM arg2;
    if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
      {
        ;
      evap1:
        switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
          {
          case 111:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L))); } while (0);
          case 87:
          case 109:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1); } while (0);
          case 93:
            if (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))
              {
                if ((2 & ((scm_t_bits) (arg1))))
                  {
                    do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((double) ((((scm_t_signed_bits) ((scm_t_bits) (arg1))) >> (2))))); } while (0);
                  }
                else if ((!(6 & ((scm_t_bits) (arg1))) && (0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 2 * 256L)))
                  {
                    do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((((scm_t_double *) ((scm_t_cell *) (((scm_t_bits) (arg1)))))->real))); } while (0);
                  }

                else if ((!(6 & ((scm_t_bits) (arg1))) && ((0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 1 * 256L))))
                  {
                    do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_i_big2dbl (arg1))); } while (0);
                  }

                return (((scm_t_bits) (*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic))) ? scm_call_generic_1 ((*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic)), (arg1)) : (scm_wrong_type_arg ((((char *) ((scm_assert_cell_valid ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))))))) [(1)])))))), (1), (arg1)), ((SCM) (((21) << 9) + 0x174L))));

              }
            proc = ((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name);
            {
              char *chrs = ((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))) + (((unsigned long) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8) - 1;
              while ('c' != *--chrs)
                {
                  if (!((!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))) scm_wrong_type_arg (((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), 1, arg1);

                  arg1 = ('a' == *chrs) ? (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))) : (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                }
              do { return arg1; } while (0);
            }
          case 69:
            do { return ((SCM) (((17) << 9) + 0x174L)); } while (0);
          case 103:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L))); } while (0);
          case 119:



            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_list_1 (arg1)); } while (0);

          case 127:
            if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
              goto badfun;
            do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_1 (proc, (arg1))); } while (0);
          case 63:
            arg2 = arg1;
            arg1 = proc;
            proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));




            goto evap2;
          case 31:
            proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));



            if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              goto evap1;
            if (scm_badformalsp (proc, 1))
              goto umwrongnumargs;
          case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:

            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));



            env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), scm_list_1 (arg1), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc!
)))))) [(1)]))))));

            goto nontoplevel_begin;
          case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
            if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
              {
                x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));



                arg1 = scm_list_1 (arg1);

                goto type_dispatch;
              }
            else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
              goto badfun;
            else
              {
                arg2 = arg1;
                arg1 = proc;
                proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                        ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                        : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));




                if ((!(6 & ((scm_t_bits) (proc)))))
                  goto evap2;
                else
                  goto badfun;
              }
          case 101:
          case 85:
          case 95:
          case 117:
            scm_wrong_num_args (proc);
          default:
            goto badfun;
          }
      }
    if ((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
      arg2 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x!
)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
    else
      scm_wrong_num_args (proc);

    {



      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))) {
        ;
      evap2:
        switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
          {
          case 101:
          case 111:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2); } while (0);
          case 119:



            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_list_2 (arg1, arg2)); } while (0);

          case 117:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, ((SCM) (((20) << 9) + 0x174L))); } while (0);
          case 69:
          case 103:
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2); } while (0);
          case 127:
            if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
              goto badfun;
            do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_2 (proc, (arg1), (arg2))); } while (0);
          cclon:
          case 63:





            do { return scm_apply (((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0])))), scm_cons2 (proc, arg1, scm_cons (arg2, scm_eval_args (x, env, proc))), ((SCM) (((20) << 9) + 0x174L))); } while (0);







          case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
            if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
              {
                x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));



                arg1 = scm_list_2 (arg1, arg2);

                goto type_dispatch;
              }
            else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
              goto badfun;
            else
              {
              operatorn:







                do { return scm_apply ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0) ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5]))) : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure), scm_cons2 (proc, arg1, scm_cons (arg2, scm_eval_args (x, env, proc))), ((SCM) (((20) << 9) + 0x174L))); } while (0);
# 3093 "eval.c"
              }
          case 85:
          case 93:
          case 109:
          case 87:
          case 95:
            scm_wrong_num_args (proc);
          default:
            goto badfun;
          case 31:
            proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));



            if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              goto evap2;
            if (scm_badformalsp (proc, 2))
              goto umwrongnumargs;
          case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:






            env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))),
                              scm_list_2 (arg1, arg2), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));

            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
            goto nontoplevel_begin;
          }
      }
      if (!(!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
        scm_wrong_num_args (proc);





      ;
    evap3:
      switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
        {
# 3193 "eval.c"
        case 95:
          if (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            scm_wrong_num_args (proc);
          else
            do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (!
(x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)))); } while (0);
        case 103:
          arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2);
          do
            {
              arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))(arg1, ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [!
(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env))));
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
          while ((!(6 & ((scm_t_bits) (x)))));
          do { return arg1; } while (0);
        case 69:
          if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
            do { return ((SCM) (((16) << 9) + 0x174L)); } while (0);
          do
            {
              arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_b!
its) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_ceval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
              if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg2, arg1)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
                do { return ((SCM) (((16) << 9) + 0x174L)); } while (0);
              arg2 = arg1;
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
          while ((!(6 & ((scm_t_bits) (x)))));
          do { return ((SCM) (((17) << 9) + 0x174L)); } while (0);
        case 117:
          do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, scm_eval_args (x, env, proc)); } while (0);
        case 119:
          do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_cons2 (arg1, arg2, scm_eval_args (x, env, proc))); } while (0);


        case 127:
          if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
            goto badfun;
          do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_3 (proc, (arg1), (arg2), (scm_eval_args (x, env, proc)))); } while (0);

        case 63:
          goto cclon;
        case 31:
          proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));
          if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
            goto evap3;
          {
            SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));
            if (((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
                || ((!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0))
                    && (((((scm_t_bits) (((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
                        || ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)]))))))))))))) [(0)])))) == 0))
                            && scm_badargsp ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)]))))))))))))) [(1)]))))))), x)))))
              goto umwrongnumargs;
          }
        case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:



          env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))),
                            scm_cons2 (arg1,
                                       arg2,
                                       scm_eval_args (x, env, proc)),
                            (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
          x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
          goto nontoplevel_begin;

        case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
          if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
            {



              arg1 = scm_cons2 (arg1, arg2, scm_eval_args (x, env, proc));

              x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));
              goto type_dispatch;
            }
          else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
            goto badfun;
          else
            goto operatorn;
        case 101:
        case 109:
        case 111:
        case 85:
        case 93:
        case 87:
          scm_wrong_num_args (proc);
        default:
          goto badfun;
        }
    }
  }
# 3314 "eval.c"
}
# 3326 "eval.c"
SCM
scm_call_0 (SCM proc)
{
  return scm_apply (proc, ((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)));
}

SCM
scm_call_1 (SCM proc, SCM arg1)
{
  return scm_apply (proc, arg1, scm_sys_protects[1]);
}

SCM
scm_call_2 (SCM proc, SCM arg1, SCM arg2)
{
  return scm_apply (proc, arg1, scm_cons (arg2, scm_sys_protects[1]));
}

SCM
scm_call_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3)
{
  return scm_apply (proc, arg1, scm_cons2 (arg2, arg3, scm_sys_protects[1]));
}

SCM
scm_call_4 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4)
{
  return scm_apply (proc, arg1, scm_cons2 (arg2, arg3,
                                           scm_cons (arg4, scm_sys_protects[1])));
}




SCM
scm_apply_0 (SCM proc, SCM args)
{
  return scm_apply (proc, args, ((SCM) (((20) << 9) + 0x174L)));
}

SCM
scm_apply_1 (SCM proc, SCM arg1, SCM args)
{
  return scm_apply (proc, scm_cons (arg1, args), ((SCM) (((20) << 9) + 0x174L)));
}

SCM
scm_apply_2 (SCM proc, SCM arg1, SCM arg2, SCM args)
{
  return scm_apply (proc, scm_cons2 (arg1, arg2, args), ((SCM) (((20) << 9) + 0x174L)));
}

SCM
scm_apply_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM args)
{
  return scm_apply (proc, scm_cons (arg1, scm_cons2 (arg2, arg3, args)),
                    ((SCM) (((20) << 9) + 0x174L)));
}
# 3404 "eval.c"
static const char s_scm_nconc2last [] = "apply:nconc2last"; SCM scm_nconc2last (SCM lst)
# 3414 "eval.c"
{
  SCM *lloc;
  do { if (!(scm_ilength (lst) > 0)) scm_wrong_type_arg (s_scm_nconc2last, 1, lst); } while (0);
  lloc = &lst;
  while (!((((scm_t_bits) (((((scm_assert_cell_valid ((*lloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*lloc)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))




    lloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*lloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*lloc))))))) [(1)])))));
  if (!(scm_ilength ((((scm_assert_cell_valid ((*lloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*lloc)))))) [(0)])))))))) >= 0)) scm_wrong_type_arg (s_scm_nconc2last, 1, lst);
  *lloc = (((scm_assert_cell_valid ((*lloc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((*lloc)))))) [(0)])))))));
  return lst;
}
# 3460 "eval.c"
SCM
scm_apply (SCM proc, SCM arg1, SCM args)
{
# 3474 "eval.c"
  if (scm_debug_mode)
    return scm_dapply (proc, arg1, args);



  if (!((!(6 & ((scm_t_bits) (proc)))))) goto badproc;
# 3493 "eval.c"
  if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          arg1 = ((SCM) (((18) << 9) + 0x174L));



        }
      else
        {



          args = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
          arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))));
        }
    }
  else
    {
      args = scm_nconc2last (args);



    }
# 3539 "eval.c"
tail:
  switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
    {
    case 111:
      args = ((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) ? ((SCM) (((18) << 9) + 0x174L)) : (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
      do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, args); } while (0);
    case 101:
      if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || !((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
      args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
      do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, args); } while (0);
    case 85:
      if (!((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
      else
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (); } while (0);
    case 87:
      if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
    case 109:
      if (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
      else
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1); } while (0);
    case 93:
      if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) || !((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
      if (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))
        {
          if ((2 & ((scm_t_bits) (arg1))))
            {
              do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((double) ((((scm_t_signed_bits) ((scm_t_bits) (arg1))) >> (2))))); } while (0);
            }
          else if ((!(6 & ((scm_t_bits) (arg1))) && (0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 2 * 256L)))
            {
              do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((((scm_t_double *) ((scm_t_cell *) (((scm_t_bits) (arg1)))))->real))); } while (0);
            }

          else if ((!(6 & ((scm_t_bits) (arg1))) && ((0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 1 * 256L))))
            do { return scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_i_big2dbl (arg1))); } while (0);

          return (((scm_t_bits) (*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic))) ? scm_call_generic_1 ((*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic)), (arg1)) : (scm_wrong_type_arg ((((char *) ((scm_assert_cell_valid ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))))))) [(1)])))))), (1), (arg1)), ((SCM) (((21) << 9) + 0x174L))));

        }
      proc = ((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name);
      {
        char *chrs = ((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))) + (((unsigned long) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8) - 1;
        while ('c' != *--chrs)
          {
            if (!((!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))) scm_wrong_type_arg (((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), 1, arg1);

            arg1 = ('a' == *chrs) ? (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))) : (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
          }
        do { return arg1; } while (0);
      }
    case 95:
      if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
          || ((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
          || !((((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        scm_wrong_num_args (proc);
      else
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))), (((scm_assert_cell_valid (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))))))) [(0)])))))))); } while (0);
    case 119:



      do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_cons (arg1, args)); } while (0);

    case 117:
      if (!(!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))
        scm_wrong_num_args (proc);
      else
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))), (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))); } while (0);
    case 103:
      if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L))); } while (0);
      while ((!(6 & ((scm_t_bits) (args)))))
        {
          if (!((!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))) scm_wrong_type_arg ("apply", 2, args);
          arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))));
          args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
        }
      do { return arg1; } while (0);
    case 69:
      if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((SCM) (((17) << 9) + 0x174L)); } while (0);
      while ((!(6 & ((scm_t_bits) (args)))))
        {
          if (!((!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))) scm_wrong_type_arg ("apply", 2, args);
          if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))))))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
            do { return ((SCM) (((16) << 9) + 0x174L)); } while (0);
          arg1 = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
          args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
        }
      do { return ((SCM) (((17) << 9) + 0x174L)); } while (0);
    case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:



      arg1 = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_cons (arg1, args));

      if (scm_badargsp ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), arg1))
        scm_wrong_num_args (proc);


      if ((6 & ((scm_t_bits) (arg1))))
        args = arg1;
      else
        {
          SCM tl = args = scm_cons ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), ((SCM) (((21) << 9) + 0x174L)));
          while (arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)]))))))), (!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))
            {
              (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((scm_cons ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), ((SCM) (((21) << 9) + 0x174L))))))))))));

              tl = (((scm_assert_cell_valid ((tl)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tl)))))) [(1)])))))));
            }
          (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((arg1)))))))));
        }

      args = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), args, (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
      proc = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
    again:
      arg1 = proc;
      while (!((((scm_t_bits) ((arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          if ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))))
            {
              if (((0x187 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == 4))
                {
                  proc = scm_m_expand_body (proc, args);
                  goto again;
                }
              else
                do { if ((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))); } while (0);
            }
          else
            scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), args);
          proc = arg1;
        }
      do { return ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), args) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bit!
s *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, args, 1) : scm_ceval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), args))); } while (0);
    case 127:
      if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
        goto badproc;
      if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
        do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_0 (proc)); } while (0);
      else if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_1 (proc, (arg1))); } while (0);
      else if (((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_2 (proc, (arg1), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))))))); } while (0);
      else
        do { return ((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_3 (proc, (arg1), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))))), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))); } while (0);
    case 63:







      args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_cons (arg1, args));
      arg1 = proc;
      proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));

      goto tail;
    case 31:
      proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));



      goto tail;
    case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
      if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
        {



          args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_cons (arg1, args));

          do { return scm_apply_generic (proc, args); } while (0);
        }
      else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
        goto badproc;
      else
        {



          args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : scm_cons (arg1, args));

          arg1 = proc;
          proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                  ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                  : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));




          if ((!(6 & ((scm_t_bits) (proc)))))
            goto tail;
          else
            goto badproc;
        }
    default:
    badproc:
      scm_wrong_type_arg ("apply", 1, proc);
    }
# 3774 "eval.c"
}
# 3787 "eval.c"
static inline void
check_map_args (SCM argv,
                long len,
                SCM gf,
                SCM proc,
                SCM args,
                const char *who)
{
  SCM const *ve = ((const SCM *) (scm_assert_cell_valid ((argv)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((argv)))))) [(1)]))));
  long i;

  for (i = (((unsigned long) (scm_assert_cell_valid ((argv)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((argv)))))) [(0)])))) >> 8) - 1; i >= 1; i--)
    {
      long elt_len = scm_ilength (ve[i]);

      if (elt_len < 0)
        {
          if (gf)
            scm_apply_generic (gf, scm_cons (proc, args));
          else
            scm_wrong_type_arg (who, i + 2, ve[i]);
        }

      if (elt_len != len)
        scm_out_of_range (who, ve[i]);
    }

  scm_remember_upto_here_1 (argv);
}


static const char s_map[]="map";static SCM g_map;
# 3827 "eval.c"
SCM
scm_map (SCM proc, SCM arg1, SCM args)

{
  long i, len;
  SCM res = ((SCM) (((20) << 9) + 0x174L));
  SCM *pres = &res;
  SCM const *ve = &args;

  len = scm_ilength (arg1);
  if (!(len >= 0)) return (((scm_t_bits) ((g_map))) ? scm_apply_generic (((g_map)), ((scm_cons2 (proc, arg1, args)))) : (scm_wrong_type_arg (((s_map)), ((2)), scm_list_ref (((scm_cons2 (proc, arg1, args))), (((SCM) ((((scm_t_signed_bits) (((2)) - 1)) << 2) + 2))))), ((SCM) (((21) << 9) + 0x174L))));

  do { if (0) { if (scm_ilength (args) < 0) { do { scm_misc_error (s_map, "Rest arguments do not form a proper list.", ((SCM) (((20) << 9) + 0x174L))); } while (0); } } } while (0);
  if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      while ((!(6 & ((scm_t_bits) (arg1)))))
        {
          *pres = scm_list_1 (scm_apply (proc, (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), scm_sys_protects[1]));
          pres = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*pres))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*pres))))))) [(1)])))));
          arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
        }
      return res;
    }
  args = scm_vector (arg1 = scm_cons (arg1, args));
  ve = ((const SCM *) (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))));
  check_map_args (args, len, g_map, proc, arg1, s_map);
  while (1)
    {
      arg1 = ((SCM) (((20) << 9) + 0x174L));
      for (i = (((unsigned long) (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) >> 8) - 1; i >= 0; i--)
        {
          if ((6 & ((scm_t_bits) (ve[i]))))
            return res;
          arg1 = scm_cons ((((scm_assert_cell_valid ((ve[i])), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ve[i])))))) [(0)]))))))), arg1);
          (((SCM*)(scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))[(i)] = ((((scm_assert_cell_valid ((ve[i])), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ve[i])))))) [(1)])))))))));
        }
      *pres = scm_list_1 (scm_apply (proc, arg1, ((SCM) (((20) << 9) + 0x174L))));
      pres = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*pres))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*pres))))))) [(1)])))));
    }
}



static const char s_for_each[]="for-each";static SCM g_for_each;

SCM
scm_for_each (SCM proc, SCM arg1, SCM args)

{
  SCM const *ve = &args;
  long i, len;
  len = scm_ilength (arg1);
  if (!(len >= 0)) return (((scm_t_bits) ((g_for_each))) ? scm_apply_generic (((g_for_each)), ((scm_cons2 (proc, arg1, args)))) : (scm_wrong_type_arg (((s_for_each)), ((2)), scm_list_ref (((scm_cons2 (proc, arg1, args))), (((SCM) ((((scm_t_signed_bits) (((2)) - 1)) << 2) + 2))))), ((SCM) (((21) << 9) + 0x174L))));

  do { if (0) { if (scm_ilength (args) < 0) { do { scm_misc_error (s_for_each, "Rest arguments do not form a proper list.", ((SCM) (((20) << 9) + 0x174L))); } while (0); } } } while (0);
  if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    {
      while ((!(6 & ((scm_t_bits) (arg1)))))
        {
          scm_apply (proc, (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), scm_sys_protects[1]);
          arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
        }
      return ((SCM) (((21) << 9) + 0x174L));
    }
  args = scm_vector (arg1 = scm_cons (arg1, args));
  ve = ((const SCM *) (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))));
  check_map_args (args, len, g_for_each, proc, arg1, s_for_each);
  while (1)
    {
      arg1 = ((SCM) (((20) << 9) + 0x174L));
      for (i = (((unsigned long) (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) >> 8) - 1; i >= 0; i--)
        {
          if ((6 & ((scm_t_bits) (ve[i]))))
            return ((SCM) (((21) << 9) + 0x174L));
          arg1 = scm_cons ((((scm_assert_cell_valid ((ve[i])), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ve[i])))))) [(0)]))))))), arg1);
          (((SCM*)(scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))[(i)] = ((((scm_assert_cell_valid ((ve[i])), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ve[i])))))) [(1)])))))))));
        }
      scm_apply (proc, arg1, ((SCM) (((20) << 9) + 0x174L)));
    }
}



SCM
scm_closure (SCM code, SCM env)
{
  SCM z;
  SCM closcar = scm_cons (code, ((SCM) (((20) << 9) + 0x174L)));
  z = scm_cell (((scm_t_bits) (closcar)) + 3, (scm_t_bits) env);
  scm_remember_upto_here (closcar);
  return z;
}


scm_t_bits scm_tc16_promise;

SCM
scm_makprom (SCM code)
{
  do { SCM __SCM_smob_answer; do { __SCM_smob_answer = scm_cell (((scm_tc16_promise)), (scm_t_bits) ((((scm_t_bits) (code))))); } while (0); return __SCM_smob_answer; } while (0);
}



static int
promise_print (SCM exp, SCM port, scm_print_state *pstate)
{
  int writingp = ((pstate)->writingp);
  scm_puts ("#<promise ", port);
  { (pstate)->writingp = (1); };
  scm_iprin1 ((scm_assert_cell_valid ((exp)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exp)))))) [(1)]))))), port, pstate);
  { (pstate)->writingp = (writingp); };
  scm_putc ('>', port);
  return !0;
}


static const char s_scm_force [] = "force"; SCM scm_force (SCM x)





{
  do { if (!((!(6 & ((scm_t_bits) (x))) && (0xffff & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == (scm_tc16_promise)))) scm_wrong_type_arg (s_scm_force, 1, x); } while (0);
  if (!((1L << 16) & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))
    {
      SCM ans = scm_call_0 ((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))));
      if (!((1L << 16) & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))
        {
          do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
          (scm_assert_cell_valid ((x)), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)] = ((scm_t_bits) ((ans))))));
          (scm_assert_cell_valid ((x)), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)] = (scm_t_bits) (((scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))) | (1L << 16))))));
          do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
        }
    }
  return (scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))));
}



static const char s_scm_promise_p [] = "promise?"; SCM scm_promise_p (SCM obj)




{
  return (((!(6 & ((scm_t_bits) (obj))) && (0xffff & (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))) == (scm_tc16_promise))) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L)));
}



static const char s_scm_cons_source [] = "cons-source"; SCM scm_cons_source (SCM xorig, SCM x, SCM y)





{
  SCM p, z;
  z = scm_cons (x, y);

  p = scm_hash_fn_ref (scm_sys_protects[13], xorig, ((SCM) (((16) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0);
  if (!(6 & ((scm_t_bits) (p))))
    do { register SCM w = (scm_sys_protects[13]); (((scm_assert_cell_valid (((scm_hash_fn_create_handle_x (w, z, ((SCM) (((21) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0)))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_hash_fn_create_handle_x (w, z, ((SCM) (((21) << 9) + 0x174L)), scm_ihashq, scm_sloppy_assq, 0)))))))) [(1)] = ((scm_t_bits) (((p))))))))); } while (0);
  return z;
}



static const char s_scm_copy_tree [] = "copy-tree"; SCM scm_copy_tree (SCM obj)







{
  SCM ans, tl;
  if ((6 & ((scm_t_bits) (obj))))
    return obj;
  if ((!(6 & ((scm_t_bits) (obj))) && (((0x7f & ~2) & (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))) == 13)))
    {
      unsigned long i = (((unsigned long) (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))) >> 8);
      ans = scm_c_make_vector (i, ((SCM) (((21) << 9) + 0x174L)));
      while (i--)
        (((SCM*)(scm_assert_cell_valid ((ans)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ans)))))) [(1)]))))[(i)] = (scm_copy_tree (((const SCM *) (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(1)]))))[i])));
      return ans;
    }
  if (!(!(6 & ((scm_t_bits) (obj))) && ((1 & (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))) == 0)))
    return obj;
  ans = tl = scm_cons_source (obj,
                              scm_copy_tree ((((scm_assert_cell_valid ((obj)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))))))),
                              ((SCM) (((21) << 9) + 0x174L)));
  while (obj = (((scm_assert_cell_valid ((obj)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(1)]))))))), (!(6 & ((scm_t_bits) (obj))) && ((1 & (scm_assert_cell_valid ((obj)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))) == 0)))
    {
      (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((scm_cons (scm_copy_tree ((((scm_assert_cell_valid ((obj)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((obj)))))) [(0)])))))))), ((SCM) (((21) << 9) + 0x174L))))))))))));

      tl = (((scm_assert_cell_valid ((tl)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tl)))))) [(1)])))))));
    }
  (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((obj)))))))));
  return ans;
}
# 4069 "eval.c"
SCM
scm_i_eval_x (SCM exp, SCM env)
{
  return ((6 & ((scm_t_bits) (exp))) ? (((((scm_t_bits) ((exp))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), (exp)) : (*scm_ceval_ptr) ((exp), (env)));
}

SCM
scm_i_eval (SCM exp, SCM env)
{
  exp = scm_copy_tree (exp);
  return ((6 & ((scm_t_bits) (exp))) ? (((((scm_t_bits) ((exp))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), (exp)) : (*scm_ceval_ptr) ((exp), (env)));
}

SCM
scm_primitive_eval_x (SCM exp)
{
  SCM env;
  SCM transformer = scm_current_module_transformer ();
  if ((!(6 & ((scm_t_bits) (transformer)))))
    exp = scm_call_1 (transformer, exp);
  env = scm_top_level_env (scm_current_module_lookup_closure ());
  return scm_i_eval_x (exp, env);
}

static const char s_scm_primitive_eval [] = "primitive-eval"; SCM scm_primitive_eval (SCM exp)




{
  SCM env;
  SCM transformer = scm_current_module_transformer ();
  if ((!(6 & ((scm_t_bits) (transformer)))))
    exp = scm_call_1 (transformer, exp);
  env = scm_top_level_env (scm_current_module_lookup_closure ());
  return scm_i_eval (exp, env);
}







static void
change_environment (void *data)
{
  SCM pair = ((SCM) (data));
  SCM new_module = (((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(0)])))))));
  SCM old_module = scm_current_module ();
  (((scm_assert_cell_valid (((pair))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((pair))))))) [(1)] = ((scm_t_bits) (((old_module)))))))));
  scm_set_current_module (new_module);
}


static void
restore_environment (void *data)
{
  SCM pair = ((SCM) (data));
  SCM old_module = (((scm_assert_cell_valid ((pair)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pair)))))) [(1)])))))));
  SCM new_module = scm_current_module ();
  (((scm_assert_cell_valid (((pair))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((pair))))))) [(0)] = ((scm_t_bits) (((new_module)))))))));
  scm_set_current_module (old_module);
}

static SCM
inner_eval_x (void *data)
{
  return scm_primitive_eval_x (((SCM) (data)));
}

SCM
scm_eval_x (SCM exp, SCM module)

{
  do { if (!((!(6 & ((scm_t_bits) (module))) && (scm_assert_cell_valid ((module)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((module)))))) [(0)]))) == scm_module_tag))) scm_wrong_type_arg_msg("eval!", 2, module, "MODULEP"); } while (0);

  return scm_internal_dynamic_wind
    (change_environment, inner_eval_x, restore_environment,
     (void *) ((scm_t_bits) (exp)),
     (void *) ((scm_t_bits) (scm_cons (module, ((SCM) (((16) << 9) + 0x174L))))));
}


static SCM
inner_eval (void *data)
{
  return scm_primitive_eval (((SCM) (data)));
}

static const char s_scm_eval [] = "eval"; SCM scm_eval (SCM exp, SCM module)







{
  do { if (!((!(6 & ((scm_t_bits) (module))) && (scm_assert_cell_valid ((module)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((module)))))) [(0)]))) == scm_module_tag))) scm_wrong_type_arg_msg(s_scm_eval, 2, module, "MODULEP"); } while (0);

  return scm_internal_dynamic_wind
    (change_environment, inner_eval, restore_environment,
     (void *) ((scm_t_bits) (exp)),
     (void *) ((scm_t_bits) (scm_cons (module, ((SCM) (((16) << 9) + 0x174L))))));
}
# 4183 "eval.c"
# 1 "eval.c" 1
# 1686 "eval.c"
SCM (*scm_ceval_ptr) (SCM x, SCM env);
# 1696 "eval.c"
scm_t_debug_frame *scm_last_debug_frame;






long scm_debug_eframe_size;

int scm_debug_mode, scm_check_entry_p, scm_check_apply_p, scm_check_exit_p;

long scm_eval_stack;

scm_t_option scm_eval_opts[] = {
  { 1, "stack", 22000, "Size of thread stacks (in machine words)." }
};

scm_t_option scm_debug_opts[] = {
  { 0, "cheap", 1,
    "*Flyweight representation of the stack at traps." },
  { 0, "breakpoints", 0, "*Check for breakpoints." },
  { 0, "trace", 0, "*Trace mode." },
  { 0, "procnames", 1,
    "Record procedure names at definition." },
  { 0, "backwards", 0,
    "Display backtrace in anti-chronological order." },
  { 1, "width", 79, "Maximal width of backtrace." },
  { 1, "indent", 10, "Maximal indentation in backtrace." },
  { 1, "frames", 3,
    "Maximum number of tail-recursive frames in backtrace." },
  { 1, "maxdepth", 1000,
    "Maximal number of stored backtrace frames." },
  { 1, "depth", 20, "Maximal length of printed backtrace." },
  { 0, "backtrace", 0, "Show backtrace on error." },
  { 0, "debug", 0, "Use the debugging evaluator." },
  { 1, "stack", 20000, "Stack size limit (measured in words; 0 = no check)." },
  { 2, "show-file-name", (unsigned long)((SCM) (((17) << 9) + 0x174L)), "Show file names and line numbers in backtraces when not `#f'.  A value of `base' displays only base names, while `#t' displays full names."}
};

scm_t_option scm_evaluator_trap_table[] = {
  { 0, "traps", 0, "Enable evaluator traps." },
  { 0, "enter-frame", 0, "Trap when eval enters new frame." },
  { 0, "apply-frame", 0, "Trap when entering apply." },
  { 0, "exit-frame", 0, "Trap when exiting eval or apply." },
  { 2, "enter-frame-handler", (unsigned long)((SCM) (((16) << 9) + 0x174L)), "Handler for enter-frame traps." },
  { 2, "apply-frame-handler", (unsigned long)((SCM) (((16) << 9) + 0x174L)), "Handler for apply-frame traps." },
  { 2, "exit-frame-handler", (unsigned long)((SCM) (((16) << 9) + 0x174L)), "Handler for exit-frame traps." }
};

static const char s_scm_eval_options_interface [] = "eval-options-interface"; SCM scm_eval_options_interface (SCM setting)





{
  SCM ans;
  do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
  ans = scm_options (setting,
                     scm_eval_opts,
                     1,
                     s_scm_eval_options_interface);
  scm_eval_stack = scm_eval_opts[0].val * sizeof (void *);
  do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
  return ans;
}


static const char s_scm_evaluator_traps [] = "evaluator-traps-interface"; SCM scm_evaluator_traps (SCM setting)



{
  SCM ans;
  do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
  ans = scm_options (setting,
                     scm_evaluator_trap_table,
                     7,
                     s_scm_evaluator_traps);
  do { scm_check_entry_p = (scm_evaluator_trap_table[1].val || scm_debug_opts[1].val) && !((((scm_t_bits) (((SCM)(scm_evaluator_trap_table[4].val)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))); scm_check_apply_p = (scm_evaluator_trap_table[2].val || scm_debug_opts[2].val) && !((((scm_t_bits) (((SCM)(scm_evaluator_trap_table[5].val)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))); scm_check_exit_p = (scm_evaluator_trap_table[3].val || scm_debug_opts[2].val) && !((((scm_t_bits) (((SCM)(scm_evaluator_trap_table[6].val)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))); scm_debug_mode = scm_debug_opts[11].val || scm_check_entry_p || scm_check_apply_p || scm_check_exit_p; scm_ceval_ptr = scm_debug_mode ? scm_deval : scm_ceval;} while (0);
  do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
  return ans;
}


static SCM
deval_args (SCM l, SCM env, SCM proc, SCM *lloc)
{
  SCM *results = lloc, res;
  while ((!(6 & ((scm_t_bits) (l))) && ((1 & (scm_assert_cell_valid ((l)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))) == 0)))
    {
      res = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)!
))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (l, env, 1) : scm_deval ((((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(0)]))))))), env)));

      *lloc = scm_list_1 (res);
      lloc = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((*lloc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((*lloc))))))) [(1)])))));
      l = (((scm_assert_cell_valid ((l)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((l)))))) [(1)])))))));
    }
  if (!((((scm_t_bits) ((l))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
    scm_wrong_num_args (proc);
  return *results;
}
# 1855 "eval.c"
SCM
scm_deval (SCM x, SCM env)
{
  SCM proc, arg1;

  scm_t_debug_frame debug;
  scm_t_debug_info *debug_info_end;
  debug.prev = scm_last_debug_frame;
  debug.status = 0;






  debug.vect = (scm_t_debug_info *) __builtin_alloca (scm_debug_eframe_size * sizeof (scm_t_debug_info));

  debug.info = debug.vect;
  debug_info_end = debug.vect + scm_debug_eframe_size;
  scm_last_debug_frame = &debug;


  if (scm_stack_checking_enabled_p
      && ((SCM_STACKITEM *) &proc < ((SCM_STACKITEM *) ((((scm_t_contregs *) (scm_assert_cell_valid (((scm_root->rootcont))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_root->rootcont))))))) [(1)])))))->base) - scm_debug_opts[12].val)))
    {

      debug.info->e.exp = x;
      debug.info->e.env = env;

      scm_report_stack_overflow ();
    }



  goto start;


loop:

  ((debug).status &= ~(1L << 7));
  if ((((debug).status & (1L << 6)) != 0))
    --debug.info;
# 1906 "eval.c"
  else if (++debug.info >= debug_info_end)
    {
      ((debug).status |= (1L << 6));
      debug.info -= 2;
    }

start:
  debug.info->e.exp = x;
  debug.info->e.env = env;
  if (scm_check_entry_p && scm_evaluator_trap_table[0].val)
    {
      if (scm_evaluator_trap_table[1].val
          || (scm_debug_opts[1].val && scm_c_source_property_breakpoint_p (x)))
        {
          SCM stackrep;
          SCM tail = (((((debug).status & (1L << 9)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L)));
          ((debug).status |= (1L << 9));
          if (scm_debug_opts[0].val)
            stackrep = scm_make_debugobj (&debug);
          else
            {
              int first;
              SCM val = scm_make_continuation (&first);

              if (first)
                stackrep = val;
              else
                {
                  x = val;
                  if ((6 & ((scm_t_bits) (x))))
                    do { proc = (x); goto exit; } while (0);
                  else


                    goto dispatch;
                }
            }
          scm_evaluator_trap_table[0].val = 0;
          scm_call_4 ((SCM)(scm_evaluator_trap_table[4].val),
                      scm_sym_enter_frame,
                      stackrep,
                      tail,
                      scm_unmemocopy (x, env));
          scm_evaluator_trap_table[0].val = 1;
        }
    }


dispatch:

  do { do { if (scm_asyncs_pending_p) scm_async_click (); } while (0); ; } while (0);
  switch ((0x7f & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))
    {
    case 5:

      x = scm_cons (x, ((SCM) (((18) << 9) + 0x174L)));
      do { proc = (*scm_lookupcar (x, env, 1)); goto exit; } while (0);

    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + ((0) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((!
scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
          if (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
            do { proc = (((SCM) (((16) << 9) + 0x174L))); goto exit; } while (0);
          else
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto carloop;

    case (127 & ((scm_t_bits) (((SCM) (((1) << 9) + ((1) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);

      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };

    begin:


      if ((!(6 & ((scm_t_bits) (env))) && ((1 & (scm_assert_cell_valid ((env)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))) == 0)) && !(!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)])))) == 0)))
        {
          do { SCM p = scm_current_module_lookup_closure (); if (p != (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))) env = scm_top_level_env (p); } while (0);
          while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            {
              ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((!
x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
              do { SCM p = scm_current_module_lookup_closure (); if (p != (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))) env = scm_top_level_env (p); } while (0);
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
          goto carloop;
        }
      else
        goto nontoplevel_begin;

    nontoplevel_begin:
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
          if ((6 & ((scm_t_bits) (form))))
            {
              if (((0x187 & ((scm_t_bits) (form))) == 4))
                {
                  x = scm_m_expand_body (x, env);
                  goto nontoplevel_begin;
                }
              else
                do { if ((((scm_t_bits) ((form))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))); } while (0);
            }
          else
            scm_deval (form, env);
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }

    carloop:
      {

        SCM last_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));

        if ((!(6 & ((scm_t_bits) (last_form))) && ((1 & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 0)))
          {

            x = last_form;
            goto loop;
          }
        else if ((6 & ((scm_t_bits) (last_form))))
          do { proc = ((((((scm_t_bits) (last_form)) & 0xff)==scm_tc8_iloc) ? *scm_ilookup ((last_form), env) : (((((scm_t_bits) ((last_form))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), (last_form)))); goto exit; } while (0);
        else if ((!(6 & ((scm_t_bits) (last_form))) && (0x7f & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 7))
          do { proc = ((scm_assert_cell_valid ((last_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(1)])))))); goto exit; } while (0);
        else if ((!(6 & ((scm_t_bits) (last_form))) && ((0x7f & (scm_assert_cell_valid ((last_form)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((last_form)))))) [(0)])))) == 5)))
          do { proc = (*scm_lookupcar (x, env, 1)); goto exit; } while (0);
        else
          do { proc = (last_form); goto exit; } while (0);
      }


    case (127 & ((scm_t_bits) (((SCM) (((2) << 9) + ((2) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM key = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits!
) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        while (!((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          {
            SCM clause = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
            SCM labels = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))));
            if ((((scm_t_bits) (labels)) == ((scm_t_bits) (scm_sym_else))))
              {
                x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                goto begin;
              }
            while (!((((scm_t_bits) ((labels))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
              {
                SCM label = (((scm_assert_cell_valid ((labels)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((labels)))))) [(0)])))))));
                if ((((scm_t_bits) (label)) == ((scm_t_bits) (key))) || !((((scm_t_bits) ((scm_eqv_p (label, key)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
                  {
                    x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                    { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                    goto begin;
                  }
                labels = (((scm_assert_cell_valid ((labels)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((labels)))))) [(1)])))))));
              }
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          }
      }
      do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((3) << 9) + ((3) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM clause = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
          if ((((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))) == ((scm_t_bits) (scm_sym_else))))
            {
              x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
              { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
              goto begin;
            }
          else
            {
              arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((clause)), (((!
(SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (clause, env, 1) : scm_deval ((((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(0)]))))))), env)));
              if (!((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
                {
                  x = (((scm_assert_cell_valid ((clause)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((clause)))))) [(1)])))))));
                  if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                    do { proc = (arg1); goto exit; } while (0);
                  else if (!(((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) == ((scm_t_bits) (scm_sym_arrow))))
                    {
                      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                      goto begin;
                    }
                  else
                    {
                      proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                      proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const!
 scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_deval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
                      if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;
                      { ++debug.info; debug.info->a.proc = proc; debug.info->a.args = scm_list_1 (arg1); };
                      do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
                      if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)) && scm_badformalsp (proc, 1))
                        goto umwrongnumargs;
                      else
                        goto evap1;
                    }
                }
              x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            }
        }
      do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((4) << 9) + ((4) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {

        SCM init_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), init_values, env);
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
      {
        SCM test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        SCM body_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM step_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));

        SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((sc!
m_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_deval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));

        while (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
          {
            {

              SCM temp_forms;
              for (temp_forms = body_forms;
                   !((((scm_t_bits) ((temp_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))));
                   temp_forms = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(1)]))))))))
                {
                  SCM form = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))));
# 2157 "eval.c"
                  if (!(6 & ((scm_t_bits) (form))))
                    scm_deval (form, env);
                }
            }

            {

              SCM temp_forms;
              SCM step_values = ((SCM) (((20) << 9) + 0x174L));
              for (temp_forms = step_forms;
                   !((((scm_t_bits) ((temp_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))));
                   temp_forms = (((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(1)]))))))))
                {
                  SCM value = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_!
t_bits) ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (temp_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((temp_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((temp_forms)))))) [(0)]))))))), env)));
                  step_values = scm_cons (value, step_values);
                }
              env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)]))))))))))))) [(0)]))))))), step_values, (((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(1)]))))))));
            }

            test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((sc!
m_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_deval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));
          }
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((5) << 9) + ((5) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((sc!
m_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
        if (!((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        else
          {
            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
            if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
              do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);
          }
      }
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto carloop;


    case (127 & ((scm_t_bits) (((SCM) (((7) << 9) + ((7) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM init_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        do
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
        env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), init_values, env);
      }
      x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((9) << 9) + ((9) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      env = scm_acons ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), scm_sys_protects[2], env);
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM init_forms = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        SCM init_values = ((SCM) (((20) << 9) + 0x174L));
        do
          {
            init_values = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) : ((!(6 & !
((scm_t_bits) ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(0)]))))))), env))), init_values);
            init_forms = (((scm_assert_cell_valid ((init_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init_forms)))))) [(1)])))))));
          }
        while (!((((scm_t_bits) ((init_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
        (((scm_assert_cell_valid ((((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((((scm_assert_cell_valid ((env)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((env)))))) [(0)])))))))))))))) [(1)] = ((scm_t_bits) (((init_values)))))))));
      }
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((8) << 9) + ((8) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM bindings = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        if (((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
          env = scm_acons (((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)), env);
        else
          {
            do
              {
                SCM name = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(0)])))))));
                SCM init = (((scm_assert_cell_valid ((bindings)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((bindings)))))) [(1)])))))));
                env = scm_acons (name, ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((init)), ((((SCM!
) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (init, env, 1) : scm_deval ((((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(0)]))))))), env))), env);
                bindings = (((scm_assert_cell_valid ((init)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((init)))))) [(1)])))))));
              }
            while (!((((scm_t_bits) ((bindings))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))));
          }
      }
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto nontoplevel_begin;


    case (127 & ((scm_t_bits) (((SCM) (((10) << 9) + ((10) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      while (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
        {
          SCM val = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
          if (!((((scm_t_bits) ((val))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))) && !((((scm_t_bits) ((val))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))
            do { proc = (val); goto exit; } while (0);
          else
            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        }
      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
      goto carloop;


    case (127 & ((scm_t_bits) (((SCM) (((6) << 9) + ((6) << 3) + 4L))))):
      do { proc = (scm_closure ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env)); goto exit; } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((11) << 9) + ((11) << 3) + 4L))))):
      do { proc = ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))))); goto exit; } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((12) << 9) + ((12) << 3) + 4L))))):
      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      {
        SCM *location;
        SCM variable = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
        if (((((scm_t_bits) (variable)) & 0xff)==scm_tc8_iloc))
          location = scm_ilookup (variable, env);
        else if ((!(6 & ((scm_t_bits) (variable))) && (0x7f & (scm_assert_cell_valid ((variable)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((variable)))))) [(0)])))) == 7))
          location = ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid (((variable))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((variable))))))) [(1)])))));
        else
          location = scm_lookupcar (x, env, 1);
        x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
        *location = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
      }
      do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);


    case (127 & ((scm_t_bits) (((SCM) (((13) << 9) + ((13) << 3) + 4L))))):
      scm_misc_error (((void *)0), "Bad define placement", ((SCM) (((20) << 9) + 0x174L)));



    case (127 & ((scm_t_bits) (((SCM) (((0) << 9) + 0x74L))))):
      proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
      if (!(((0x187 & ((scm_t_bits) (proc))) == 4))) goto badfun;
      switch ((((scm_t_bits) (proc)) >> 9))
        {


        case ((((scm_t_bits) (((SCM) (((14) << 9) + 0x74L)))) >> 9)):
          proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits !
*) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_deval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
          if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;
          if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
            {
              { ++debug.info; debug.info->a.proc = proc; debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
              arg1 = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
              arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_b!
its *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (arg1, env, 1) : scm_deval ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), env)));
            apply_closure:



              {
                SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));

                debug.info->a.args = arg1;

                if (scm_badargsp (formals, arg1))
                  scm_wrong_num_args (proc);
                do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);

                if ((((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
                  env = scm_acons (formals, ((SCM) (((20) << 9) + 0x174L)), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
                else
                  {
                    SCM args = scm_list_1 ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))));
                    SCM tail = args;
                    arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                    while (!(((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
                      {
                        SCM new_tail = scm_list_1 ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))));
                        (((scm_assert_cell_valid (((tail))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tail))))))) [(1)] = ((scm_t_bits) (((new_tail)))))))));
                        tail = new_tail;
                        arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                      }
                    env = scm_acons (formals, args, (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
                  }

                x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
                goto nontoplevel_begin;
              }
            }
          else
            {
              proc = scm_f_apply;
              goto evapply;
            }


        case ((((scm_t_bits) (((SCM) (((15) << 9) + 0x74L)))) >> 9)):
          {
            int first;
            SCM val = scm_make_continuation (&first);

            if (!first)
              do { proc = (val); goto exit; } while (0);
            else
              {
                arg1 = val;
                proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                proc = scm_eval_car (proc, env);
                if (!((!(6 & ((scm_t_bits) (proc)))))) goto badfun;
                { ++debug.info; debug.info->a.proc = proc; debug.info->a.args = scm_list_1 (arg1); };
                do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
                if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)) && scm_badformalsp (proc, 1))
                  goto umwrongnumargs;
                goto evap1;
              }
          }


        case ((((scm_t_bits) (((SCM) (((27) << 9) + 0x74L)))) >> 9)):
          do { proc = (scm_makprom (scm_closure ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env))); goto exit; } while (0);


        case ((((scm_t_bits) (((SCM) (((22) << 9) + 0x74L)))) >> 9)):
          {



            SCM operand_forms = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))));
            { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
            if (((((scm_t_bits) (operand_forms)) & 0xff)==scm_tc8_iloc))
              arg1 = *scm_ilookup (operand_forms, env);
            else if ((!(6 & ((scm_t_bits) (operand_forms))) && (0x7f & (scm_assert_cell_valid ((operand_forms)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))) == 7))
              arg1 = (scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))));
            else if (!(!(6 & ((scm_t_bits) (operand_forms))) && ((1 & (scm_assert_cell_valid ((operand_forms)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))) == 0)))
              arg1 = *scm_lookupcar ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))), env, 1);
            else
              {
                SCM tail = arg1 = scm_list_1 (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operan!
d_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (operand_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))), env))));
                operand_forms = (((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))))));
                while (!((((scm_t_bits) ((operand_forms))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                  {
                    SCM new_tail = scm_list_1 (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((opera!
nd_forms)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (operand_forms, env, 1) : scm_deval ((((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(0)]))))))), env))));
                    (((scm_assert_cell_valid (((tail))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tail))))))) [(1)] = ((scm_t_bits) (((new_tail)))))))));
                    tail = new_tail;
                    operand_forms = (((scm_assert_cell_valid ((operand_forms)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((operand_forms)))))) [(1)])))))));
                  }
              }
          }




        type_dispatch:
# 2440 "eval.c"
        {
            unsigned long int specializers;
            unsigned long int hash_value;
            unsigned long int cache_end_pos;
            unsigned long int mask;
            SCM method_cache;

            {
              SCM z = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)])))))));
              SCM tmp = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
              specializers = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) >> (2)));






              if ((2 & ((scm_t_bits) (tmp))))
                {
# 2474 "eval.c"
                  unsigned long int hashset = ((((scm_t_signed_bits) ((scm_t_bits) (tmp))) >> (2)));
                  unsigned long int counter = specializers + 1;
                  SCM tmp_arg = arg1;
                  hash_value = 0;
                  while (!((((scm_t_bits) ((tmp_arg))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) && counter != 0)
                    {
                      SCM class = scm_class_of ((((scm_assert_cell_valid ((tmp_arg)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp_arg)))))) [(0)]))))))));
                      hash_value += (((scm_t_bits *) (scm_assert_cell_valid ((class)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((class)))))) [(1)])))) [6 + (hashset)]);
                      tmp_arg = (((scm_assert_cell_valid ((tmp_arg)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tmp_arg)))))) [(1)])))))));
                      counter--;
                    }
                  z = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(1)])))))));
                  method_cache = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
                  mask = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) >> (2)));
                  hash_value &= mask;
                  cache_end_pos = hash_value;
                }
              else
                {



                  method_cache = tmp;
                  mask = (unsigned long int) ((long) -1);
                  hash_value = 0;
                  cache_end_pos = (((unsigned long) (scm_assert_cell_valid ((method_cache)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((method_cache)))))) [(0)])))) >> 8);
                }
            }

            {
# 2512 "eval.c"
              SCM z;
              do
                {
                  SCM args = arg1;
                  z = ((const SCM *) (scm_assert_cell_valid ((method_cache)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((method_cache)))))) [(1)]))))[hash_value];
                  while (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
                    {

                      SCM class_of_arg = scm_class_of ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))));
                      if (!(((scm_t_bits) (class_of_arg)) == ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))))
                        goto next_method;
                      args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
                      z = (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)])))))));
                    }

                  if (((((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || (!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))))))))) [(0)])))) == 0)))
                    goto apply_cmethod;
                next_method:
                  hash_value = (hash_value + 1) & mask;
                } while (hash_value != cache_end_pos);


              z = scm_memoize_method (x, arg1);

            apply_cmethod:
              {
                SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(0)])))))));
                env = scm_acons (formals, arg1, (((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(0)]))))))));
                x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((z)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((z)))))) [(1)]))))))))))))) [(1)])))))));
                goto nontoplevel_begin;
              }
            }
          }


        case ((((scm_t_bits) (((SCM) (((23) << 9) + 0x74L)))) >> 9)):
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          {
            SCM instance = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s!
cm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
            unsigned long int slot = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))))))) >> (2)));
            do { proc = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((instance)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((instance)))))) [(1)])))) [slot]))); goto exit; } while (0);
          }


        case ((((scm_t_bits) (((SCM) (((24) << 9) + 0x74L)))) >> 9)):
          x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          {
            SCM instance = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s!
cm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
            unsigned long int slot = ((((scm_t_signed_bits) ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(0)])))))))))) >> (2)));
            SCM value = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm!
_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((!
(((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM!
) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((sc!
m_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi!
ts) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM)!
 (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)])))))))!
)))))) [(0)])))) == 5)) ? *scm_lookupcar ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))), env, 1) : scm_deval ((((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))!
) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))), env)));
            ((scm_t_bits *) (scm_assert_cell_valid ((instance)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((instance)))))) [(1)])))) [slot] = ((scm_t_bits) (value));
            do { proc = (((SCM) (((21) << 9) + 0x174L))); goto exit; } while (0);
          }




        case ((((scm_t_bits) (((SCM) (((25) << 9) + 0x74L)))) >> 9)):
          {
            SCM test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            x = (((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(1)])))))));
            while (!(((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L))))))))
              {
                SCM test_result = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits!
) ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (test_form, env, 1) : scm_deval ((((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(0)]))))))), env)));
                if (!(((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))
                      || (((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || ((((scm_t_bits) ((test_result))) == ((scm_t_bits) (((SCM) (((30) << 9) + 0x174L)))))))))
                  {
                    if ((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) == ((scm_t_bits) (((SCM) (((21) << 9) + 0x174L))))))
                      do { proc = (test_result); goto exit; } while (0);
                    { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                    goto carloop;
                  }
                else
                  {
                    test_form = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
                    x = (((scm_assert_cell_valid ((test_form)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((test_form)))))) [(1)])))))));
                  }
              }
            x = test_form;
            { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
            goto carloop;
          }



        case ((((scm_t_bits) (((SCM) (((26) << 9) + 0x74L)))) >> 9)):
          {
            SCM vars, exps, vals;

            x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            vars = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))))));
            exps = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(1)])))))));

            vals = ((SCM) (((20) << 9) + 0x174L));

            while ((!(6 & ((scm_t_bits) (exps)))))
              {
                vals = scm_cons (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((exps)), ((((SCM) (((c!
onst scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (exps, env, 1) : scm_deval ((((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(0)]))))))), env))), vals);
                exps = (((scm_assert_cell_valid ((exps)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((exps)))))) [(1)])))))));
              }

            scm_swap_bindings (vars, vals);
            (scm_root->dynwinds) = scm_acons (vars, vals, (scm_root->dynwinds));


            for (x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))); !((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))); x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))))
              {
                if ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((1 & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 0)))
                  scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
              }
            proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bit!
s) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));

            (scm_root->dynwinds) = (((scm_assert_cell_valid (((scm_root->dynwinds))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_root->dynwinds))))))) [(1)])))))));
            scm_swap_bindings (vars, vals);

            do { proc = (proc); goto exit; } while (0);
          }


        case ((((scm_t_bits) (((SCM) (((28) << 9) + 0x74L)))) >> 9)):
          {
            proc = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
            x = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *!
) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_deval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
            proc = (((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))));
            proc = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bit!
s *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, env, 1) : scm_deval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), env)));
            arg1 = scm_dapply (x, ((SCM) (((20) << 9) + 0x174L)), ((SCM) (((20) << 9) + 0x174L)));
            if (((!(6 & ((scm_t_bits) (arg1))) && ((7 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 1)) && (((scm_t_bits) (scm_struct_vtable (arg1))) == ((scm_t_bits) (scm_values_vtable)))))
              arg1 = scm_struct_ref (arg1, ((((SCM) ((((scm_t_signed_bits) (0)) << 2) + 2)))));
            else
              arg1 = scm_list_1 (arg1);
            if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              {
                { ++debug.info; debug.info->a.proc = proc; debug.info->a.args = arg1; };
                goto apply_closure;
              }
            return scm_dapply (proc, arg1, ((SCM) (((20) << 9) + 0x174L)));
          }


        default:
          goto badfun;
        }

    default:
      proc = x;
    badfun:
      scm_misc_error (((void *)0), "Wrong type to apply: ~S", scm_list_1 (proc));
    case 13:
    case 15:

    case 71:
    case 77:
    case 55:
    case 79:
    case 37:
    case 45:
    case 47:
    case 53:

    case 29:


    case 21:
    case 127:
    case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
    case 63:
    case 31:
    case 103:case 85:case 87:case 93: case 95:case 101:case 69:case 109: case 111:case 117:case 119:
    case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
      do { proc = (x); goto exit; } while (0);

    case 7:
      do { proc = ((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))); goto exit; } while (0);

    case (127 & ((scm_t_bits) (((SCM) (((0L) << 8) + scm_tc8_iloc))))):
      proc = *scm_ilookup ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
      if (!((!(6 & ((scm_t_bits) (proc)))))) goto badfun;
      goto checkargs;

    case 0:case 8:case 16:case 24: case 32:case 40:case 48:case 56: case 64:case 72:case 80:case 88: case 96:case 104:case 112:case 120:
      if ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)))
        {
          SCM orig_sym = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))));
# 2706 "eval.c"
          proc = *scm_lookupcar (x, env, 1);


          if ((6 & ((scm_t_bits) (proc))))
            {
              (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((orig_sym)))))))));

              goto badfun;
            }
          if ((!(6 & ((scm_t_bits) ((proc)))) && (0xffff & (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(0)])))) == (scm_tc16_macro)))
            {
              (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) (((orig_sym)))))))));

            handle_a_macro:



              ((debug).status |= (1L << 10));

              arg1 = scm_dapply ((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), x,
                                  scm_cons (env, scm_sys_protects[1]));


              ((debug).status &= ~(1L << 10));

              switch (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 16))
                {
                case 2:
                  if (scm_ilength (arg1) <= 0)
                    arg1 = scm_list_2 (((SCM) (((1) << 9) + ((1) << 3) + 4L)), arg1);

                  if (!(!(6 & ((scm_t_bits) ((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))))) && ((7 & (scm_assert_cell_valid (((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))))))))) [(0)])))) == 3)))
                    {
                      do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
                      (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))))))))));
                      (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)]))))))))))))))));
                      do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
                      goto dispatch;
                    }

                  debug.info->e.exp = scm_cons_source (debug.info->e.exp,
                                                       (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))),
                                                       (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)]))))))));

                  do { asm (""); ; ; asm (""); scm_ints_disabled = 1; asm (""); } while (0);
                  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(0)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))))))))))));
                  (((scm_assert_cell_valid (((x))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((x))))))) [(1)] = ((scm_t_bits) ((((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)]))))))))))))))));
                  do { asm (""); ; ; asm (""); scm_ints_disabled = 0; asm (""); ; asm (""); } while (0);
                  { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                  goto loop;

                case 1:
                  x = arg1;
                  if ((!(6 & ((scm_t_bits) (x)))))
                    {
                      { ++debug.info; debug.info->a.proc = ((SCM) (((18) << 9) + 0x174L)); debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
                      goto loop;
                    }
                  else
                    do { proc = (arg1); goto exit; } while (0);

                case 0:
                  do { proc = (arg1); goto exit; } while (0);
                }
            }
        }
      else
        proc = scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env);
      if (!(!(6 & ((scm_t_bits) (proc))))) goto badfun;

    checkargs:
      if ((!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
        {
          SCM formals = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)])))))));
          SCM args = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
          while (!((((scm_t_bits) ((formals))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            {
              if (!(!(6 & ((scm_t_bits) (formals))) && ((1 & (scm_assert_cell_valid ((formals)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(0)])))) == 0)))
                goto evapply;
              if ((6 & ((scm_t_bits) (args))))
                goto umwrongnumargs;
              formals = (((scm_assert_cell_valid ((formals)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((formals)))))) [(1)])))))));
              args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
            }
          if (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            goto umwrongnumargs;
        }
      else if ((!(6 & ((scm_t_bits) ((proc)))) && (0xffff & (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(0)])))) == (scm_tc16_macro)))
        goto handle_a_macro;
    }


evapply:
  { ++debug.info; debug.info->a.proc = proc; debug.info->a.args = ((SCM) (((20) << 9) + 0x174L)); };
  if (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))) {
    do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
  evap0:
    switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
      {
      case 85:
        do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ()); goto exit; } while (0);
      case 109:
        do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((18) << 9) + 0x174L)))); goto exit; } while (0);
      case 119:
        do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((20) << 9) + 0x174L)))); goto exit; } while (0);
      case 69:
        do { proc = (((SCM) (((17) << 9) + 0x174L))); goto exit; } while (0);
      case 103:
        do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((SCM) (((18) << 9) + 0x174L)), ((SCM) (((18) << 9) + 0x174L)))); goto exit; } while (0);
      case 127:
        if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
          goto badfun;
        do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_0 (proc))); goto exit; } while (0);
      case 63:
        arg1 = proc;
        proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));

        debug.info->a.proc = proc;
        debug.info->a.args = scm_list_1 (arg1);

        goto evap1;
      case 31:
        proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));

        debug.info->a.proc = proc;

        if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
          goto evap0;
        if (scm_badformalsp (proc, 0))
          goto umwrongnumargs;
      case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
        x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
        env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), ((SCM) (((20) << 9) + 0x174L)), (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bit!
s) ((proc)))))) [(1)]))))));
        goto nontoplevel_begin;
      case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
        if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
          {
            x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));
            arg1 = ((SCM) (((20) << 9) + 0x174L));
            goto type_dispatch;
          }
        else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
          goto badfun;
        else
          {
            arg1 = proc;
            proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                    ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                    : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));

            debug.info->a.proc = proc;
            debug.info->a.args = scm_list_1 (arg1);

            if ((!(6 & ((scm_t_bits) (proc)))))
              goto evap1;
            else
              goto badfun;
          }
      case 87:
      case 101:
      case 111:
      case 93:
      case 95:
      case 117:
      umwrongnumargs:
        scm_unmemocar (x, env);
        scm_wrong_num_args (proc);
      default:

        goto badfun;
      }
  }


  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  if ((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
    arg1 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x))!
)))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
  else
    scm_wrong_num_args (proc);

  debug.info->a.args = scm_list_1 (arg1);

  x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
  {
    SCM arg2;
    if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
      {
        do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
      evap1:
        switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
          {
          case 111:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L)))); goto exit; } while (0);
          case 87:
          case 109:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1)); goto exit; } while (0);
          case 93:
            if (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))
              {
                if ((2 & ((scm_t_bits) (arg1))))
                  {
                    do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((double) ((((scm_t_signed_bits) ((scm_t_bits) (arg1))) >> (2)))))); goto exit; } while (0);
                  }
                else if ((!(6 & ((scm_t_bits) (arg1))) && (0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 2 * 256L)))
                  {
                    do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((((scm_t_double *) ((scm_t_cell *) (((scm_t_bits) (arg1)))))->real)))); goto exit; } while (0);
                  }

                else if ((!(6 & ((scm_t_bits) (arg1))) && ((0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 1 * 256L))))
                  {
                    do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_i_big2dbl (arg1)))); goto exit; } while (0);
                  }

                return (((scm_t_bits) (*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic))) ? scm_call_generic_1 ((*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic)), (arg1)) : (scm_wrong_type_arg ((((char *) ((scm_assert_cell_valid ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))))))) [(1)])))))), (1), (arg1)), ((SCM) (((21) << 9) + 0x174L))));

              }
            proc = ((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name);
            {
              char *chrs = ((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))) + (((unsigned long) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8) - 1;
              while ('c' != *--chrs)
                {
                  if (!((!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))) scm_wrong_type_arg (((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), 1, arg1);

                  arg1 = ('a' == *chrs) ? (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))) : (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
                }
              do { proc = (arg1); goto exit; } while (0);
            }
          case 69:
            do { proc = (((SCM) (((17) << 9) + 0x174L))); goto exit; } while (0);
          case 103:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L)))); goto exit; } while (0);
          case 119:

            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (debug.info->a.args)); goto exit; } while (0);



          case 127:
            if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
              goto badfun;
            do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_1 (proc, (arg1)))); goto exit; } while (0);
          case 63:
            arg2 = arg1;
            arg1 = proc;
            proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));

            debug.info->a.args = scm_cons (arg1, debug.info->a.args);
            debug.info->a.proc = proc;

            goto evap2;
          case 31:
            proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));

            debug.info->a.proc = proc;

            if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              goto evap1;
            if (scm_badformalsp (proc, 1))
              goto umwrongnumargs;
          case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:

            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));

            env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), debug.info->a.args, (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((pro!
c)))))) [(1)]))))));



            goto nontoplevel_begin;
          case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
            if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
              {
                x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));

                arg1 = debug.info->a.args;



                goto type_dispatch;
              }
            else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
              goto badfun;
            else
              {
                arg2 = arg1;
                arg1 = proc;
                proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                        ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                        : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));

                debug.info->a.args = scm_cons (arg1, debug.info->a.args);
                debug.info->a.proc = proc;

                if ((!(6 & ((scm_t_bits) (proc)))))
                  goto evap2;
                else
                  goto badfun;
              }
          case 101:
          case 85:
          case 95:
          case 117:
            scm_wrong_num_args (proc);
          default:
            goto badfun;
          }
      }
    if ((!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
      arg2 = ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))), env) : (((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L))), 0 : 0), ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x!
)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (x, env, 1) : scm_deval ((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)]))))))), env)));
    else
      scm_wrong_num_args (proc);

    {

      debug.info->a.args = scm_list_2 (arg1, arg2);

      x = (((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))));
      if (((((scm_t_bits) ((x))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))) {
        do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
      evap2:
        switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
          {
          case 101:
          case 111:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2)); goto exit; } while (0);
          case 119:

            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (debug.info->a.args)); goto exit; } while (0);



          case 117:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, ((SCM) (((20) << 9) + 0x174L)))); goto exit; } while (0);
          case 69:
          case 103:
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2)); goto exit; } while (0);
          case 127:
            if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
              goto badfun;
            do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_2 (proc, (arg1), (arg2)))); goto exit; } while (0);
          cclon:
          case 63:

            do { proc = (scm_dapply (((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0])))), scm_cons (proc, debug.info->a.args), ((SCM) (((20) << 9) + 0x174L)))); goto exit; } while (0);
# 3060 "eval.c"
          case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
            if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
              {
                x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));

                arg1 = debug.info->a.args;



                goto type_dispatch;
              }
            else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
              goto badfun;
            else
              {
              operatorn:

                do { proc = (scm_dapply ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0) ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5]))) : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure), scm_cons (proc, debug.info->a.args), ((SCM) (((20) << 9) + 0x174L)))); goto exit; } while (0);
# 3093 "eval.c"
              }
          case 85:
          case 93:
          case 109:
          case 87:
          case 95:
            scm_wrong_num_args (proc);
          default:
            goto badfun;
          case 31:
            proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));

            debug.info->a.proc = proc;

            if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
              goto evap2;
            if (scm_badformalsp (proc, 2))
              goto umwrongnumargs;
          case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:


            env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))),
                              debug.info->a.args,
                              (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));




            x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
            goto nontoplevel_begin;
          }
      }
      if (!(!(6 & ((scm_t_bits) (x))) && ((1 & (scm_assert_cell_valid ((x)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(0)])))) == 0)))
        scm_wrong_num_args (proc);

      debug.info->a.args = scm_cons2 (arg1, arg2,
                                      deval_args (x, env, proc,
                                                  ((SCM *) ((scm_t_bits *) & (scm_assert_cell_valid ((((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)])))))))))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)])))))))))))))) [(1)])))))));

      do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { tmp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
    evap3:
      switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
        {

        case 95:
          if (!((((scm_t_bits) (((((scm_assert_cell_valid ((x)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((x)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
            scm_wrong_num_args (proc);
          else
            do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, (((scm_assert_cell_valid (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((debug.info-
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
 >a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t _bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (( (const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const !
 scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)]))))))))))))) [(0)]))))))))); goto exit; } while (0);
 
         case 103:
           arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))(arg1, arg2);
           arg2 = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_ t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)])))))));
           do
             {
               arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))(arg1, (((scm_assert_cell_valid ((arg2)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg 2)))))) [(0)]))))))));
               arg2 = (((scm_assert_cell_valid ((arg2)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg2)))))) [(1)])))))));
             }
           while ((!(6 & ((scm_t_bits) (arg2)))));
           do { proc = (arg1); goto exit; } while (0);
         case 69:
           if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2)))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
             do { proc = (((SCM) (((16) << 9) + 0x174L))); goto exit; } while (0);
           arg1 = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_ t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)])))))));
           do
             {
               if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg2, (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s cm_t_bits) ((arg1)))))) [(0)]))))))))))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
                 do { proc = (((SCM) (((16) << 9) + 0x174L))); goto exit; } while (0);
               arg2 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))));
               arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
             }
           while ((!(6 & ((scm_t_bits) (arg1)))));
           do { proc = (((SCM) (((17) << 9) + 0x174L))); goto exit; } while (0);
         case 117:
           do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, arg2, (((scm_assert_cell_valid (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const  scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((s cm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)]))))))))); goto exit; } while (0);
 
         case 119:
           do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (debug.info->a.args)); goto exit; } while (0);
         case 127:
           if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
             goto badfun;
           do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_3 (proc, (arg1), (arg2), ((((scm_assert_cell_valid (((((scm_assert_cell_valid (( debug.info->a.args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((debug.info->a.args)), ((((SCM) ((( const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((debug.info->a.args)))))) [(1)]))))))))))))) [(1)]))))))))))); goto exit; } while (0);
 
         case 63:
           goto cclon;
         case 31:
           proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));
           debug.info->a.proc = proc;
           if (!(!(6 & ((scm_t_bits) (proc))) && ((7 & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) == 3)))
             goto evap3;
           if (scm_badargsp ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell  *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_vali d ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_b its *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), debug.info->a.args))
             goto umwrongnumargs;
         case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
           ((debug).status |= (1L << 7));
           env = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell * ) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid  ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bi ts *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))),
                             debug.info->a.args,
                             (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
           x = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bi ts) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((s cm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t _cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
           goto nontoplevel_begin;
 # 3258 "eval.c"
         case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
           if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
             {
 
               arg1 = debug.info->a.args;
 
 
 
               x = (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])));
               goto type_dispatch;
             }
           else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
             goto badfun;
           else
             goto operatorn;
         case 101:
         case 109:
         case 111:
         case 85:
         case 93:
         case 87:
           scm_wrong_num_args (proc);
         default:
           goto badfun;
         }
     }
   }
 
 exit:
   if (scm_check_exit_p && scm_evaluator_trap_table[0].val)
     if (scm_evaluator_trap_table[3].val || (scm_debug_opts[2].val && (((debug).status & (1L << 8)) != 0)))
       {
         ((debug).status &= ~(1L << 8));
         if (scm_debug_opts[0].val)
           arg1 = scm_make_debugobj (&debug);
         else
           {
             int first;
             SCM val = scm_make_continuation (&first);
 
             if (first)
               arg1 = val;
             else
               {
                 proc = val;
                 goto ret;
               }
           }
         scm_evaluator_trap_table[0].val = 0;
         scm_call_3 ((SCM)(scm_evaluator_trap_table[6].val), scm_sym_exit_frame, arg1, proc);
         scm_evaluator_trap_table[0].val = 1;
       }
 ret:
   scm_last_debug_frame = debug.prev;
   return proc;
 
 }
 # 3460 "eval.c"
 SCM
 scm_dapply (SCM proc, SCM arg1, SCM args)
 {
 
 
   scm_t_debug_frame debug;
   scm_t_debug_info debug_vect_body;
   debug.prev = scm_last_debug_frame;
   debug.status = (1L << 11);
   debug.vect = &debug_vect_body;
   debug.vect[0].a.proc = proc;
   debug.vect[0].a.args = ((SCM) (((20) << 9) + 0x174L));
   scm_last_debug_frame = &debug;
 
 
 
 
 
 
   if (!((!(6 & ((scm_t_bits) (proc)))))) goto badproc;
 # 3493 "eval.c"
   if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
     {
       if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         {
           arg1 = ((SCM) (((18) << 9) + 0x174L));
 
           debug.vect[0].a.args = ((SCM) (((20) << 9) + 0x174L));
 
         }
       else
         {
 
           debug.vect[0].a.args = arg1;
 
           args = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))));
           arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))))));
         }
     }
   else
     {
       args = scm_nconc2last (args);
 
       debug.vect[0].a.args = scm_cons (arg1, args);
 
     }
 
   if (scm_evaluator_trap_table[1].val && scm_evaluator_trap_table[0].val)
     {
       SCM tmp;
       if (scm_debug_opts[0].val)
         tmp = scm_make_debugobj (&debug);
       else
         {
           int first;
 
           tmp = scm_make_continuation (&first);
           if (!first)
             goto entap;
         }
       scm_evaluator_trap_table[0].val = 0;
       scm_call_2 ((SCM)(scm_evaluator_trap_table[4].val), scm_sym_enter_frame, tmp);
       scm_evaluator_trap_table[0].val = 1;
     }
 entap:
   do { ((debug).status |= (1L << 7)); if (scm_check_apply_p && scm_evaluator_trap_table[0].val) if (scm_evaluator_trap_table[2].val || (scm_debug_opts[2].val && (!((((scm_t_bits) ((scm_procedure_property (proc, scm_sym_trace)))) == ((scm_t_bits) (((SCM)  (((16) << 9) + 0x174L))))))))) { SCM tmp, tail = (((((debug).status & (1L << 8)) != 0)) ? ((SCM) (((17) << 9) + 0x174L)) : ((SCM) (((16) << 9) + 0x174L))); ((debug).status |= (1L << 8)); scm_evaluator_trap_table[0].val = 0; if (scm_debug_opts[0].val) { t mp = scm_make_debugobj (&debug); scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_frame, tmp, tail); } else { int first; tmp = scm_make_continuation (&first); if (first) scm_call_3 ((SCM)(scm_evaluator_trap_table[5].val), scm_sym_apply_f rame, tmp, tail); } scm_evaluator_trap_table[0].val = 1; }} while (0);
 
 tail:
   switch ((0x7f & (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))
     {
     case 111:
       args = ((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) ? ((SCM) (((18) << 9) + 0x174L)) : (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
       do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, args)); goto exit; } while (0);
     case 101:
       if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) || !((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits)  (((SCM) (((20) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
       args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
       do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, args)); goto exit; } while (0);
     case 85:
       if (!((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
       else
         do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ()); goto exit; } while (0);
     case 87:
       if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
     case 109:
       if (!((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
       else
         do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1)); goto exit; } while (0);
     case 93:
       if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) || !((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
       if (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))))
         {
           if ((2 & ((scm_t_bits) (arg1))))
             {
               do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((double) ((((scm_t_signed_bits) ((scm_t_bits) (arg1))) >> (2)))))); goto exit; } whi le (0);
             }
           else if ((!(6 & ((scm_t_bits) (arg1))) && (0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 2 * 256L)))
             {
               do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) ((((scm_t_double *) ((scm_t_cell *) (((scm_t_bits) (arg1)))))->real)))); goto exit; }  while (0);
             }
 
           else if ((!(6 & ((scm_t_bits) (arg1))) && ((0xffff & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == (127 + 1 * 256L))))
             do { proc = (scm_make_real (((double (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (scm_i_big2dbl (arg1)))); goto exit; } while (0);
 
           return (((scm_t_bits) (*((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic))) ? scm_call_generic_1 ((*((scm_subr_table[((scm_assert_cell_valid ((proc)) , ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).generic)), (arg1)) : (scm_wrong_type_arg ((((char *) ((scm_assert_cell_valid ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell  *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name ))))))) [(1)])))))), (1), (arg1)), ((SCM) (((21) << 9) + 0x174L))));
 
         }
       proc = ((scm_subr_table[((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) >> 8)]).name);
       {
         char *chrs = ((char *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))) + (((unsigned long) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (( proc)))))) [(0)])))) >> 8) - 1;
         while ('c' != *--chrs)
           {
             if (!((!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))) scm_wrong_type_arg (((char *) ((scm_assert_cell_valid ((proc)), ((((const scm _t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))), 1, arg1);
 
             arg1 = ('a' == *chrs) ? (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))) : (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_ bits) ((arg1)))))) [(1)])))))));
           }
         do { proc = (arg1); goto exit; } while (0);
       }
     case 95:
       if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
           || ((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))))
           || !((((scm_t_bits) (((((scm_assert_cell_valid (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((( scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         scm_wrong_num_args (proc);
       else
         do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ar gs)))))) [(0)]))))))), (((scm_assert_cell_valid (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_asser t_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))))))) [(0)]))))))))); goto exit; } while (0);
     case 119:
 
       do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L) ) : debug.vect[0].a.args)); goto exit; } while (0);
 
 
 
     case 117:
       if (!(!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))
         scm_wrong_num_args (proc);
       else
         do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((ar gs)))))) [(0)]))))))), (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))); goto exit; } while (0);
     case 103:
       if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         do { proc = (((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, ((SCM) (((18) << 9) + 0x174L)))); goto exit; } while (0);
       while ((!(6 & ((scm_t_bits) (args)))))
         {
           if (!((!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))) scm_wrong_type_arg ("apply", 2, args);
           arg1 = ((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)) )))) [(0)]))))))));
           args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
         }
       do { proc = (arg1); goto exit; } while (0);
     case 69:
       if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         do { proc = (((SCM) (((17) << 9) + 0x174L))); goto exit; } while (0);
       while ((!(6 & ((scm_t_bits) (args)))))
         {
           if (!((!(6 & ((scm_t_bits) (args))) && ((1 & (scm_assert_cell_valid ((args)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))) == 0)))) scm_wrong_type_arg ("apply", 2, args);
           if (((((scm_t_bits) ((((SCM (*)()) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) (arg1, (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t _bits) ((args)))))) [(0)]))))))))))) == ((scm_t_bits) (((SCM) (((16) << 9) + 0x174L)))))))
             do { proc = (((SCM) (((16) << 9) + 0x174L))); goto exit; } while (0);
           arg1 = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))));
           args = (((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))));
         }
       do { proc = (((SCM) (((17) << 9) + 0x174L))); goto exit; } while (0);
     case 3:case 11:case 19:case 27: case 35:case 43:case 51:case 59: case 67:case 75:case 83:case 91: case 99:case 107:case 115:case 123:
 
       arg1 = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : debug.vect[0].a.args);
 
 
 
       if (scm_badargsp ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) ( ((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (( ((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits  *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), arg1))
         scm_wrong_num_args (proc);
 
 
       if ((6 & ((scm_t_bits) (arg1))))
         args = arg1;
       else
         {
           SCM tl = args = scm_cons ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(0)]))))))), ((SCM) (((21) << 9) + 0x174L)));
           while (arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)]))))))), (!(6 & ((scm_t_bits) (arg1))) && ((1 & (scm_assert_cell_valid ((arg1)), ((((const scm_t_bits *) ((scm_t_c ell *) (((scm_t_bits) ((arg1)))))) [(0)])))) == 0)))
             {
               (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((scm_cons ((((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))) )) [(0)]))))))), ((SCM) (((21) << 9) + 0x174L))))))))))));
 
               tl = (((scm_assert_cell_valid ((tl)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((tl)))))) [(1)])))))));
             }
           (((scm_assert_cell_valid (((tl))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((tl))))))) [(1)] = ((scm_t_bits) (((arg1)))))))));
         }
 
       args = scm_acons ((((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) ( ((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid (( ((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits  *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(0)]))))))), args, (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)]))))));
       proc = (((scm_assert_cell_valid (((((scm_assert_cell_valid ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bit s) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((((SCM) ((sc m_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((((SCM) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_ cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 3)))))))) [(0)]))))))))))))) [(1)])))))));
     again:
       arg1 = proc;
       while (!((((scm_t_bits) ((arg1 = (((scm_assert_cell_valid ((arg1)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((arg1)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         {
           if ((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))))
             {
               if (((0x187 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == 4))
                 {
                   proc = scm_m_expand_body (proc, args);
                   goto again;
                 }
               else
                 do { if ((((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))) scm_misc_error (((void *)0), scm _s_expression, ((SCM) (((20) << 9) + 0x174L))); } while (0);
             }
           else
             scm_deval ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), args);
           proc = arg1;
         }
       do { proc = (((6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) ? (((((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *)  ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))) & 0xff)==scm_tc8_iloc) ? *scm_ilookup (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))), args) : (((((scm_t_bits) (((( (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L))))) ? scm_misc_error (((void *)0), scm_s_expression, ((SCM) (((20) << 9) + 0x174L ))), 0 : 0), ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) : ((!(6 & ((scm_t_bits) ((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bi!
 ts *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))))))))) && ((0x7f & (scm_assert_cell_valid (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))), ((((const scm_t_bits *)  ((scm_t_cell *) (((scm_t_bits) (((((scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))))))))) [(0)])))) == 5)) ? *scm_lookupcar (proc, args, 1) : scm_deval ((((scm_assert_cell_valid ((p roc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))))))), args)))); goto exit; } while (0);
     case 127:
       if (!((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply))
         goto badproc;
       if (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))))
         do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_0 (proc))); goto exit; } while (0);
       else if (((((scm_t_bits) ((args))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_1 (proc, (arg1)))); goto exit; } while (0);
       else if (((((scm_t_bits) (((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)])))))))))) == ((scm_t_bits) (((SCM) (((20) << 9) + 0x174L)))))))
         do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_2 (proc, (arg1), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits  *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)]))))))))))); goto exit; } while (0);
       else
         do { proc = (((scm_smobs[((0x0ff & (((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)])))) >> 8)))]).apply_3 (proc, (arg1), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits  *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(0)])))))))), ((((scm_assert_cell_valid ((args)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((args)))))) [(1)]))))))))))); goto exit; } while (0);
     case 63:
 
       args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : debug.vect[0].a.args);
       arg1 = proc;
       proc = ((((SCM) (((scm_t_bits *) (scm_assert_cell_valid (((proc))), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((proc))))))) [(1)])))) [0]))));
       debug.vect[0].a.proc = proc;
       debug.vect[0].a.args = scm_cons (arg1, args);
 
 
 
 
 
       goto tail;
     case 31:
       proc = (scm_assert_cell_valid ((proc)), ((((SCM) (((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))));
 
       debug.vect[0].a.proc = proc;
 
       goto tail;
     case 1:case 9:case 17:case 25: case 33:case 41:case 49:case 57: case 65:case 73:case 81:case 89: case 97:case 105:case 113:case 121:
       if ((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (0x010 << 20))
         {
 
           args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : debug.vect[0].a.args);
 
 
 
           do { proc = (scm_apply_generic (proc, args)); goto exit; } while (0);
         }
       else if (!(((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 29)) != 0))
         goto badproc;
       else
         {
 
           args = (((((scm_t_bits) ((arg1))) == ((scm_t_bits) (((SCM) (((18) << 9) + 0x174L)))))) ? ((SCM) (((20) << 9) + 0x174L)) : debug.vect[0].a.args);
 
 
 
           arg1 = proc;
           proc = ((((((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)) [-1]) & (1L << 30)) != 0)
                   ? (((SCM) (((scm_t_bits *) (scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(1)])))) [-5])))
                   : (((struct scm_metaclass_operator *) ((scm_t_bits *) ((scm_assert_cell_valid ((proc)), ((((const scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) ((proc)))))) [(0)]))) - 1)))->procedure));
 
           debug.vect[0].a.proc = proc;
           debug.vect[0].a.args = scm_cons (arg1, args);
 
           if ((!(6 & ((scm_t_bits) (proc)))))
             goto tail;
           else
             goto badproc;
         }
     default:
     badproc:
       scm_wrong_type_arg ("apply", 1, proc);
     }
 
 exit:
   if (scm_check_exit_p && scm_evaluator_trap_table[0].val)
     if (scm_evaluator_trap_table[3].val || (scm_debug_opts[2].val && (((debug).status & (1L << 8)) != 0)))
       {
         ((debug).status &= ~(1L << 8));
         if (scm_debug_opts[0].val)
           arg1 = scm_make_debugobj (&debug);
         else
           {
             int first;
             SCM val = scm_make_continuation (&first);
 
             if (first)
               arg1 = val;
             else
               {
                 proc = val;
                 goto ret;
               }
           }
         scm_evaluator_trap_table[0].val = 0;
         scm_call_3 ((SCM)(scm_evaluator_trap_table[6].val), scm_sym_exit_frame, arg1, proc);
         scm_evaluator_trap_table[0].val = 1;
       }
 ret:
   scm_last_debug_frame = debug.prev;
   return proc;
 
 }
 # 4184 "eval.c" 2
 
 
 
 
 void
 scm_init_eval ()
 {
   scm_init_opts (scm_evaluator_traps,
                  scm_evaluator_trap_table,
                  7);
   scm_init_opts (scm_eval_options_interface,
                  scm_eval_opts,
                  1);
 
   scm_tc16_promise = scm_make_smob_type ("promise", 0);
   scm_set_smob_mark (scm_tc16_promise, scm_markcdr);
   scm_set_smob_print (scm_tc16_promise, promise_print);
 
 
   scm_sys_protects[2] = scm_list_1 (((SCM) (((18) << 9) + 0x174L)));
   (((scm_assert_cell_valid (((scm_sys_protects[2]))), ((((scm_t_bits *) ((scm_t_cell *) (((scm_t_bits) (((scm_sys_protects[2]))))))) [(1)] = ((scm_t_bits) (((scm_sys_protects[2])))))))));
   scm_sys_protects[1] = scm_list_1 (((SCM) (((20) << 9) + 0x174L)));
 
   scm_f_apply = scm_c_define_subr ("apply", 117, scm_apply);
 
 
 
 
 # 1 "../libguile/eval.x" 1
 
 
  scm_unbound_variable_key = scm_permanent_object (scm_str2symbol ("unbound-variable")) ;
  sym_three_question_marks = scm_permanent_object (scm_str2symbol ("???")) ;
  scm_sym_dot = scm_permanent_object (scm_str2symbol (".")) ;
  scm_sym_arrow = scm_permanent_object (scm_str2symbol ("=>")) ;
  scm_sym_else = scm_permanent_object (scm_str2symbol ("else")) ;
  scm_sym_unquote = scm_permanent_object (scm_str2symbol ("unquote")) ;
  scm_sym_uq_splicing = scm_permanent_object (scm_str2symbol ("unquote-splicing")) ;
  scm_sym_enter_frame = scm_permanent_object (scm_str2symbol ("enter-frame")) ;
  scm_sym_apply_frame = scm_permanent_object (scm_str2symbol ("apply-frame")) ;
  scm_sym_exit_frame = scm_permanent_object (scm_str2symbol ("exit-frame")) ;
  scm_sym_trace = scm_permanent_object (scm_str2symbol ("trace")) ;
  scm_make_synt (s_quote, scm_makmmacro, scm_m_quote) ;
  scm_sym_quote = scm_permanent_object (scm_str2symbol (s_quote)) ;
  scm_make_synt (s_begin, scm_makmmacro, scm_m_begin) ;
  scm_sym_begin = scm_permanent_object (scm_str2symbol (s_begin)) ;
  scm_make_synt (s_if, scm_makmmacro, scm_m_if) ;
  scm_sym_if = scm_permanent_object (scm_str2symbol (s_if)) ;
  scm_sym_set_x = scm_permanent_object (scm_str2symbol (scm_s_set_x)) ;
  scm_make_synt (s_and, scm_makmmacro, scm_m_and) ;
  scm_sym_and = scm_permanent_object (scm_str2symbol (s_and)) ;
  scm_make_synt (s_or, scm_makmmacro, scm_m_or) ;
  scm_sym_or = scm_permanent_object (scm_str2symbol (s_or)) ;
  scm_make_synt (s_case, scm_makmmacro, scm_m_case) ;
  scm_sym_case = scm_permanent_object (scm_str2symbol (s_case)) ;
  scm_make_synt (s_cond, scm_makmmacro, scm_m_cond) ;
  scm_sym_cond = scm_permanent_object (scm_str2symbol (s_cond)) ;
  scm_make_synt (s_lambda, scm_makmmacro, scm_m_lambda) ;
  scm_sym_lambda = scm_permanent_object (scm_str2symbol (s_lambda)) ;
  scm_make_synt (s_letstar, scm_makmmacro, scm_m_letstar) ;
  scm_sym_letstar = scm_permanent_object (scm_str2symbol (s_letstar)) ;
  scm_make_synt (s_do, scm_makmmacro, scm_m_do) ;
  scm_sym_do = scm_permanent_object (scm_str2symbol (s_do)) ;
  scm_make_synt (s_quasiquote, scm_makacro, scm_m_quasiquote) ;
  scm_sym_quasiquote = scm_permanent_object (scm_str2symbol (s_quasiquote)) ;
  scm_make_synt (s_delay, scm_makmmacro, scm_m_delay) ;
  scm_sym_delay = scm_permanent_object (scm_str2symbol (s_delay)) ;
  scm_make_synt (s_define, scm_makmmacro, scm_m_define) ;
  scm_sym_define = scm_permanent_object (scm_str2symbol (s_define)) ;
  scm_make_synt (s_letrec, scm_makmmacro, scm_m_letrec) ;
  scm_sym_letrec = scm_permanent_object (scm_str2symbol (s_letrec)) ;
  scm_make_synt (s_let, scm_makmmacro, scm_m_let) ;
  scm_sym_let = scm_permanent_object (scm_str2symbol (s_let)) ;
  scm_make_synt (s_atapply, scm_makmmacro, scm_m_apply) ;
  scm_sym_atapply = scm_permanent_object (scm_str2symbol (s_atapply)) ;
  scm_sym_apply = scm_permanent_object (scm_str2symbol (s_atapply + 1)) ;
  scm_make_synt (s_atcall_cc, scm_makmmacro, scm_m_cont) ;
  scm_sym_atcall_cc = scm_permanent_object (scm_str2symbol (s_atcall_cc)) ;
  scm_make_synt (s_nil_cond, scm_makmmacro, scm_m_nil_cond) ;
  scm_make_synt (s_atfop, scm_makmmacro, scm_m_atfop) ;
  scm_make_synt (s_atbind, scm_makmmacro, scm_m_atbind) ;
  scm_make_synt (s_at_call_with_values, scm_makmmacro, scm_m_at_call_with_values) ;
  scm_sym_at_call_with_values = scm_permanent_object (scm_str2symbol (s_at_call_with_values)) ;
  scm_c_define_gsubr (s_scm_nconc2last, 1, 0, 0, (SCM (*)()) scm_nconc2last); ;
  g_map = ((SCM) (0)); scm_c_define_gsubr_with_generic (s_map, 2, 0, 1, (SCM (*)()) scm_map, &g_map) ;
  g_for_each = ((SCM) (0)); scm_c_define_gsubr_with_generic (s_for_each, 2, 0, 1, (SCM (*)()) scm_for_each, &g_for_each) ;
  scm_c_define_gsubr (s_scm_force, 1, 0, 0, (SCM (*)()) scm_force); ;
  scm_c_define_gsubr (s_scm_promise_p, 1, 0, 0, (SCM (*)()) scm_promise_p); ;
  scm_c_define_gsubr (s_scm_cons_source, 3, 0, 0, (SCM (*)()) scm_cons_source); ;
  scm_c_define_gsubr (s_scm_copy_tree, 1, 0, 0, (SCM (*)()) scm_copy_tree); ;
  scm_c_define_gsubr (s_scm_primitive_eval, 1, 0, 0, (SCM (*)()) scm_primitive_eval); ;
  scm_c_define_gsubr (s_scm_eval, 2, 0, 0, (SCM (*)()) scm_eval); ;
  scm_c_define_gsubr (s_scm_eval_options_interface, 0, 1, 0, (SCM (*)()) scm_eval_options_interface); ;
  scm_c_define_gsubr (s_scm_evaluator_traps, 0, 1, 0, (SCM (*)()) scm_evaluator_traps); ;
 # 4213 "eval.c" 2
 
   scm_add_feature ("delay");
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-08-06 14:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-06  7:06 c/7507: gcc segv Han-Wen Nienhuys

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).