gcc 2.95.2: Internal compiler error in `lookup_attribute'

Fergus Henderson fjh@cs.mu.OZ.AU
Fri Nov 24 03:51:00 GMT 2000


The following program makes use of `attribute((regparm(2)))'.
GNU C 2.95.2 on Linux gets an internal error when compiling it.

$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000220 (Debian GNU/Linux)

$ gcc -c bug.c
bug.c:2250: Internal compiler error in `lookup_attribute', at tree.c:3527
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

$ cat bug.c
typedef unsigned int 		MR_uintptr_t;
typedef int 			MR_intptr_t;
typedef unsigned long long 	MR_uint_least64_t;
typedef long long 		MR_int_least64_t;
typedef unsigned int 	MR_uint_least32_t;
typedef int 		MR_int_least32_t;
typedef unsigned short 	MR_uint_least16_t;
typedef short 		MR_int_least16_t;
typedef unsigned char			MR_uint_least8_t;
typedef signed char			MR_int_least8_t;
typedef	MR_uintptr_t		MR_Word;
typedef	MR_intptr_t		MR_Integer;
typedef	MR_uintptr_t		MR_Unsigned;
typedef	MR_intptr_t		MR_Bool;
typedef void			MR_Code;
	typedef	double			MR_Float64;
typedef char MR_Char;
typedef unsigned char MR_UnsignedChar;
typedef MR_Char *MR_String;
typedef const MR_Char *MR_ConstString;
typedef __attribute__((__regparm__(2)))  void (*MR_NestedCont) (void);  
typedef __attribute__((__regparm__(2)))  void (*MR_Cont) (void *);  
typedef void 	*MR_Box;
typedef double MR_Float;
MR_Integer MR_hash_float(MR_Float);
typedef unsigned int size_t;
typedef long int wchar_t;
typedef struct
  {
    int quot;			 
    int rem;			 
  } div_t;
typedef struct
  {
    long int quot;		 
    long int rem;		 
  } ldiv_t;
extern size_t __ctype_get_mb_cur_max  (void)    ;
extern double atof  (__const char *__nptr)    ;
extern int atoi  (__const char *__nptr)    ;
extern long int atol  (__const char *__nptr)    ;
extern double strtod  (__const char *__restrict __nptr,
			   char **__restrict __endptr)    ;
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)    ;
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);
}
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);
}
extern int rand  (void)    ;
extern void srand  (unsigned int __seed)    ;
extern void *  malloc  (size_t __size)    ;
extern void *  calloc  (size_t __nmemb, size_t __size)    ;
extern void *  realloc  (void *  __ptr, size_t __size)    ;
extern void free  (void *  __ptr)    ;
extern void abort  (void)     __attribute__ ((__noreturn__));
extern int atexit  (void (*__func) (void))    ;
extern void exit  (int __status)     __attribute__ ((__noreturn__));
extern char *getenv  (__const char *__name)    ;
extern char *__secure_getenv  (__const char *__name)    ;
extern int system  (__const char *__command)    ;
typedef int (*__compar_fn_t)  (__const void * , __const void * )  ;
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__));
extern div_t div  (int __numer, int __denom)     __attribute__ ((__const__));
extern ldiv_t ldiv  (long int __numer, long int __denom)    
     __attribute__ ((__const__));
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 void __assert_fail  (__const char *__assertion,
				__const char *__file,
				unsigned int __line,
				__const char *__function)    
     __attribute__ ((__noreturn__));
extern void __assert_perror_fail  (int __errnum,
				       __const char *__file,
				       unsigned int __line,
				       __const char *__function)    
     __attribute__ ((__noreturn__));
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;
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 long int __swblk_t;		 

typedef long int __clock_t;
typedef unsigned long int __fd_mask;
typedef struct
  {
    __fd_mask __fds_bits[1024  / (8 * sizeof (__fd_mask)) ];
  } __fd_set;
typedef int __key_t;
typedef unsigned short int __ipc_pid_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_long __ino64_t;
typedef __loff_t __off64_t;
typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;
typedef int __intptr_t;
enum
{
  _ISupper = (( 0 ) < 8 ? ((1 << ( 0 )) << 8) : ((1 << ( 0 )) >> 8)) ,	 
  _ISlower = (( 1 ) < 8 ? ((1 << ( 1 )) << 8) : ((1 << ( 1 )) >> 8)) ,	 
  _ISalpha = (( 2 ) < 8 ? ((1 << ( 2 )) << 8) : ((1 << ( 2 )) >> 8)) ,	 
  _ISdigit = (( 3 ) < 8 ? ((1 << ( 3 )) << 8) : ((1 << ( 3 )) >> 8)) ,	 
  _ISxdigit = (( 4 ) < 8 ? ((1 << ( 4 )) << 8) : ((1 << ( 4 )) >> 8)) ,	 
  _ISspace = (( 5 ) < 8 ? ((1 << ( 5 )) << 8) : ((1 << ( 5 )) >> 8)) ,	 
  _ISprint = (( 6 ) < 8 ? ((1 << ( 6 )) << 8) : ((1 << ( 6 )) >> 8)) ,	 
  _ISgraph = (( 7 ) < 8 ? ((1 << ( 7 )) << 8) : ((1 << ( 7 )) >> 8)) ,	 
  _ISblank = (( 8 ) < 8 ? ((1 << ( 8 )) << 8) : ((1 << ( 8 )) >> 8)) ,	 
  _IScntrl = (( 9 ) < 8 ? ((1 << ( 9 )) << 8) : ((1 << ( 9 )) >> 8)) ,	 
  _ISpunct = (( 10 ) < 8 ? ((1 << ( 10 )) << 8) : ((1 << ( 10 )) >> 8)) ,	 
  _ISalnum = (( 11 ) < 8 ? ((1 << ( 11 )) << 8) : ((1 << ( 11 )) >> 8)) 	 
};
extern __const unsigned short int *__ctype_b;	 
extern __const __int32_t *__ctype_tolower;  
extern __const __int32_t *__ctype_toupper;  
extern int  isalnum   (int)     ;
extern int  isalpha   (int)     ;
extern int  iscntrl   (int)     ;
extern int  isdigit   (int)     ;
extern int  islower   (int)     ;
extern int  isgraph   (int)     ;
extern int  isprint   (int)     ;
extern int  ispunct   (int)     ;
extern int  isspace   (int)     ;
extern int  isupper   (int)     ;
extern int  isxdigit   (int)     ;
extern int tolower  (int __c)    ;
extern int toupper  (int __c)    ;
extern __inline int
tolower (int __c)  
{
  return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c;
}
extern __inline int
toupper (int __c)  
{
  return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c;
}
extern const char   MR_grade_v3_hlc_gc_tags2                     ;
typedef enum { MR_use_now, MR_use_later } MR_when_to_use;
extern	MR_Bool	MR_init_thread(MR_when_to_use);
extern	void    MR_finalize_thread_engine(void);
typedef const struct MR_TypeCtorInfo_Struct		*MR_TypeCtorInfo;
typedef       struct MR_TypeInfo_Almost_Struct		*MR_TypeInfo;
typedef const struct MR_PseudoTypeInfo_Almost_Struct	*MR_PseudoTypeInfo;
struct  MR_TypeInfo_Almost_Struct  {	MR_TypeCtorInfo     MR_ti_type_ctor_info;	MR_Integer          MR_ti_higher_order_arity;	MR_TypeInfo         MR_ti_higher_order_arg_typeinfos[ 
	0  ];	} ;
struct  MR_PseudoTypeInfo_Almost_Struct  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[ 
	0  ]; } ;
typedef MR_TypeInfo     *MR_TypeInfoParams;
typedef enum {
     MR_TYPECTOR_REP_ENUM ,	  mercury__private_builtin__MR_TYPECTOR_REP_ENUM      =  MR_TYPECTOR_REP_ENUM  ,
     MR_TYPECTOR_REP_ENUM_USEREQ ,	  mercury__private_builtin__MR_TYPECTOR_REP_ENUM_USEREQ      =  MR_TYPECTOR_REP_ENUM_USEREQ  ,
     MR_TYPECTOR_REP_DU ,	  mercury__private_builtin__MR_TYPECTOR_REP_DU      =  MR_TYPECTOR_REP_DU  ,
     MR_TYPECTOR_REP_DU_USEREQ ,	  mercury__private_builtin__MR_TYPECTOR_REP_DU_USEREQ      =  MR_TYPECTOR_REP_DU_USEREQ  ,
     MR_TYPECTOR_REP_NOTAG ,	  mercury__private_builtin__MR_TYPECTOR_REP_NOTAG      =  MR_TYPECTOR_REP_NOTAG  ,
     MR_TYPECTOR_REP_NOTAG_USEREQ ,	  mercury__private_builtin__MR_TYPECTOR_REP_NOTAG_USEREQ      =  MR_TYPECTOR_REP_NOTAG_USEREQ  ,
     MR_TYPECTOR_REP_EQUIV ,	  mercury__private_builtin__MR_TYPECTOR_REP_EQUIV      =  MR_TYPECTOR_REP_EQUIV  ,
     MR_TYPECTOR_REP_EQUIV_VAR ,	  mercury__private_builtin__MR_TYPECTOR_REP_EQUIV_VAR      =  MR_TYPECTOR_REP_EQUIV_VAR  ,
     MR_TYPECTOR_REP_INT ,	  mercury__private_builtin__MR_TYPECTOR_REP_INT      =  MR_TYPECTOR_REP_INT  ,
     MR_TYPECTOR_REP_CHAR ,	  mercury__private_builtin__MR_TYPECTOR_REP_CHAR      =  MR_TYPECTOR_REP_CHAR  ,
     MR_TYPECTOR_REP_FLOAT ,	  mercury__private_builtin__MR_TYPECTOR_REP_FLOAT      =  MR_TYPECTOR_REP_FLOAT  ,
     MR_TYPECTOR_REP_STRING ,	  mercury__private_builtin__MR_TYPECTOR_REP_STRING      =  MR_TYPECTOR_REP_STRING  ,
     MR_TYPECTOR_REP_PRED ,	  mercury__private_builtin__MR_TYPECTOR_REP_PRED      =  MR_TYPECTOR_REP_PRED  ,
     MR_TYPECTOR_REP_UNIV ,	  mercury__private_builtin__MR_TYPECTOR_REP_UNIV      =  MR_TYPECTOR_REP_UNIV  ,
     MR_TYPECTOR_REP_VOID ,	  mercury__private_builtin__MR_TYPECTOR_REP_VOID      =  MR_TYPECTOR_REP_VOID  ,
     MR_TYPECTOR_REP_C_POINTER ,	  mercury__private_builtin__MR_TYPECTOR_REP_C_POINTER      =  MR_TYPECTOR_REP_C_POINTER  ,
     MR_TYPECTOR_REP_TYPEINFO ,	  mercury__private_builtin__MR_TYPECTOR_REP_TYPEINFO      =  MR_TYPECTOR_REP_TYPEINFO  ,
     MR_TYPECTOR_REP_TYPECLASSINFO ,	  mercury__private_builtin__MR_TYPECTOR_REP_TYPECLASSINFO      =  MR_TYPECTOR_REP_TYPECLASSINFO  ,
     MR_TYPECTOR_REP_ARRAY ,	  mercury__private_builtin__MR_TYPECTOR_REP_ARRAY      =  MR_TYPECTOR_REP_ARRAY  ,
     MR_TYPECTOR_REP_SUCCIP ,	  mercury__private_builtin__MR_TYPECTOR_REP_SUCCIP      =  MR_TYPECTOR_REP_SUCCIP  ,
     MR_TYPECTOR_REP_HP ,	  mercury__private_builtin__MR_TYPECTOR_REP_HP      =  MR_TYPECTOR_REP_HP  ,
     MR_TYPECTOR_REP_CURFR ,	  mercury__private_builtin__MR_TYPECTOR_REP_CURFR      =  MR_TYPECTOR_REP_CURFR  ,
     MR_TYPECTOR_REP_MAXFR ,	  mercury__private_builtin__MR_TYPECTOR_REP_MAXFR      =  MR_TYPECTOR_REP_MAXFR  ,
     MR_TYPECTOR_REP_REDOFR ,	  mercury__private_builtin__MR_TYPECTOR_REP_REDOFR      =  MR_TYPECTOR_REP_REDOFR  ,
     MR_TYPECTOR_REP_REDOIP ,	  mercury__private_builtin__MR_TYPECTOR_REP_REDOIP      =  MR_TYPECTOR_REP_REDOIP  ,
     MR_TYPECTOR_REP_TRAIL_PTR ,	  mercury__private_builtin__MR_TYPECTOR_REP_TRAIL_PTR      =  MR_TYPECTOR_REP_TRAIL_PTR  ,
     MR_TYPECTOR_REP_TICKET ,	  mercury__private_builtin__MR_TYPECTOR_REP_TICKET      =  MR_TYPECTOR_REP_TICKET  ,
     MR_TYPECTOR_REP_NOTAG_GROUND ,	  mercury__private_builtin__MR_TYPECTOR_REP_NOTAG_GROUND      =  MR_TYPECTOR_REP_NOTAG_GROUND  ,
     MR_TYPECTOR_REP_NOTAG_GROUND_USEREQ ,	  mercury__private_builtin__MR_TYPECTOR_REP_NOTAG_GROUND_USEREQ      =  MR_TYPECTOR_REP_NOTAG_GROUND_USEREQ  ,
     MR_TYPECTOR_REP_EQUIV_GROUND ,	  mercury__private_builtin__MR_TYPECTOR_REP_EQUIV_GROUND      =  MR_TYPECTOR_REP_EQUIV_GROUND  ,
     MR_TYPECTOR_REP_TUPLE ,	  mercury__private_builtin__MR_TYPECTOR_REP_TUPLE      =  MR_TYPECTOR_REP_TUPLE  ,
     MR_TYPECTOR_REP_UNKNOWN ,	  mercury__private_builtin__MR_TYPECTOR_REP_UNKNOWN      =  MR_TYPECTOR_REP_UNKNOWN  
} MR_TypeCtorRep;
typedef struct {
    MR_int_least16_t    MR_exist_arg_num;
    MR_int_least16_t    MR_exist_offset_in_tci;
} MR_DuExistLocn;
typedef struct {
    MR_int_least16_t        MR_exist_typeinfos_plain;
    MR_int_least16_t        MR_exist_typeinfos_in_tci;
    MR_int_least16_t        MR_exist_tcis;
    const MR_DuExistLocn    *MR_exist_typeinfo_locns;
} MR_DuExistInfo;
typedef enum {
     MR_SECTAG_NONE ,	  mercury__private_builtin__MR_SECTAG_NONE      =  MR_SECTAG_NONE  ,
     MR_SECTAG_LOCAL ,	  mercury__private_builtin__MR_SECTAG_LOCAL      =  MR_SECTAG_LOCAL  ,
     MR_SECTAG_REMOTE ,	  mercury__private_builtin__MR_SECTAG_REMOTE      =  MR_SECTAG_REMOTE  
} MR_Sectag_Locn;
typedef struct {
    MR_ConstString          MR_du_functor_name;
    MR_int_least16_t        MR_du_functor_orig_arity;
    MR_int_least16_t        MR_du_functor_arg_type_contains_var;
    MR_Sectag_Locn          MR_du_functor_sectag_locn;
    MR_int_least8_t         MR_du_functor_primary;
    MR_int_least32_t        MR_du_functor_secondary;
    MR_int_least32_t        MR_du_functor_ordinal;
    const MR_PseudoTypeInfo *MR_du_functor_arg_types;
    const MR_ConstString    *MR_du_functor_arg_names;
    const MR_DuExistInfo    *MR_du_functor_exist_info;
} MR_DuFunctorDesc;
typedef struct {
    MR_ConstString      MR_enum_functor_name;
    MR_int_least32_t    MR_enum_functor_ordinal;
} MR_EnumFunctorDesc;
typedef struct {
    MR_ConstString      MR_notag_functor_name;
    MR_PseudoTypeInfo   MR_notag_functor_arg_type;
} MR_NotagFunctorDesc;
typedef struct {
    MR_int_least32_t        MR_sectag_sharers;
    MR_Sectag_Locn          MR_sectag_locn;
    const MR_DuFunctorDesc * const * MR_sectag_alternatives;
} MR_DuPtagLayout;
typedef MR_DuPtagLayout     *MR_DuTypeLayout;
typedef MR_EnumFunctorDesc  **MR_EnumTypeLayout;
typedef MR_NotagFunctorDesc *MR_NotagTypeLayout;
typedef MR_PseudoTypeInfo   MR_EquivLayout;
  typedef	void        *MR_ProcAddr;
typedef union {
    void                *layout_init;
    MR_DuTypeLayout     layout_du;
    MR_EnumTypeLayout   layout_enum;
    MR_NotagTypeLayout  layout_notag;
    MR_EquivLayout      layout_equiv;
} MR_TypeLayout;
typedef union {
    void                *functors_init;
    MR_DuFunctorDesc    **functors_du;
    MR_EnumFunctorDesc  **functors_enum;
    MR_NotagFunctorDesc *functors_notag;
} MR_TypeFunctors;
struct MR_TypeCtorInfo_Struct {
    MR_Integer          arity;
    MR_ProcAddr         unify_pred;
    MR_ProcAddr         new_unify_pred;
    MR_ProcAddr         compare_pred;
    MR_TypeCtorRep      type_ctor_rep;
    MR_ProcAddr         solver_pred;
    MR_ProcAddr         init_pred;
    MR_ConstString      type_ctor_module_name;
    MR_ConstString      type_ctor_name;
    MR_Integer          type_ctor_version;
    MR_TypeFunctors     type_functors;
    MR_TypeLayout       type_layout;
    MR_int_least32_t    type_ctor_num_functors;
    MR_int_least8_t     type_ctor_num_ptags;     
};
  extern const struct MR_TypeCtorInfo_Struct 
        mercury__builtin__builtin__type_ctor_info_pred_0,
        mercury__builtin__builtin__type_ctor_info_func_0,
        mercury__builtin__builtin__type_ctor_info_tuple_0;
extern  int     MR_compare_type_info(MR_TypeInfo t1, MR_TypeInfo t2);
extern  MR_TypeInfo MR_collapse_equivalences(MR_TypeInfo type_info);
extern  MR_TypeInfo MR_create_type_info(
                const MR_TypeInfoParams type_info_params,
                const MR_PseudoTypeInfo pseudo_type_info);
extern  MR_TypeInfo MR_create_type_info_maybe_existq(
                const MR_TypeInfoParams type_info_params,
                const MR_PseudoTypeInfo pseudo_type_info,
                const MR_Word *data_value,
                const MR_DuFunctorDesc *functor_descriptor);
struct MR_MemoryCellNode {
    void                        *data;
    struct MR_MemoryCellNode    *next;
};
typedef struct MR_MemoryCellNode *MR_MemoryList;
extern  MR_TypeInfo MR_make_type_info(
                        const MR_TypeInfoParams type_info_params,
                        const MR_PseudoTypeInfo pseudo_type_info,
                        MR_MemoryList *allocated);
extern  MR_TypeInfo MR_make_type_info_maybe_existq(
                        const MR_TypeInfoParams type_info_params,
                        const MR_PseudoTypeInfo pseudo_type_info,
                        const MR_Word *data_value,
                        const MR_DuFunctorDesc *functor_descriptor,
                        MR_MemoryList *allocated);
extern  void        MR_deallocate(MR_MemoryList allocated_memory_cells);
typedef	enum { MR_PREDICATE, MR_FUNCTION } MR_PredFunc;
typedef	MR_int_least16_t	MR_Determinism;
typedef MR_uint_least32_t	MR_Long_Lval;
typedef enum {
	MR_LONG_LVAL_TYPE_R,
	MR_LONG_LVAL_TYPE_F,
	MR_LONG_LVAL_TYPE_STACKVAR,
	MR_LONG_LVAL_TYPE_FRAMEVAR,
	MR_LONG_LVAL_TYPE_SUCCIP,
	MR_LONG_LVAL_TYPE_MAXFR,
	MR_LONG_LVAL_TYPE_CURFR,
	MR_LONG_LVAL_TYPE_HP,
	MR_LONG_LVAL_TYPE_SP,
	MR_LONG_LVAL_TYPE_INDIRECT,
	MR_LONG_LVAL_TYPE_UNKNOWN 
} MR_Long_Lval_Type;
typedef MR_uint_least8_t	MR_Short_Lval;
typedef enum {
	MR_SHORT_LVAL_TYPE_R,
	MR_SHORT_LVAL_TYPE_STACKVAR,
	MR_SHORT_LVAL_TYPE_FRAMEVAR,
	MR_SHORT_LVAL_TYPE_SPECIAL
} MR_Short_Lval_Type;
typedef	struct MR_Type_Param_Locns_Struct {
	MR_uint_least32_t	MR_tp_param_count;
	MR_Long_Lval		MR_tp_param_locns[0 ];
} MR_Type_Param_Locns;
typedef	struct MR_Stack_Layout_Vars_Struct {
	MR_Integer		MR_slvs_var_count;
	void			*MR_slvs_locns_types;
	MR_uint_least16_t	*MR_slvs_var_nums;
	MR_Type_Param_Locns	*MR_slvs_tvars;
} MR_Stack_Layout_Vars;
typedef struct MR_Stack_Layout_User_Proc_Struct {
	MR_PredFunc		MR_user_pred_or_func;
	MR_ConstString		MR_user_decl_module;
	MR_ConstString		MR_user_def_module;
	MR_ConstString		MR_user_name;
	MR_int_least16_t	MR_user_arity;
	MR_int_least16_t	MR_user_mode;
} MR_Stack_Layout_User_Proc;
typedef struct MR_Stack_Layout_Compiler_Proc_Struct {
	MR_ConstString		MR_comp_type_name;
	MR_ConstString		MR_comp_type_module;
	MR_ConstString		MR_comp_def_module;
	MR_ConstString		MR_comp_pred_name;
	MR_int_least16_t	MR_comp_arity;
	MR_int_least16_t	MR_comp_mode;
} MR_Stack_Layout_Compiler_Proc;
typedef union MR_Stack_Layout_Proc_Id_Union {
	MR_Stack_Layout_User_Proc	MR_proc_user;
	MR_Stack_Layout_Compiler_Proc	MR_proc_comp;
} MR_Stack_Layout_Proc_Id;
typedef	enum {
	MR_EVAL_METHOD_NORMAL,
	MR_EVAL_METHOD_LOOP_CHECK,
	MR_EVAL_METHOD_MEMO,
	MR_EVAL_METHOD_MINIMAL
} MR_EvalMethod;
typedef	MR_int_least8_t		MR_EvalMethodInt;
typedef	struct MR_Stack_Layout_Entry_Struct {
	MR_Code			*MR_sle_code_addr;
	MR_Long_Lval		MR_sle_succip_locn;
	MR_int_least16_t	MR_sle_stack_slots;
	MR_Determinism		MR_sle_detism;
	MR_Stack_Layout_Proc_Id	MR_sle_proc_id;
	struct MR_Stack_Layout_Label_Struct
				*MR_sle_call_label;
	struct MR_Module_Layout_Struct
				*MR_sle_module_layout;
	MR_Word			MR_sle_proc_rep;
	MR_int_least16_t	*MR_sle_used_var_names;
	MR_int_least16_t	MR_sle_max_var_num;
	MR_int_least16_t	MR_sle_max_r_num;
	MR_int_least8_t		MR_sle_maybe_from_full;
	MR_int_least8_t		MR_sle_maybe_trail;
	MR_int_least8_t		MR_sle_maybe_maxfr;
	MR_EvalMethodInt	MR_sle_eval_method_CAST_ME;
	MR_int_least8_t		MR_sle_maybe_call_table;
	MR_int_least8_t		MR_sle_maybe_decl_debug;
} MR_Stack_Layout_Entry;
typedef	struct MR_Stack_Layout_Label_Struct {
	MR_Stack_Layout_Entry	*MR_sll_entry;
	MR_int_least16_t	MR_sll_port;
	MR_int_least16_t	MR_sll_goal_path;
	MR_Stack_Layout_Vars	MR_sll_var_info;
} MR_Stack_Layout_Label;
typedef enum {
	MR_TRACE_LEVEL_NONE,
	MR_TRACE_LEVEL_SHALLOW,
	MR_TRACE_LEVEL_DEEP,
	MR_TRACE_LEVEL_DECL,
	MR_TRACE_LEVEL_DECL_REP
} MR_Trace_Level;
typedef struct MR_Module_File_Layout_Struct {
	MR_String		MR_mfl_filename;
	MR_Integer		MR_mfl_label_count;
	MR_int_least16_t	*MR_mfl_label_lineno;
	MR_Stack_Layout_Label	**MR_mfl_label_layout;
} MR_Module_File_Layout;
typedef	struct MR_Module_Layout_Struct {
	MR_String		MR_ml_name;
	MR_Integer		MR_ml_string_table_size;
	char			*MR_ml_string_table;
	MR_Integer		MR_ml_proc_count;
	MR_Stack_Layout_Entry	**MR_ml_procs;
	MR_Integer		MR_ml_filename_count;
	MR_Module_File_Layout	**MR_ml_module_file_layout;
	MR_Trace_Level		MR_ml_trace_level;
} MR_Module_Layout;
typedef struct MR_Closure_Layout_Struct {
	MR_Stack_Layout_Proc_Id	proc_id;
	MR_Type_Param_Locns	*type_params;
	MR_Integer			num_all_args;
	MR_PseudoTypeInfo	arg_pseudo_type_info[0 ];
} MR_Closure_Layout;
typedef struct MR_Closure_Struct {
	MR_Closure_Layout	*MR_closure_layout;
	MR_Code			*MR_closure_code;
	MR_Unsigned                MR_closure_num_hidden_args;
	MR_Word                    MR_closure_hidden_args_0[0 ];
} MR_Closure;
typedef MR_Word 		Word;
typedef MR_Code 		Code;
typedef MR_Char 		Char;
typedef MR_Float 		Float;
typedef MR_Float64 		Float64;
typedef MR_Integer 		Integer;
typedef MR_Unsigned 		Unsigned;
typedef MR_UnsignedChar 	UnsignedChar;
typedef MR_String 		String;
typedef MR_ConstString 		ConstString;
typedef MR_Bool 		Bool;
extern	MR_Word	MR_get_reg(int);
extern	MR_Word	MR_set_reg(int, MR_Word);
extern	MR_Word		MR_virtual_reg_map[32 ];
extern	unsigned long 	MR_num_uses[(32   + 16) ];
typedef struct MR_MemoryZone_Struct	MR_MemoryZone;
typedef char 	MR_ZoneHandler(MR_Word *addr, MR_MemoryZone *zone,
			void *context);
struct MR_MemoryZone_Struct {
	MR_MemoryZone *next;
	const char *name;	 
	int	id;		 
	MR_Word	*bottom;	 
	MR_Word	*top;		 
	MR_Word	*min;		 
	MR_Word	*max;		 
	MR_Word	*hardmax;	 
	MR_Word	*redzone_base;	 
	MR_Word	*redzone;	 
	MR_ZoneHandler *handler;    
};
int MR_protect_pages(void *addr, size_t size, int prot_flags);
extern	void		MR_init_memory_arena(void);
extern	void 		MR_init_zones(void);
extern	MR_MemoryZone	*MR_create_zone(const char *name, int id,
				size_t size, size_t offset, size_t redsize,
				MR_ZoneHandler *handler);
extern	MR_MemoryZone	*MR_construct_zone(const char *name, int Id,
				MR_Word *base, size_t size, size_t offset,
				size_t redsize, MR_ZoneHandler *handler);
extern	void		MR_reset_redzone(MR_MemoryZone *zone);
extern	MR_MemoryZone	*MR_get_used_memory_zones(void);
extern	void		MR_debug_memory(void);
extern	size_t		MR_next_offset(void);
typedef int ptrdiff_t;
typedef unsigned int  wint_t;
    typedef void * GC_PTR;
typedef unsigned long GC_word;
typedef long GC_signed_word;
extern  GC_word GC_gc_no; 
extern  GC_PTR (*GC_oom_fn)  (size_t bytes_requested)  ;
extern  int GC_find_leak;
extern  int GC_quiet;	 
extern  int GC_finalize_on_demand;
extern  int GC_java_finalization;
extern  int GC_dont_gc;	 
extern  int GC_dont_expand;
extern  int GC_use_entire_heap;
extern  int GC_full_freq;     
extern  GC_word GC_non_gc_bytes;
extern  GC_word GC_free_space_divisor;
extern  GC_word GC_max_retries;
extern  char *GC_stackbottom;	 
extern  GC_PTR GC_malloc  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_atomic  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_uncollectable  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_stubborn  (size_t size_in_bytes)  ;
extern  GC_PTR GC_malloc_atomic_uncollectable  (size_t size_in_bytes)  ;
extern  void GC_free  (GC_PTR object_addr)  ;
extern  void GC_change_stubborn  (GC_PTR)  ;
extern  void GC_end_stubborn_change  (GC_PTR)  ;
extern  GC_PTR GC_base  (GC_PTR displaced_pointer)  ;
extern  size_t GC_size  (GC_PTR object_addr)  ;
extern  GC_PTR GC_realloc
	 (GC_PTR old_object, size_t new_size_in_bytes)  ;
extern  int GC_expand_hp  (size_t number_of_bytes)  ;
extern  void GC_set_max_heap_size  (GC_word n)  ;
extern  void GC_exclude_static_roots  (GC_PTR start, GC_PTR finish)  ;
extern  void GC_clear_roots  (void)  ;
extern  void GC_add_roots  (char * low_address,
				   char * high_address_plus_1)  ;
extern  void GC_register_displacement  (GC_word n)  ;
extern  void GC_debug_register_displacement  (GC_word n)  ;
extern  void GC_gcollect  (void)  ;
typedef int (* GC_stop_func)  (void)  ;
extern  int GC_try_to_collect  (GC_stop_func stop_func)  ;
extern  size_t GC_get_heap_size  (void)  ;
extern  size_t GC_get_free_bytes  (void)  ;
extern  size_t GC_get_bytes_since_gc  (void)  ;
extern  void GC_enable_incremental  (void)  ;
extern  int GC_collect_a_little  (void)  ;
extern  GC_PTR GC_malloc_ignore_off_page  (size_t lb)  ;
extern  GC_PTR GC_malloc_atomic_ignore_off_page  (size_t lb)  ;
extern  GC_PTR GC_debug_malloc
	 (size_t size_in_bytes, const  char * s, int i )  ;
extern  GC_PTR GC_debug_malloc_atomic
	 (size_t size_in_bytes, const  char * s, int i )  ;
extern  GC_PTR GC_debug_malloc_uncollectable
	 (size_t size_in_bytes, const  char * s, int i )  ;
extern  GC_PTR GC_debug_malloc_stubborn
	 (size_t size_in_bytes, const  char * s, int i )  ;
extern  void GC_debug_free  (GC_PTR object_addr)  ;
extern  GC_PTR GC_debug_realloc
	 (GC_PTR old_object, size_t new_size_in_bytes,
  		  const  char * s, int i )  ;
extern  void GC_debug_change_stubborn  (GC_PTR)  ;
extern  void GC_debug_end_stubborn_change  (GC_PTR)  ;
typedef void (*GC_finalization_proc)
  	 (GC_PTR obj, GC_PTR client_data)  ;
extern  void GC_register_finalizer
    	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_debug_register_finalizer
    	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_register_finalizer_ignore_self
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_debug_register_finalizer_ignore_self
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_register_finalizer_no_order
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  void GC_debug_register_finalizer_no_order
	 (GC_PTR obj, GC_finalization_proc fn, GC_PTR cd,
		  GC_finalization_proc *ofn, GC_PTR *ocd)  ;
extern  int GC_register_disappearing_link  (GC_PTR *  )  ;
extern  int GC_general_register_disappearing_link
	 (GC_PTR *  , GC_PTR obj)  ;
extern  int GC_unregister_disappearing_link  (GC_PTR *  )  ;
extern  GC_PTR GC_make_closure  (GC_finalization_proc fn, GC_PTR data)  ;
extern  void GC_debug_invoke_finalizer  (GC_PTR obj, GC_PTR data)  ;
extern  int GC_should_invoke_finalizers  (void)  ;
extern  int GC_invoke_finalizers  (void)  ;
typedef void (*GC_warn_proc)  (char *msg, GC_word arg)  ;
extern  GC_warn_proc GC_set_warn_proc  (GC_warn_proc p)  ;
typedef GC_PTR (*GC_fn_type)  (GC_PTR client_data)  ;
extern  GC_PTR GC_call_with_alloc_lock
        	 (GC_fn_type fn, GC_PTR client_data)  ;
extern  GC_PTR GC_same_obj  (GC_PTR p, GC_PTR q)  ;
extern  GC_PTR GC_pre_incr  (GC_PTR *p, size_t how_much)  ;
extern  GC_PTR GC_post_incr  (GC_PTR *p, size_t how_much)  ;
extern  GC_PTR GC_is_visible  (GC_PTR p)  ;
extern  GC_PTR GC_is_valid_displacement  (GC_PTR	p)  ;
extern  void (*GC_same_obj_print_proc)  (GC_PTR p, GC_PTR q)  ;
extern  void (*GC_is_valid_displacement_print_proc)
	 (GC_PTR p)  ;
extern  void (*GC_is_visible_print_proc)
	 (GC_PTR p)  ;
extern	void	MR_init_memory(void);
extern	void	MR_init_heap(void);
  extern void	MR_init_conservative_GC(void);
extern	void	*MR_malloc(size_t n);
extern	void	*MR_realloc(void *old, size_t n);
extern	void	*MR_GC_malloc(size_t num_bytes);
extern	void	*MR_GC_malloc_uncollectable(size_t num_bytes);
extern	void	*MR_GC_realloc(void *ptr, size_t num_bytes);
char	*MR_copy_string(const char *s);
extern	size_t          MR_unit;
extern	size_t          MR_page_size;
extern	void		MR_register_type_ctor_info(
				MR_TypeCtorInfo type_ctor_info);
extern	MR_TypeCtorInfo	MR_lookup_type_ctor_info(const char *module_name,
				const char *type_name, int arity);
typedef int __jmp_buf[6];
typedef int __sig_atomic_t;
typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int))) ];
  } __sigset_t;
typedef struct __jmp_buf_tag	 
  {
    __jmp_buf __jmpbuf;		 
    int __mask_was_saved;	 
    __sigset_t __saved_mask;	 
  } jmp_buf[1];
extern int __sigsetjmp  (jmp_buf __env, int __savemask)    ;
extern void longjmp  (jmp_buf __env, int __val)    
     __attribute__ ((__noreturn__));
extern void *  memcpy  (void *  __restrict __dest,
			    __const void *  __restrict __src, size_t __n)    ;
extern void *  memmove  (void *  __dest, __const void *  __src,
			     size_t __n)    ;
extern void *  memset  (void *  __s, int __c, size_t __n)    ;
extern int memcmp  (__const void *  __s1, __const void *  __s2,
			size_t __n)    ;
extern void *  memchr  (__const void *  __s, int __c, size_t __n)    ;
extern char *strcpy  (char *__restrict __dest,
			  __const char *__restrict __src)    ;
extern char *strncpy  (char *__restrict __dest,
			   __const char *__restrict __src, size_t __n)    ;
extern char *strcat  (char *__restrict __dest,
			  __const char *__restrict __src)    ;
extern char *strncat  (char *__restrict __dest,
			   __const char *__restrict __src, size_t __n)    ;
extern int strcmp  (__const char *__s1, __const char *__s2)    ;
extern int strncmp  (__const char *__s1, __const char *__s2, size_t __n)    ;
extern int strcoll  (__const char *__s1, __const char *__s2)    ;
extern size_t strxfrm  (char *__restrict __dest,
			    __const char *__restrict __src, size_t __n)    ;
extern char *strchr  (__const char *__s, int __c)    ;
extern char *strrchr  (__const char *__s, int __c)    ;
extern size_t strcspn  (__const char *__s, __const char *__reject)    ;
extern size_t strspn  (__const char *__s, __const char *__accept)    ;
extern char *strpbrk  (__const char *__s, __const char *__accept)    ;
extern char *strstr  (__const char *__haystack, __const char *__needle)    ;
extern char *strtok  (char *__restrict __s,
			  __const char *__restrict __delim)    ;
extern char *__strtok_r  (char *__restrict __s,
			      __const char *__restrict __delim,
			      char **__restrict __save_ptr)    ;
extern size_t strlen  (__const char *__s)    ;
extern char *strerror  (int __errnum)    ;
extern void __bzero  (void *  __s, size_t __n)    ;
extern void *  __rawmemchr (const void *  __s, int __c);
extern __inline  char *__strcpy_small (char *, __uint16_t, __uint16_t,
				      __uint32_t, __uint32_t, size_t);
extern __inline  char *
__strcpy_small (char *__dest,
		__uint16_t __src0_2, __uint16_t __src4_2,
		__uint32_t __src0_4, __uint32_t __src4_4,
		size_t __srclen)
{
  union {
    __uint32_t __ui;
    __uint16_t __usi;
    unsigned char __uc;
  } *__u = (void *) __dest;
  switch ((unsigned int) __srclen)
    {
    case 1:
      __u->__uc = '\0';
      break;
    case 2:
      __u->__usi = __src0_2;
      break;
    case 3:
      __u->__usi = __src0_2;
      __u = __extension__ (void *)((char *) __u + 2);
      __u->__uc = '\0';
      break;
    case 4:
      __u->__ui = __src0_4;
      break;
    case 5:
      __u->__ui = __src0_4;
      __u = __extension__ (void *)((char *) __u + 4);
      __u->__uc = '\0';
      break;
    case 6:
      __u->__ui = __src0_4;
      __u = __extension__ (void *)((char *) __u + 4);
      __u->__usi = __src4_2;
      break;
    case 7:
      __u->__ui = __src0_4;
      __u = __extension__ (void *)((char *) __u + 4);
      __u->__usi = __src4_2;
      __u = __extension__ (void *)((char *) __u + 2);
      __u->__uc = '\0';
      break;
    case 8:
      __u->__ui = __src0_4;
      __u = __extension__ (void *)((char *) __u + 4);
      __u->__ui = __src4_4;
      break;
    }
  return __dest;
}
extern __inline  size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline  size_t
__strcspn_c1 (__const char *__s, char __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}
extern __inline  size_t __strcspn_c2 (__const char *__s, char __reject1,
				     char __reject2);
extern __inline  size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
	 && __s[__result] != __reject2)
    ++__result;
  return __result;
}
extern __inline  size_t __strcspn_c3 (__const char *__s, char __reject1,
				     char __reject2, char __reject3);
extern __inline  size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
	      char __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
	 && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
extern __inline  size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline  size_t
__strspn_c1 (__const char *__s, char __accept)
{
  register size_t __result = 0;
  while (__s[__result] == __accept)
    ++__result;
  return __result;
}
extern __inline  size_t __strspn_c2 (__const char *__s, char __accept1,
				    char __accept2);
extern __inline  size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
  register size_t __result = 0;
  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}
extern __inline  size_t __strspn_c3 (__const char *__s, char __accept1,
				    char __accept2, char __accept3);
extern __inline  size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
  register size_t __result = 0;
  while (__s[__result] == __accept1 || __s[__result] == __accept2
	 || __s[__result] == __accept3)
    ++__result;
  return __result;
}
extern __inline  char *__strpbrk_c2 (__const char *__s, char __accept1,
				     char __accept2);
extern __inline  char *
__strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
{
  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0)  : (char *) (size_t) __s;
}
extern __inline  char *__strpbrk_c3 (__const char *__s, char __accept1,
				     char __accept2, char __accept3);
extern __inline  char *
__strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
	      char __accept3)
{
  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
	 && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0)  : (char *) (size_t) __s;
}
extern __inline  char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline  char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0) )
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  if (*__s == '\0')
    __result = ((void *)0) ;
  else
    {
      __result = __s;
      while (*__s != '\0' && *__s != __sep)
	++__s;
      if (*__s == '\0')
	*__nextp = __s;
      else
	{
	  *__s = '\0';
	  *__nextp = __s + 1;
	}
    }
  return __result;
}
extern __inline  char *__strsep_1c (char **__s, char __reject);
extern __inline  char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0) )
    return *__s = ((void *)0) ;
  if (*__retval == __reject)
    *(*__s)++ = '\0';
  else
    if ((*__s = (__extension__ (__builtin_constant_p (  __reject ) && (  __reject ) == '\0'	? (char *) __rawmemchr ( __retval ,   __reject )	: strchr ( __retval ,   __reject ))) ) != ((void *)0) )
      *(*__s)++ = '\0';
    else
      *__s = ((void *)0) ;
  return __retval;
}
extern __inline  char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline  char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0) )
    return *__s = ((void *)0) ;
  if (*__retval == __reject1 || *__retval == __reject2)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
	++__cp;
      if (*__cp != '\0')
	{
	  *__s = __cp;
	  *(*__s)++ = '\0';
	}
      else
	*__s = ((void *)0) ;
    }
  return __retval;
}
extern __inline  char *__strsep_3c (char **__s, char __reject1, char __reject2,
				   char __reject3);
extern __inline  char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0) )
    return *__s = ((void *)0) ;
  if (*__retval == __reject1 || *__retval == __reject2
      || *__retval == __reject3)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
	     && *__cp != __reject3)
	++__cp;
      if (*__cp != '\0')
	{
	  *__s = __cp;
	  *(*__s)++ = '\0';
	}
      else
	*__s = ((void *)0) ;
    }
  return __retval;
}
extern __inline  char *__strsep_g (char **__s, __const char *__reject);
extern __inline  char *
__strsep_g (char **__s, __const char *__reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0) )
    return ((void *)0) ;
  if ((*__s = __extension__	({ char __a0, __a1, __a2;	(__builtin_constant_p (  __reject ) && ((size_t)(const void *)((   __reject  ) + 1) - (size_t)(const void *)(   __reject  ) == 1) 	? ((__a0 = ((__const char  *) (  __reject ))[0], __a0 == '\0')	? ((void *)0) 	: ((__a1 = ((__const char *) (  __reject ))[1], __a1 == '\0')	? (__extension__ (__builtin_constant_p (  __a0 ) && (  __a0 ) == '\0'	? (char *) __rawmemchr (  __retval  ,   __a0 )	: strchr (  __retval  ,   __a0 ))) 	: ((__a2 = ((__const char *) (  __reject ))[2], __a2 == '\0')	? __strpbrk_c2 ( __retval , __a0, __a1)	: (((__const char *) (  __reject ))[3] == '\0'	? __strpbrk_c3 ( __retval , __a0, __a1, __a2)	: strpbrk ( __retval ,   __reject )))))	: strpbrk ( __retval ,   __reject )); }) ) != ((void *)0) )
    *(*__s)++ = '\0';
  return __retval;
}
typedef const MR_Closure *MR_ClosurePtr;
  typedef MR_Word MR_Comparison_Result;
  typedef MR_Word MR_Void;
  typedef MR_Word MR_C_Pointer;
  typedef MR_Word MR_Pred;
  typedef MR_Word MR_Func;
  typedef MR_Word MR_Array;
  typedef MR_Word MR_Univ;
  typedef MR_Word MR_Type_Desc;
  typedef MR_Word MR_Mercury_Type_Info;
  typedef MR_Word MR_Mercury_Type_Ctor_Info;
  typedef MR_Word MR_Mercury_TypeClass_Info;
  typedef MR_Word MR_Mercury_Base_TypeClass_Info;
typedef MR_Box *MR_Tuple;
typedef struct MR_TypeCtorInfo_Struct	MR_TypeCtorInfo_Struct;
typedef const MR_EnumFunctorDesc *	MR_EnumFunctorDescPtr;
typedef const MR_DuFunctorDesc *	MR_DuFunctorDescPtr;
typedef union MR_TableNode_Union * *	MR_TableNodePtrPtr;
typedef MR_Box				MR_BaseTypeclassInfo;
struct  MR_HO_PseudoTypeInfo_Struct1  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  1 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct2  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  2 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct3  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  3 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct4  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  4 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct5  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  5 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct6  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  6 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct7  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  7 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct8  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  8 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct9  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  9 ]; } ;
struct  MR_HO_PseudoTypeInfo_Struct10  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_Integer          MR_pti_higher_order_arity;	MR_PseudoTypeInfo   MR_pti_higher_order_arg_pseudo_typeinfos[  10 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct1  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  1 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct2  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  2 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct3  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  3 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct4  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  4 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct5  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  5 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct6  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  6 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct7  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  7 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct8  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  8 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct9  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  9 ]; } ;
struct  MR_FO_PseudoTypeInfo_Struct10  {	MR_TypeCtorInfo     MR_pti_type_ctor_info;	MR_PseudoTypeInfo   MR_pti_first_order_arg_pseudo_typeinfos[  10 ]; } ;
typedef struct MR_HO_PseudoTypeInfo_Struct1 MR_HO_PseudoTypeInfo_Struct1;
typedef struct MR_HO_PseudoTypeInfo_Struct2 MR_HO_PseudoTypeInfo_Struct2;
typedef struct MR_HO_PseudoTypeInfo_Struct3 MR_HO_PseudoTypeInfo_Struct3;
typedef struct MR_HO_PseudoTypeInfo_Struct4 MR_HO_PseudoTypeInfo_Struct4;
typedef struct MR_HO_PseudoTypeInfo_Struct5 MR_HO_PseudoTypeInfo_Struct5;
typedef struct MR_HO_PseudoTypeInfo_Struct6 MR_HO_PseudoTypeInfo_Struct6;
typedef struct MR_HO_PseudoTypeInfo_Struct7 MR_HO_PseudoTypeInfo_Struct7;
typedef struct MR_HO_PseudoTypeInfo_Struct8 MR_HO_PseudoTypeInfo_Struct8;
typedef struct MR_HO_PseudoTypeInfo_Struct9 MR_HO_PseudoTypeInfo_Struct9;
typedef struct MR_HO_PseudoTypeInfo_Struct10 MR_HO_PseudoTypeInfo_Struct10;
typedef struct MR_FO_PseudoTypeInfo_Struct1 MR_FO_PseudoTypeInfo_Struct1;
typedef struct MR_FO_PseudoTypeInfo_Struct2 MR_FO_PseudoTypeInfo_Struct2;
typedef struct MR_FO_PseudoTypeInfo_Struct3 MR_FO_PseudoTypeInfo_Struct3;
typedef struct MR_FO_PseudoTypeInfo_Struct4 MR_FO_PseudoTypeInfo_Struct4;
typedef struct MR_FO_PseudoTypeInfo_Struct5 MR_FO_PseudoTypeInfo_Struct5;
typedef struct MR_FO_PseudoTypeInfo_Struct6 MR_FO_PseudoTypeInfo_Struct6;
typedef struct MR_FO_PseudoTypeInfo_Struct7 MR_FO_PseudoTypeInfo_Struct7;
typedef struct MR_FO_PseudoTypeInfo_Struct8 MR_FO_PseudoTypeInfo_Struct8;
typedef struct MR_FO_PseudoTypeInfo_Struct9 MR_FO_PseudoTypeInfo_Struct9;
typedef struct MR_FO_PseudoTypeInfo_Struct10 MR_FO_PseudoTypeInfo_Struct10;
extern const MR_TypeCtorInfo_Struct
	mercury__builtin__builtin__type_ctor_info_int_0,
	mercury__builtin__builtin__type_ctor_info_string_0,
	mercury__builtin__builtin__type_ctor_info_float_0,
	mercury__builtin__builtin__type_ctor_info_character_0,
	mercury__builtin__builtin__type_ctor_info_void_0,
	mercury__builtin__builtin__type_ctor_info_c_pointer_0,
	mercury__builtin__builtin__type_ctor_info_pred_0,
	mercury__builtin__builtin__type_ctor_info_func_0,
	mercury__builtin__builtin__type_ctor_info_tuple_0,
	mercury__array__array__type_ctor_info_array_1,
	mercury__std_util__std_util__type_ctor_info_univ_0,
	mercury__std_util__std_util__type_ctor_info_type_desc_0,
	mercury__private_builtin__private_builtin__type_ctor_info_type_ctor_info_1,
	mercury__private_builtin__private_builtin__type_ctor_info_type_info_1,
	mercury__private_builtin__private_builtin__type_ctor_info_typeclass_info_1,
	mercury__private_builtin__private_builtin__type_ctor_info_base_typeclass_info_1;
extern	MR_Word	mercury__private_builtin__dummy_var;
__attribute__((__regparm__(2)))  char  mercury__builtin__unify_2_p_0(MR_Mercury_Type_Info,
	MR_Box, MR_Box);
__attribute__((__regparm__(2)))  void mercury__builtin__compare_3_p_0(MR_Mercury_Type_Info,
	MR_Comparison_Result *, MR_Box, MR_Box);
__attribute__((__regparm__(2)))  void mercury__builtin__compare_3_p_1(MR_Mercury_Type_Info,
	MR_Comparison_Result *, MR_Box, MR_Box);
__attribute__((__regparm__(2)))  void mercury__builtin__compare_3_p_2(MR_Mercury_Type_Info,
	MR_Comparison_Result *, MR_Box, MR_Box);
__attribute__((__regparm__(2)))  void mercury__builtin__compare_3_p_3(MR_Mercury_Type_Info,
	MR_Comparison_Result *, MR_Box, MR_Box);
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____int_0_0(MR_Integer x, MR_Integer y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____string_0_0(MR_String x, MR_String y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____float_0_0(MR_Float x, MR_Float y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____character_0_0(MR_Char x, MR_Char); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____void_0_0(MR_Void x, MR_Void y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____c_pointer_0_0(
	MR_C_Pointer x, MR_C_Pointer y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____func_0_0(MR_Func x, MR_Func y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____pred_0_0(MR_Pred x, MR_Pred y); 
__attribute__((__regparm__(2)))  char  mercury__builtin____Unify____tuple_0_0(
	MR_Mercury_Type_Info type_info, MR_Tuple x, MR_Tuple y); 
__attribute__((__regparm__(2)))  char  mercury__array____Unify____array_1_0(
	MR_Mercury_Type_Info type_info, MR_Array x, MR_Array y);
__attribute__((__regparm__(2)))  char  mercury__std_util____Unify____univ_0_0(MR_Univ x, MR_Univ y); 
__attribute__((__regparm__(2)))  char  mercury__std_util____Unify____type_desc_0_0(
	MR_Type_Desc x, MR_Type_Desc y); 
__attribute__((__regparm__(2)))  char  mercury__private_builtin____Unify____type_ctor_info_1_0(
	MR_Mercury_Type_Info type_info,
	MR_Mercury_Type_Ctor_Info x, MR_Mercury_Type_Ctor_Info y); 
__attribute__((__regparm__(2)))  char  mercury__private_builtin____Unify____type_info_1_0(
	MR_Mercury_Type_Info type_info,
	MR_Mercury_Type_Info x, MR_Mercury_Type_Info y); 
__attribute__((__regparm__(2)))  char  mercury__private_builtin____Unify____typeclass_info_1_0(
	MR_Mercury_Type_Info type_info,
	MR_Mercury_TypeClass_Info x, MR_Mercury_TypeClass_Info y); 
__attribute__((__regparm__(2)))  char  mercury__private_builtin____Unify____base_typeclass_info_1_0(
	MR_Mercury_Type_Info type_info, MR_Mercury_Base_TypeClass_Info x,
	MR_Mercury_Base_TypeClass_Info y); 
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____int_0_0(
	MR_Comparison_Result *result, MR_Integer x, MR_Integer y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____string_0_0(
	MR_Comparison_Result *result, MR_String x, MR_String y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____float_0_0(
	MR_Comparison_Result *result, MR_Float x, MR_Float y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____character_0_0(
	MR_Comparison_Result *result, MR_Char x, MR_Char y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____void_0_0(
	MR_Comparison_Result *result, MR_Void x, MR_Void y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____c_pointer_0_0(
	MR_Comparison_Result *result, MR_C_Pointer x, MR_C_Pointer y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____func_0_0(
	MR_Comparison_Result *result, MR_Func x, MR_Func y);
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____pred_0_0(
	MR_Comparison_Result *result, MR_Pred x, MR_Pred y); 
__attribute__((__regparm__(2)))  void mercury__builtin____Compare____tuple_0_0(
	MR_Mercury_Type_Info type_info, MR_Comparison_Result *result,
	MR_Tuple x, MR_Tuple y); 
__attribute__((__regparm__(2)))  void mercury__array____Compare____array_1_0(MR_Mercury_Type_Info
	type_info, MR_Comparison_Result *result, MR_Array x, MR_Array y);
__attribute__((__regparm__(2)))  void mercury__std_util____Compare____univ_0_0(
	MR_Comparison_Result *result, MR_Univ x, MR_Univ y);
__attribute__((__regparm__(2)))  void mercury__std_util____Compare____type_desc_0_0(
	MR_Comparison_Result *result, MR_Type_Desc x, MR_Type_Desc y);
__attribute__((__regparm__(2)))  void mercury__private_builtin____Compare____type_ctor_info_1_0(
	MR_Mercury_Type_Info type_info, MR_Comparison_Result *result,
	MR_Mercury_Type_Ctor_Info x, MR_Mercury_Type_Ctor_Info y);
__attribute__((__regparm__(2)))  void mercury__private_builtin____Compare____type_info_1_0(
	MR_Mercury_Type_Info type_info, MR_Comparison_Result *result,
	MR_Mercury_Type_Info x, MR_Mercury_Type_Info y);
__attribute__((__regparm__(2)))  void mercury__private_builtin____Compare____typeclass_info_1_0(
	MR_Mercury_Type_Info type_info, MR_Comparison_Result *result,
	MR_Mercury_TypeClass_Info x, MR_Mercury_TypeClass_Info y);
__attribute__((__regparm__(2)))  void mercury__private_builtin____Compare____base_typeclass_info_1_0(
	MR_Mercury_Type_Info type_info, MR_Comparison_Result *result,
	MR_Mercury_Base_TypeClass_Info x, MR_Mercury_Base_TypeClass_Info y);
MR_Word MR_deep_copy(const MR_Word *data_ptr, MR_TypeInfo type_info, 
	const MR_Word *lower_limit, const MR_Word *upper_limit);
MR_Word MR_agc_deep_copy(MR_Word *data_ptr, MR_TypeInfo type_info, 
	const MR_Word *lower_limit, const MR_Word *upper_limit);
typedef void *__gnuc_va_list;
typedef struct _IO_FILE FILE;
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__)));
struct _IO_jump_t;  struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;
  int _pos;
};
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;
  __off64_t   _offset;
  int _unused2[16];
};
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_;
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, __off_t   __pos, int __w)  ;
typedef int __io_close_fn  (void *  __cookie)  ;
extern int __underflow  (_IO_FILE *)    ;
extern int __uflow  (_IO_FILE *)    ;
extern int __overflow  (_IO_FILE *, int)    ;
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 *)    ;
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 *)    ;
typedef __off_t  fpos_t;
extern FILE *stdin;		 
extern FILE *stdout;		 
extern FILE *stderr;		 
extern int remove  (__const char *__filename)    ;
extern int rename  (__const char *__old, __const char *__new)    ;
extern FILE *tmpfile  (void)    ;
extern char *tmpnam  (char *__s)    ;
extern int fclose  (FILE *__stream)    ;
extern int fflush  (FILE *__stream)    ;
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)    ;
extern void setbuf  (FILE *__restrict __stream, char *__restrict __buf)    ;
extern int setvbuf  (FILE *__restrict __stream, char *__restrict __buf,
			 int __modes, size_t __n)    ;
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 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, ...)    ;
extern int fgetc  (FILE *__stream)    ;
extern int getc  (FILE *__stream)    ;
extern int getchar  (void)    ;
extern int fputc  (int __c, FILE *__stream)    ;
extern int putc  (int __c, FILE *__stream)    ;
extern int putchar  (int __c)    ;
extern char *fgets  (char *__restrict __s, int __n,
			 FILE *__restrict __stream)    ;
extern char *gets  (char *__s)    ;
extern int fputs  (__const char *__restrict __s,
		       FILE *__restrict __stream)    ;
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 int fseek  (FILE *__stream, long int __off, int __whence)    ;
extern long int ftell  (FILE *__stream)    ;
extern void rewind  (FILE *__stream)    ;
typedef __off_t off_t;
extern int fgetpos  (FILE *__restrict __stream,
			 fpos_t *__restrict __pos)    ;
extern int fsetpos  (FILE *__stream, __const fpos_t *__pos)    ;
extern void clearerr  (FILE *__stream)    ;
extern int feof  (FILE *__stream)    ;
extern int ferror  (FILE *__stream)    ;
extern void perror  (__const char *__s)    ;
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
putchar (int __c)  
{
  return _IO_putc (__c, stdout );
}
typedef enum {
	MR_undo,       
	MR_commit,     
	MR_solve,      
	MR_exception,  
	MR_retry,  
	MR_gc
} MR_untrail_reason;
typedef enum {
	MR_val_entry,
	MR_func_entry
} MR_trail_entry_kind;
typedef void MR_untrail_func_type(void *datum, MR_untrail_reason);
typedef struct {
	union {
		struct {
			MR_Word *MR_address;
			MR_Word MR_value;
		} MR_val;
		struct {
			MR_untrail_func_type *MR_untrail_func;
			void *MR_datum;
		} MR_func;
	} MR_union;
} MR_TrailEntry;
extern MR_MemoryZone *MR_trail_zone;
extern MR_TrailEntry *MR_trail_ptr_var;
extern MR_Unsigned MR_ticket_counter_var;
extern MR_Unsigned MR_ticket_high_water_var;
void MR_untrail_to(MR_TrailEntry *old_trail_ptr, MR_untrail_reason reason);
typedef MR_Unsigned MR_ChoicepointId;
extern	void	MR_printdetstack(const MR_Word *s);
extern	void	MR_printdetstackptr(const MR_Word *s);
extern	void	MR_print_detstackptr(FILE *fp, const MR_Word *s);
extern	void	MR_printnondstack(const MR_Word *s);
extern	void	MR_printnondstackptr(const MR_Word *s);
extern	void	MR_print_nondstackptr(FILE *fp, const MR_Word *s);
extern	void	MR_print_heapptr(FILE *fp, const MR_Word *s);
extern	void	MR_print_label(FILE *fp,   MR_Code *w);
extern	void	MR_printlabel(FILE *fp,   MR_Code *w);
typedef	struct	MR_Dlist_Struct MR_Dlist;
struct	MR_Dlist_Struct {
	union {
		const void 	*MR_dlist_data;
		int		MR_dlist_length;
	} MR_dlist_union;
	MR_Dlist	*MR_dlist_prev;
	MR_Dlist	*MR_dlist_next;
};
extern	MR_Dlist	*MR_dlist_makelist0(void);
extern	MR_Dlist	* MR_dlist_makelist( const void * ) ;
extern	MR_Dlist	* MR_dlist_addhead( MR_Dlist * ,   const void * ) ;
extern	MR_Dlist	* MR_dlist_addtail( MR_Dlist * ,   const void * ) ;
extern	MR_Dlist	*MR_dlist_addlist(MR_Dlist *, MR_Dlist *);
extern	MR_Dlist	*MR_dlist_addndlist(MR_Dlist *, MR_Dlist *);
extern	void		MR_dlist_insert_before( MR_Dlist * ,   MR_Dlist * ,  
				const void * ) ;
extern	void		MR_dlist_insert_after( MR_Dlist * ,   MR_Dlist * ,  
				const void * ) ;
extern	int		MR_dlist_maybe_null_length(const MR_Dlist *);
extern	void		MR_dlist_delete(MR_Dlist *, MR_Dlist *,
				void (*)(const void *));
extern	void		MR_dlist_oldlist(MR_Dlist *, void (*)(const void *));
typedef struct s_entry {
	const MR_Code			*e_addr;
	const MR_Stack_Layout_Entry	*e_layout;
	const char			*e_name;
} MR_Entry;
typedef struct s_internal {
	const MR_Code			*i_addr;
	const MR_Stack_Layout_Label	*i_layout;
	const char			*i_name;
} MR_Internal;
extern	void		MR_do_init_label_tables(void);
extern	void		MR_insert_internal_label(const char *name,
				MR_Code *addr,
				const MR_Stack_Layout_Label *label_layout);
extern	MR_Internal	*MR_lookup_internal_by_addr(const MR_Code *addr);
extern	void		MR_process_all_internal_labels(void f(const void *));
extern	void	MR_dummy_function_call(void);
extern	void	*MR_dummy_identify_function(void *);
extern	void	*volatile MR_global_pointer;
extern	void	*volatile MR_global_pointer_2;
  typedef MR_Code * MR_ModuleFunc(void);
typedef struct MR_Context_Struct MR_Context;
struct MR_Context_Struct {
	MR_Context	 *next;	
	MR_Code		*resume;
	MR_Code		*context_succip;
	MR_MemoryZone	*detstack_zone;
	MR_Word		*context_sp;
	MR_MemoryZone	*nondetstack_zone;
	MR_Word		*context_maxfr;
	MR_Word		*context_curfr;
	MR_Word		*context_hp;
	MR_Word		*min_hp_rec;
};
typedef MR_Context Context;	 
extern		MR_Context	*MR_runqueue_head;
extern		MR_Context	*MR_runqueue_tail;
typedef enum {
	MR_PENDING_READ  = 0x01,
	MR_PENDING_WRITE = 0x02,
	MR_PENDING_EXEC  = 0x04
} MR_WaitingMode;
typedef struct MR_PendingContext_Struct {
	struct MR_PendingContext_Struct	*next;
	MR_Context			*context;
	int				fd;
	MR_WaitingMode			waiting_mode;
} MR_PendingContext;
extern	MR_PendingContext	*MR_pending_contexts;
extern	void		MR_init_context(MR_Context *context);
extern	MR_Context 	*MR_create_context(void);
extern	void		MR_destroy_context(MR_Context *context);
extern	void		MR_init_thread_stuff(void);
extern	void		MR_finalize_runqueue(void);
extern	void		MR_flounder(void);
extern	void		MR_schedule(MR_Context *ctxt);
extern MR_Code * do_runnext (void) ;
typedef struct MR_Sync_Term_Struct MR_SyncTerm;
struct MR_Sync_Term_Struct {
	int		count;
	MR_Context	*parent;
};
  typedef struct MR_dword
  {
	unsigned long	low_word;
	unsigned long	high_word;
  } MR_dword;
typedef	struct MR_memprof_counter
{
	MR_dword	cells_at_period_start;
	MR_dword	words_at_period_start;
	MR_dword	cells_since_period_start;
	MR_dword	words_since_period_start;
} MR_memprof_counter;
typedef	struct MR_memprof_record
{
	const char			*name;  
	MR_Code				*addr;  
	MR_memprof_counter		counter;
	struct MR_memprof_record	*left;	 
	struct MR_memprof_record	*right;	 
} MR_memprof_record;
typedef	struct MR_memprof_table
{
	MR_memprof_record		*root;
	int				num_entries;
} MR_memprof_table;
extern	MR_memprof_counter	MR_memprof_overall;
extern	MR_memprof_table	MR_memprof_procs;
extern	MR_memprof_table	MR_memprof_types;
extern void MR_record_allocation(int size, MR_Code *proc_addr,
		const char *proc_name, const char *type);
extern void MR_prof_output_mem_tables(void);
extern __inline__  MR_Word MR_create1(MR_Word w1);
extern __inline__  MR_Word MR_create2(MR_Word w1, MR_Word w2);
extern __inline__  MR_Word MR_create3(MR_Word w1, MR_Word w2, MR_Word w3) ;
extern __inline__  MR_Word
MR_create1(MR_Word w1) 
{
	MR_Word *p = (MR_Word *) (( MR_Word  *) GC_malloc(   1 * sizeof(MR_Word)  ) ) ;
	p[0] = w1;
	return (MR_Word) p;
}
extern __inline__  MR_Word
MR_create2(MR_Word w1, MR_Word w2) 
{
	MR_Word *p = (MR_Word *) (( MR_Word  *) GC_malloc(   2 * sizeof(MR_Word)  ) ) ;
	p[0] = w1;
	p[1] = w2;
	return (MR_Word) p;
}
extern __inline__  MR_Word
MR_create3(MR_Word w1, MR_Word w2, MR_Word w3) 
{
	MR_Word *p = (MR_Word *) (( MR_Word  *) GC_malloc(   3 * sizeof(MR_Word)  ) ) ;
	p[0] = w1;
	p[1] = w2;
	p[2] = w3;
	return (MR_Word) p;
}
extern	void	MR_warning(const char *msg, ...);
extern	void	MR_fatal_error(const char *msg, ...) __attribute__((noreturn)) ;
void va_end (__gnuc_va_list);		 
typedef __gnuc_va_list va_list;
int	MR_hash_string(MR_Word);
MR_String MR_make_string(MR_Code *proclabel, const char *fmt, ...);
typedef struct MR_TypeCtorDesc_Struct *MR_TypeCtorDesc;
typedef struct ML_Construct_Info_Struct {
    MR_ConstString          functor_name;
    MR_Integer              arity;
    const MR_PseudoTypeInfo *arg_pseudo_type_infos;
    MR_TypeCtorRep          type_ctor_rep;
    union {
        const MR_EnumFunctorDesc  *enum_functor_desc;
        const MR_NotagFunctorDesc *notag_functor_desc;
        const MR_DuFunctorDesc    *du_functor_desc;
    }                       functor_info;
} ML_Construct_Info;
extern  void            ML_type_ctor_and_args(MR_TypeInfo type_info,
                            char  collapse_equivalences,
                            MR_TypeCtorDesc *type_ctor_desc_ptr,
                            MR_Word *arg_type_info_list_ptr);
extern  int     	    ML_get_num_functors(MR_TypeInfo type_info);
extern	MR_Word		    ML_type_params_vector_to_list(int arity,
                            MR_TypeInfoParams type_params);
extern	MR_Word		    ML_pseudo_type_info_vector_to_type_info_list(int arity,
                            MR_TypeInfoParams type_params,
                            const MR_PseudoTypeInfo *arg_pseudo_type_infos);
extern  char     	    ML_get_functors_check_range(int functor_number,
                            MR_TypeInfo type_info,
                            ML_Construct_Info *construct_info);
extern  void    	    ML_copy_arguments_from_list_to_vector(int arity,
                            MR_Word arg_list, MR_Word term_vector);
extern  char     	    ML_typecheck_arguments(MR_TypeInfo type_info,
                            int arity, MR_Word arg_list,
                            const MR_PseudoTypeInfo *arg_pseudo_type_infos);
extern  MR_TypeInfo	    ML_make_type(int arity, MR_TypeCtorDesc type_ctor_desc,
				             MR_Word arg_type_list);
extern	MR_TypeCtorDesc ML_make_type_ctor_desc(MR_TypeInfo type_info,
				MR_TypeCtorInfo type_ctor_info);
typedef struct ML_Expand_Info_Struct {
    MR_ConstString  functor;
    int             arity;
    int             num_extra_args;
    MR_Word         *arg_values;
    MR_TypeInfo     *arg_type_infos;
    char             can_free_arg_type_infos;
    char             non_canonical_type;
    char             need_functor;
    char             need_args;
} ML_Expand_Info;
extern  void    ML_expand(MR_TypeInfo type_info, MR_Word *data_word_ptr,
                    ML_Expand_Info *expand_info);
extern  char     ML_arg(MR_TypeInfo type_info, MR_Word *term, int arg_index,
                    MR_TypeInfo *arg_type_info_ptr, MR_Word **argument_ptr);
  void mercury__builtin__copy_2_p_0(MR_Mercury_Type_Info, MR_Box, MR_Box *);
  void mercury__builtin__copy_2_p_1(MR_Mercury_Type_Info, MR_Box, MR_Box *);
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_108_105_115_116_95_116_111_95_115_101_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_5,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word * mercury__set_ordlist__HeadVar__2_2,
  MR_Word mercury__set_ordlist__V_7_7,
  MR_Word mercury__set_ordlist__V_6_6)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Word mercury__set_ordlist__L1_5_10;
    {
      mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_114_103_101_95_115_111_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(mercury__set_ordlist__TypeInfo_for_T_5, mercury__set_ordlist__HeadVar__1_1, &mercury__set_ordlist__L1_5_10, mercury__set_ordlist__V_7_7, mercury__set_ordlist__V_6_6);
    }
    if ((mercury__set_ordlist__L1_5_10 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
      *mercury__set_ordlist__HeadVar__2_2 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
    else
      {
        MR_Word mercury__set_ordlist__X_3_11;
        MR_Word mercury__set_ordlist__Xs_4_12;
        mercury__set_ordlist__X_3_11 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__L1_5_10 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
        mercury__set_ordlist__Xs_4_12 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__L1_5_10 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
        {
          mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_114_101_109_111_118_101_95_97_100_106_97_99_101_110_116_95_100_117_112_115_95_50_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_5, mercury__set_ordlist__Xs_4_12, mercury__set_ordlist__X_3_11, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__V_7_7, mercury__set_ordlist__V_6_6);
          return;
        }
      }
  }
}
__attribute__((__regparm__(2)))  char  mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_109_98_101_114_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_5,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word mercury__set_ordlist__V_7_7,
  MR_Word mercury__set_ordlist__V_6_6)
{
  {
    char  mercury__set_ordlist__succeeded;
    {
      return mercury__set_ordlist__succeeded = mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_109_98_101_114_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(mercury__set_ordlist__TypeInfo_for_T_5, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__V_7_7, mercury__set_ordlist__V_6_6);
    }
    return mercury__set_ordlist__succeeded;
  }
}
__attribute__((__regparm__(2)))  char  mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_99_111_110_116_97_105_110_115_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_5,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word mercury__set_ordlist__V_7_7,
  MR_Word mercury__set_ordlist__V_6_6)
{
  {
    char  mercury__set_ordlist__succeeded;
    {
      return mercury__set_ordlist__succeeded = mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_109_98_101_114_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(mercury__set_ordlist__TypeInfo_for_T_5, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__V_7_7, mercury__set_ordlist__V_6_6);
    }
    return mercury__set_ordlist__succeeded;
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_115_101_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_13,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_15_15,
  MR_Word mercury__set_ordlist__V_14_14)
{
  {
    char  mercury__set_ordlist__succeeded;
    if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
      {
        MR_Word mercury__set_ordlist__V_5_5;
        mercury__set_ordlist__V_5_5 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
        {
          *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
          ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__2_2));
          ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__V_5_5));
        }
      }
    else
      {
        MR_Word mercury__set_ordlist__I_6;
        MR_Word mercury__set_ordlist__Is_7;
        MR_Word mercury__set_ordlist__R_10;
        mercury__set_ordlist__I_6 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
        mercury__set_ordlist__Is_7 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
        {
          mercury__term____Compare____var_1_0(mercury__set_ordlist__V_14_14, &mercury__set_ordlist__R_10, mercury__set_ordlist__I_6, mercury__set_ordlist__HeadVar__2_2);
        }
        switch (mercury__set_ordlist__R_10) {
          case (MR_Integer) 0:
            *mercury__set_ordlist__HeadVar__3_3 = mercury__set_ordlist__HeadVar__1_1;
            break;
          case (MR_Integer) 1:
            {
              MR_Word mercury__set_ordlist__Ks_11;
              {
                mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_115_101_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_13, mercury__set_ordlist__Is_7, mercury__set_ordlist__HeadVar__2_2, &mercury__set_ordlist__Ks_11, mercury__set_ordlist__V_15_15, mercury__set_ordlist__V_14_14);
              }
              {
                *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
                ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__I_6));
                ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__Ks_11));
              }
            }
            break;
          case (MR_Integer) 2:
            {
              *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
              ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__2_2));
              ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__1_1));
            }
            break;
          default:   ((void) (( 0 ) ? 0 :	(__assert_fail ("0" ,	"set_ordlist.c", 227, __PRETTY_FUNCTION__ ), 0))) ;
        }
      }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_115_101_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_1(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_13,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_15_15,
  MR_Word mercury__set_ordlist__V_14_14)
{
  {
    char  mercury__set_ordlist__succeeded;
    if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
      {
        MR_Word mercury__set_ordlist__V_5_5;
        mercury__set_ordlist__V_5_5 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
        {
          *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
          ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__2_2));
          ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__V_5_5));
        }
      }
    else
      {
        MR_Word mercury__set_ordlist__I_6;
        MR_Word mercury__set_ordlist__Is_7;
        MR_Word mercury__set_ordlist__R_10;
        MR_Integer mercury__set_ordlist__V_16_16;
        MR_Integer mercury__set_ordlist__V_17_17;
        mercury__set_ordlist__I_6 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
        mercury__set_ordlist__Is_7 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
        mercury__set_ordlist__V_16_16 = (MR_Integer) mercury__set_ordlist__I_6;
        mercury__set_ordlist__V_17_17 = (MR_Integer) mercury__set_ordlist__HeadVar__2_2;
        mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_16_16 < mercury__set_ordlist__V_17_17);
        if (mercury__set_ordlist__succeeded)
          mercury__set_ordlist__R_10 = (MR_Integer) 1;
        else
          {
            mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_16_16 == mercury__set_ordlist__V_17_17);
            if (mercury__set_ordlist__succeeded)
              mercury__set_ordlist__R_10 = (MR_Integer) 0;
            else
              mercury__set_ordlist__R_10 = (MR_Integer) 2;
          }
        switch (mercury__set_ordlist__R_10) {
          case (MR_Integer) 0:
            *mercury__set_ordlist__HeadVar__3_3 = mercury__set_ordlist__HeadVar__1_1;
            break;
          case (MR_Integer) 1:
            {
              MR_Word mercury__set_ordlist__Ks_11;
              {
                mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_115_101_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_1(mercury__set_ordlist__TypeInfo_for_T_13, mercury__set_ordlist__Is_7, mercury__set_ordlist__HeadVar__2_2, &mercury__set_ordlist__Ks_11, mercury__set_ordlist__V_15_15, mercury__set_ordlist__V_14_14);
              }
              {
                *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
                ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__I_6));
                ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__Ks_11));
              }
            }
            break;
          case (MR_Integer) 2:
            {
              *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
              ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__2_2));
              ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__1_1));
            }
            break;
          default:   ((void) (( 0 ) ? 0 :	(__assert_fail ("0" ,	"set_ordlist.c", 303, __PRETTY_FUNCTION__ ), 0))) ;
        }
      }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_115_101_114_116_95_108_105_115_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_8,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_10_10,
  MR_Word mercury__set_ordlist__V_9_9)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Word mercury__set_ordlist__List_7;
    MR_Word mercury__set_ordlist__L1_5_13;
    {
      mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_114_103_101_95_115_111_114_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_2_p_0(mercury__set_ordlist__TypeInfo_for_T_8, mercury__set_ordlist__HeadVar__2_2, &mercury__set_ordlist__L1_5_13, mercury__set_ordlist__V_10_10, mercury__set_ordlist__V_9_9);
    }
    if ((mercury__set_ordlist__L1_5_13 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
      mercury__set_ordlist__List_7 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
    else
      {
        MR_Word mercury__set_ordlist__X_3_14;
        MR_Word mercury__set_ordlist__Xs_4_15;
        mercury__set_ordlist__X_3_14 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__L1_5_13 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
        mercury__set_ordlist__Xs_4_15 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__L1_5_13 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
        {
          mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_114_101_109_111_118_101_95_97_100_106_97_99_101_110_116_95_100_117_112_115_95_50_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_8, mercury__set_ordlist__Xs_4_15, mercury__set_ordlist__X_3_14, &mercury__set_ordlist__List_7, mercury__set_ordlist__V_10_10, mercury__set_ordlist__V_9_9);
        }
      }
    {
      mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_114_103_101_95_97_110_100_95_114_101_109_111_118_101_95_100_117_112_115_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_8, mercury__set_ordlist__List_7, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__HeadVar__3_3, mercury__set_ordlist__V_10_10, mercury__set_ordlist__V_9_9);
      return;
    }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_117_110_105_111_110_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_7,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_9_9,
  MR_Word mercury__set_ordlist__V_8_8)
{
  {
    char  mercury__set_ordlist__succeeded;
    {
      mercury__list__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_95_109_101_114_103_101_95_97_110_100_95_114_101_109_111_118_101_95_100_117_112_115_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_7, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__HeadVar__3_3, mercury__set_ordlist__V_9_9, mercury__set_ordlist__V_8_8);
      return;
    }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_116_101_114_115_101_99_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_16,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_20_20,
  MR_Word mercury__set_ordlist__V_19_19)
{
  {
  loop_top:;
    {
      char  mercury__set_ordlist__succeeded;
      if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
        *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
      else
        {
          MR_Word mercury__set_ordlist__V_17_17;
          MR_Word mercury__set_ordlist__V_18_18;
          mercury__set_ordlist__V_18_18 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
          mercury__set_ordlist__V_17_17 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
          if ((mercury__set_ordlist__HeadVar__2_2 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
            *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
          else
            {
              MR_Word mercury__set_ordlist__Y_9;
              MR_Word mercury__set_ordlist__Ys_10;
              MR_Word mercury__set_ordlist__R_12;
              MR_Integer mercury__set_ordlist__V_21_21;
              MR_Integer mercury__set_ordlist__V_22_22;
              mercury__set_ordlist__Y_9 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
              mercury__set_ordlist__Ys_10 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
              mercury__set_ordlist__V_21_21 = (MR_Integer) mercury__set_ordlist__V_18_18;
              mercury__set_ordlist__V_22_22 = (MR_Integer) mercury__set_ordlist__Y_9;
              mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_21_21 < mercury__set_ordlist__V_22_22);
              if (mercury__set_ordlist__succeeded)
                mercury__set_ordlist__R_12 = (MR_Integer) 1;
              else
                {
                  mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_21_21 == mercury__set_ordlist__V_22_22);
                  if (mercury__set_ordlist__succeeded)
                    mercury__set_ordlist__R_12 = (MR_Integer) 0;
                  else
                    mercury__set_ordlist__R_12 = (MR_Integer) 2;
                }
              switch (mercury__set_ordlist__R_12) {
                case (MR_Integer) 0:
                  {
                    MR_Word mercury__set_ordlist__Set0_13;
                    {
                      mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_116_101_114_115_101_99_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_16, mercury__set_ordlist__V_17_17, mercury__set_ordlist__Ys_10, &mercury__set_ordlist__Set0_13, mercury__set_ordlist__V_20_20, mercury__set_ordlist__V_19_19);
                    }
                    {
                      *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
                      ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__V_18_18));
                      ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__Set0_13));
                    }
                  }
                  break;
                case (MR_Integer) 1:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__1_1__tmp_copy = mercury__set_ordlist__V_17_17;
                      mercury__set_ordlist__HeadVar__1_1 = mercury__set_ordlist__HeadVar__1_1__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                case (MR_Integer) 2:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Ys_10;
                      mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                default:   ((void) (( 0 ) ? 0 :	(__assert_fail ("0" ,	"set_ordlist.c", 448, __PRETTY_FUNCTION__ ), 0))) ;
              }
            }
        }
    }
  }
}
__attribute__((__regparm__(2)))  char  mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_116_101_114_115_101_99_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_1(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_16,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_24_24,
  MR_Word mercury__set_ordlist__V_23_23)
{
  {
  loop_top:;
    {
      char  mercury__set_ordlist__succeeded;
      if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
        mercury__set_ordlist__succeeded = (mercury__set_ordlist__HeadVar__3_3 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) );
      else
        {
          MR_Word mercury__set_ordlist__V_19_19;
          MR_Word mercury__set_ordlist__V_20_20;
          mercury__set_ordlist__V_20_20 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
          mercury__set_ordlist__V_19_19 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
          if ((mercury__set_ordlist__HeadVar__2_2 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
            mercury__set_ordlist__succeeded = (mercury__set_ordlist__HeadVar__3_3 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) );
          else
            {
              MR_Word mercury__set_ordlist__Y_9;
              MR_Word mercury__set_ordlist__Ys_10;
              MR_Word mercury__set_ordlist__R_12;
              MR_Integer mercury__set_ordlist__V_25_25;
              MR_Integer mercury__set_ordlist__V_26_26;
              mercury__set_ordlist__Y_9 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
              mercury__set_ordlist__Ys_10 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
              mercury__set_ordlist__V_25_25 = (MR_Integer) mercury__set_ordlist__V_20_20;
              mercury__set_ordlist__V_26_26 = (MR_Integer) mercury__set_ordlist__Y_9;
              mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_25_25 < mercury__set_ordlist__V_26_26);
              if (mercury__set_ordlist__succeeded)
                mercury__set_ordlist__R_12 = (MR_Integer) 1;
              else
                {
                  mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_25_25 == mercury__set_ordlist__V_26_26);
                  if (mercury__set_ordlist__succeeded)
                    mercury__set_ordlist__R_12 = (MR_Integer) 0;
                  else
                    mercury__set_ordlist__R_12 = (MR_Integer) 2;
                }
              switch (mercury__set_ordlist__R_12) {
                case (MR_Integer) 0:
                  {
                    MR_Word mercury__set_ordlist__Set0_13;
                    MR_Word mercury__set_ordlist__V_17_17;
                    MR_Word mercury__set_ordlist__V_18_18;
                    MR_Integer mercury__set_ordlist__V_27_27;
                    MR_Integer mercury__set_ordlist__V_28_28;
                    {
                      mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_105_110_116_101_114_115_101_99_116_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_16, mercury__set_ordlist__V_19_19, mercury__set_ordlist__Ys_10, &mercury__set_ordlist__Set0_13, mercury__set_ordlist__V_24_24, mercury__set_ordlist__V_23_23);
                    }
                    mercury__set_ordlist__succeeded = ((( (MR_Word) mercury__set_ordlist__HeadVar__3_3 ) & ((1 << 2  ) - 1))  == ( (MR_Integer) 1 ) );
                    if (((( (MR_Word) mercury__set_ordlist__HeadVar__3_3 ) & ((1 << 2  ) - 1))  == ( (MR_Integer) 1 ) ))
                      {
                        mercury__set_ordlist__V_17_17 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
                        mercury__set_ordlist__V_18_18 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
                      }
                    if (mercury__set_ordlist__succeeded)
                      {
                        mercury__set_ordlist__V_27_27 = (MR_Integer) mercury__set_ordlist__V_20_20;
                        mercury__set_ordlist__V_28_28 = (MR_Integer) mercury__set_ordlist__V_17_17;
                        mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_27_27 == mercury__set_ordlist__V_28_28);
                        if (mercury__set_ordlist__succeeded)
                          {
                            return mercury__set_ordlist__succeeded = mercury__list____Unify____list_1_0((MR_Word) mercury__set_ordlist__TypeInfo_for_T_16, (MR_Word) mercury__set_ordlist__Set0_13, (MR_Word) mercury__set_ordlist__V_18_18);
                          }
                      }
                  }
                  break;
                case (MR_Integer) 1:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__1_1__tmp_copy = mercury__set_ordlist__V_19_19;
                      mercury__set_ordlist__HeadVar__1_1 = mercury__set_ordlist__HeadVar__1_1__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                case (MR_Integer) 2:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Ys_10;
                      mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                default:   ((void) (( 0 ) ? 0 :	(__assert_fail ("0" ,	"set_ordlist.c", 556, __PRETTY_FUNCTION__ ), 0))) ;
              }
            }
        }
      return mercury__set_ordlist__succeeded;
    }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_100_105_102_102_101_114_101_110_99_101_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_16,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3,
  MR_Word mercury__set_ordlist__V_20_20,
  MR_Word mercury__set_ordlist__V_19_19)
{
  {
  loop_top:;
    {
      char  mercury__set_ordlist__succeeded;
      if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
        *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ;
      else
        {
          MR_Word mercury__set_ordlist__V_17_17;
          MR_Word mercury__set_ordlist__V_18_18;
          mercury__set_ordlist__V_18_18 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
          mercury__set_ordlist__V_17_17 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
          if ((mercury__set_ordlist__HeadVar__2_2 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
            *mercury__set_ordlist__HeadVar__3_3 = mercury__set_ordlist__HeadVar__1_1;
          else
            {
              MR_Word mercury__set_ordlist__Y_9;
              MR_Word mercury__set_ordlist__Ys_10;
              MR_Word mercury__set_ordlist__R_12;
              MR_Integer mercury__set_ordlist__V_21_21;
              MR_Integer mercury__set_ordlist__V_22_22;
              mercury__set_ordlist__Y_9 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
              mercury__set_ordlist__Ys_10 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
              mercury__set_ordlist__V_21_21 = (MR_Integer) mercury__set_ordlist__V_18_18;
              mercury__set_ordlist__V_22_22 = (MR_Integer) mercury__set_ordlist__Y_9;
              mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_21_21 < mercury__set_ordlist__V_22_22);
              if (mercury__set_ordlist__succeeded)
                mercury__set_ordlist__R_12 = (MR_Integer) 1;
              else
                {
                  mercury__set_ordlist__succeeded = (mercury__set_ordlist__V_21_21 == mercury__set_ordlist__V_22_22);
                  if (mercury__set_ordlist__succeeded)
                    mercury__set_ordlist__R_12 = (MR_Integer) 0;
                  else
                    mercury__set_ordlist__R_12 = (MR_Integer) 2;
                }
              switch (mercury__set_ordlist__R_12) {
                case (MR_Integer) 0:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__1_1__tmp_copy = mercury__set_ordlist__V_17_17;
                      MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Ys_10;
                      mercury__set_ordlist__HeadVar__1_1 = mercury__set_ordlist__HeadVar__1_1__tmp_copy;
                      mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                case (MR_Integer) 1:
                  {
                    MR_Word mercury__set_ordlist__Set0_13;
                    {
                      mercury__set_ordlist__f_84_121_112_101_83_112_101_99_79_102_95_95_112_114_101_100_95_111_114_95_102_117_110_99_95_95_100_105_102_102_101_114_101_110_99_101_95_95_91_84_32_61_32_118_97_114_40_86_95_50_41_93_3_p_0(mercury__set_ordlist__TypeInfo_for_T_16, mercury__set_ordlist__V_17_17, mercury__set_ordlist__HeadVar__2_2, &mercury__set_ordlist__Set0_13, mercury__set_ordlist__V_20_20, mercury__set_ordlist__V_19_19);
                    }
                    {
                      *mercury__set_ordlist__HeadVar__3_3 = (MR_Word) ((MR_Word *)((char *)(  (( MR_Word  *) GC_malloc(   ((MR_Integer) 2 * sizeof(MR_Word) )  ) )  ) + ( ( 1 )  ))) ;
                      ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__V_18_18));
                      ((MR_Word *) ((MR_Word) ( (  *mercury__set_ordlist__HeadVar__3_3 ) ) - (  ( ( 1 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__Set0_13));
                    }
                  }
                  break;
                case (MR_Integer) 2:
                  {
                    {
                      MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Ys_10;
                      mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
                    }
                    goto loop_top;
                  }
                  break;
                default:   ((void) (( 0 ) ? 0 :	(__assert_fail ("0" ,	"set_ordlist.c", 652, __PRETTY_FUNCTION__ ), 0))) ;
              }
            }
        }
    }
  }
}
static __attribute__((__regparm__(2)))  char  mercury__set_ordlist__IntroducedFrom__pred__filter_map__206__3_5_p_0(
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__TypeInfo_for_X_16,
  MR_Word mercury__set_ordlist__TypeInfo_for_Y_17,
  MR_Box mercury__set_ordlist__V_13_13,
  MR_Box * mercury__set_ordlist__V_12_12)
{
  {
    char  mercury__set_ordlist__succeeded;
    char  (__attribute__((__regparm__(2)))  * mercury__set_ordlist__func_1)(MR_Box, MR_Box, MR_Box *);
    mercury__set_ordlist__func_1 = ((char  (__attribute__((__regparm__(2)))  *)(MR_Box, MR_Box, MR_Box *)) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 1 ] ));
    {
      return mercury__set_ordlist__succeeded = mercury__set_ordlist__func_1(((MR_Box) (MR_Word) mercury__set_ordlist__HeadVar__1_1), mercury__set_ordlist__V_13_13, mercury__set_ordlist__V_12_12);
    }
    return mercury__set_ordlist__succeeded;
  }
}
static __attribute__((__regparm__(2)))  void mercury__set_ordlist__IntroducedFrom__pred__foldl__148__2_6_p_0(
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__TypeInfo_for_X_22,
  MR_Word mercury__set_ordlist__TypeInfo_for_Y_23,
  MR_Box mercury__set_ordlist__V_18_18,
  MR_Box mercury__set_ordlist__V_17_17,
  MR_Box * mercury__set_ordlist__V_16_16)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Box (__attribute__((__regparm__(2)))  * mercury__set_ordlist__func_1)(MR_Box, MR_Box, MR_Box);
    mercury__set_ordlist__func_1 = ((MR_Box (__attribute__((__regparm__(2)))  *)(MR_Box, MR_Box, MR_Box)) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 1 ] ));
    {
      *mercury__set_ordlist__V_16_16 = mercury__set_ordlist__func_1(((MR_Box) (MR_Word) mercury__set_ordlist__HeadVar__1_1), mercury__set_ordlist__V_18_18, mercury__set_ordlist__V_17_17);
    }
  }
}
static __attribute__((__regparm__(2)))  void mercury__set_ordlist__IntroducedFrom__pred__map__134__1_5_p_0(
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__TypeInfo_for_X_16,
  MR_Word mercury__set_ordlist__TypeInfo_for_Y_17,
  MR_Box mercury__set_ordlist__V_13_13,
  MR_Box * mercury__set_ordlist__V_12_12)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Box (__attribute__((__regparm__(2)))  * mercury__set_ordlist__func_1)(MR_Box, MR_Box);
    mercury__set_ordlist__func_1 = ((MR_Box (__attribute__((__regparm__(2)))  *)(MR_Box, MR_Box)) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 1 ] ));
    {
      *mercury__set_ordlist__V_12_12 = mercury__set_ordlist__func_1(((MR_Box) (MR_Word) mercury__set_ordlist__HeadVar__1_1), mercury__set_ordlist__V_13_13);
    }
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist____Compare____set_ordlist_1_0(
  MR_Word mercury__set_ordlist__TypeInfo_for__T_4,
  MR_Word * mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word mercury__set_ordlist__HeadVar__3_3)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Word mercury__set_ordlist__conv1_HeadVar__2_2;
    MR_Word mercury__set_ordlist__conv2_HeadVar__3_3;
    mercury__set_ordlist__conv1_HeadVar__2_2 = (MR_Word) mercury__set_ordlist__HeadVar__2_2;
    mercury__set_ordlist__conv2_HeadVar__3_3 = (MR_Word) mercury__set_ordlist__HeadVar__3_3;
    {
      mercury__list____Compare____list_1_0(mercury__set_ordlist__TypeInfo_for__T_4, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__conv1_HeadVar__2_2, mercury__set_ordlist__conv2_HeadVar__3_3);
      return;
    }
  }
}
__attribute__((__regparm__(2)))  char  mercury__set_ordlist____Unify____set_ordlist_1_0(
  MR_Word mercury__set_ordlist__TypeInfo_for__T_3,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Word mercury__set_ordlist__conv1_HeadVar__1_1;
    MR_Word mercury__set_ordlist__conv2_HeadVar__2_2;
    mercury__set_ordlist__conv1_HeadVar__1_1 = (MR_Word) mercury__set_ordlist__HeadVar__1_1;
    mercury__set_ordlist__conv2_HeadVar__2_2 = (MR_Word) mercury__set_ordlist__HeadVar__2_2;
    {
      mercury__set_ordlist__succeeded = mercury__list____Unify____list_1_0(mercury__set_ordlist__TypeInfo_for__T_3, mercury__set_ordlist__conv1_HeadVar__1_1, mercury__set_ordlist__conv2_HeadVar__2_2);
    }
    if (mercury__set_ordlist__succeeded)
      mercury__set_ordlist__succeeded = 1 ;
    return mercury__set_ordlist__succeeded;
  }
}
__attribute__((__regparm__(2)))  void mercury__set_ordlist__power_union_2_3_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_10,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Word * mercury__set_ordlist__HeadVar__3_3)
{
  {
  loop_top:;
    {
      char  mercury__set_ordlist__succeeded;
      if ((mercury__set_ordlist__HeadVar__1_1 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
        *mercury__set_ordlist__HeadVar__3_3 = mercury__set_ordlist__HeadVar__2_2;
      else
        {
          MR_Word mercury__set_ordlist__NextSet_5;
          MR_Word mercury__set_ordlist__SetofSets_6;
          MR_Word mercury__set_ordlist__Set1_9;
          mercury__set_ordlist__NextSet_5 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] ));
          mercury__set_ordlist__SetofSets_6 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__1_1 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
          {
            mercury__list__merge_and_remove_dups_3_p_0(mercury__set_ordlist__TypeInfo_for_T_10, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__NextSet_5, &mercury__set_ordlist__Set1_9);
          }
          {
            {
              MR_Word mercury__set_ordlist__HeadVar__1_1__tmp_copy = mercury__set_ordlist__SetofSets_6;
              MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Set1_9;
              mercury__set_ordlist__HeadVar__1_1 = mercury__set_ordlist__HeadVar__1_1__tmp_copy;
              mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
            }
            goto loop_top;
          }
        }
    }
  }
}
static __attribute__((__regparm__(2)))  char  mercury__set_ordlist__no_dups_2_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_7,
  MR_Box mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2)
{
  {
  loop_top:;
    {
      char  mercury__set_ordlist__succeeded;
      if ((mercury__set_ordlist__HeadVar__2_2 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
        mercury__set_ordlist__succeeded = 1 ;
      else
        {
          MR_Box mercury__set_ordlist__Elem0_5;
          MR_Word mercury__set_ordlist__Elems_6;
          mercury__set_ordlist__Elem0_5 = (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] );
          mercury__set_ordlist__Elems_6 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
          {
            mercury__set_ordlist__succeeded = mercury__builtin__unify_2_p_0(mercury__set_ordlist__TypeInfo_for_T_7, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__Elem0_5);
          }
          mercury__set_ordlist__succeeded = !(mercury__set_ordlist__succeeded);
          if (mercury__set_ordlist__succeeded)
            {
              {
                MR_Box mercury__set_ordlist__HeadVar__1_1__tmp_copy = mercury__set_ordlist__Elem0_5;
                MR_Word mercury__set_ordlist__HeadVar__2_2__tmp_copy = mercury__set_ordlist__Elems_6;
                mercury__set_ordlist__HeadVar__1_1 = mercury__set_ordlist__HeadVar__1_1__tmp_copy;
                mercury__set_ordlist__HeadVar__2_2 = mercury__set_ordlist__HeadVar__2_2__tmp_copy;
              }
              goto loop_top;
            }
        }
      return mercury__set_ordlist__succeeded;
    }
  }
}
__attribute__((__regparm__(2)))  char  mercury__set_ordlist__sort_no_dups_2_p_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T_7,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word * mercury__set_ordlist__HeadVar__2_2)
{
  {
    char  mercury__set_ordlist__succeeded;
    {
      mercury__list__merge_sort_2_p_0(mercury__set_ordlist__TypeInfo_for_T_7, mercury__set_ordlist__HeadVar__1_1, mercury__set_ordlist__HeadVar__2_2);
    }
    if ((*mercury__set_ordlist__HeadVar__2_2 == (MR_Word) (MR_Word) ((MR_Word *)((char *)(  (( (MR_Integer) 0 ) << 2  )  ) + ( ( 0 )  ))) ))
      mercury__set_ordlist__succeeded = 1 ;
    else
      {
        MR_Box mercury__set_ordlist__Elem_5;
        MR_Word mercury__set_ordlist__Elems_6;
        mercury__set_ordlist__Elem_5 = (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) *mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 0 ] );
        mercury__set_ordlist__Elems_6 = ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) *mercury__set_ordlist__HeadVar__2_2 ) ) - (  ( ( 1 )  ) )) )[  (MR_Integer) 1 ] ));
        {
          return mercury__set_ordlist__succeeded = mercury__set_ordlist__no_dups_2_p_0(mercury__set_ordlist__TypeInfo_for_T_7, mercury__set_ordlist__Elem_5, mercury__set_ordlist__Elems_6);
        }
      }
    return mercury__set_ordlist__succeeded;
  }
}
static __attribute__((__regparm__(2)))  void mercury__set_ordlist__fold_4_f_0_1(
  MR_Box mercury__set_ordlist__closure_arg,
  MR_Box mercury__set_ordlist__wrapper_arg_1,
  MR_Box mercury__set_ordlist__wrapper_arg_2,
  MR_Box * mercury__set_ordlist__wrapper_arg_3)
{
  {
    MR_Box mercury__set_ordlist__closure;
    mercury__set_ordlist__closure = mercury__set_ordlist__closure_arg;
    {
      mercury__set_ordlist__IntroducedFrom__pred__foldl__148__2_6_p_0(((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 3 ] )), ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 4 ] )), ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 5 ] )), mercury__set_ordlist__wrapper_arg_1, mercury__set_ordlist__wrapper_arg_2, mercury__set_ordlist__wrapper_arg_3);
      return;
    }
  }
}
__attribute__((__regparm__(2)))  MR_Box mercury__set_ordlist__fold_4_f_0(
  MR_Word mercury__set_ordlist__TypeInfo_for_T1_10,
  MR_Word mercury__set_ordlist__TypeInfo_for_T2_11,
  MR_Word mercury__set_ordlist__HeadVar__1_1,
  MR_Word mercury__set_ordlist__HeadVar__2_2,
  MR_Box mercury__set_ordlist__HeadVar__3_3)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Box mercury__set_ordlist__HeadVar__4_4;
    MR_Word mercury__set_ordlist__P_9_19;
    {
      mercury__set_ordlist__P_9_19 = (MR_Word) (( MR_Word  *) GC_malloc(   ((MR_Integer) 6 * sizeof(MR_Word) )  ) ) ;
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  0 ]  = (MR_Word) ((MR_Box) (MR_Word) (((void *)0) ));
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  1 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__fold_4_f_0_1));
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  2 ]  = (MR_Word) ((MR_Box) (MR_Word) ((MR_Integer) 3));
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  3 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__HeadVar__1_1));
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  4 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__TypeInfo_for_T1_10));
      ((MR_Word *) ((MR_Word) ( (  mercury__set_ordlist__P_9_19 ) ) - (  ( ( 0 )  ) )) )[  5 ]  = (MR_Word) ((MR_Box) (MR_Word) (mercury__set_ordlist__TypeInfo_for_T2_11));
    }
    {
      mercury__list__foldl_4_p_1(mercury__set_ordlist__TypeInfo_for_T1_10, mercury__set_ordlist__TypeInfo_for_T2_11, mercury__set_ordlist__P_9_19, mercury__set_ordlist__HeadVar__2_2, mercury__set_ordlist__HeadVar__3_3, &mercury__set_ordlist__HeadVar__4_4);
    }
    return mercury__set_ordlist__HeadVar__4_4;
  }
}
static __attribute__((__regparm__(2)))  char  mercury__set_ordlist__filter_map_3_f_0_1(
  MR_Box mercury__set_ordlist__closure_arg,
  MR_Box mercury__set_ordlist__wrapper_arg_1,
  MR_Box * mercury__set_ordlist__wrapper_arg_2)
{
  {
    char  mercury__set_ordlist__succeeded;
    MR_Box mercury__set_ordlist__closure;
    mercury__set_ordlist__closure = mercury__set_ordlist__closure_arg;
    {
      return mercury__set_ordlist__succeeded = mercury__set_ordlist__IntroducedFrom__pred__filter_map__206__3_5_p_0(((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 3 ] )), ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 4 ] )), ((MR_Word) (MR_Word) (* (MR_Box *) & ((MR_Word *) ((MR_Word) ( (  (MR_Word) mercury__set_ordlist__closure ) ) - (  ( ( 0 )  ) )) )[  (MR_Integer) 5 ] )), mercury__set_ordlist__wrapper_arg_1, mercury__set_ordlist__wrapper_arg_2);
    }
    return mercury__set_ordlist__succeeded;
  }
}
-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
                                    |  of excellence is a lethal habit"
WWW: < http://www.cs.mu.oz.au/~fjh >  |     -- the last words of T. S. Garp.


More information about the Gcc-bugs mailing list