/* generated by Id 1.0 at 2007-08-31 06:59:13 Z */
/* with the command: -I../stage1/ -c perform.st -o ../stage2/perform.o.c */

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <setjmp.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <assert.h>
#define GC_DLL 1
#include <gc/gc.h>
#if defined(WIN32)
# include <malloc.h>
# include <windows.h>
  typedef HINSTANCE dlhandle_t;
# define dlopen(path, mode)	LoadLibrary(path)
# define dlsym(handle, name)	((void *)GetProcAddress(handle, name))
# define dlclose(handle)	FreeLibrary(handle)
# include <winbase.h>
  inline int gettimeofday(struct timeval *tp, void *tzp)
  {
     union {
       long long ns100;
       FILETIME ft;
     } _now;
     GetSystemTimeAsFileTime(&_now.ft);
     tp->tv_usec= (long)((_now.ns100 / 10LL) % 1000000LL);
     tp->tv_sec= (long)((_now.ns100 - (116444736000000000LL)) / 10000000LL);
     return 0;
   }
#else
# include <dlfcn.h>
  typedef void *dlhandle_t;
#endif
#ifndef O_BINARY
# define O_BINARY 0
#endif

typedef struct t__object *oop;

typedef oop (*_imp_t)(oop _thunk, oop receiver, ...);

struct __closure
{
  _imp_t method;
  oop	 data;
};

static void              *(*_local_param   )(int index)= 0;
static oop  		  (*_local_intern  )(const char *string)= 0;
static oop  		  (*_local_proto   )(oop base)= 0;
static oop  		  (*_local_import  )(const char *name)= 0;
static oop  		  (*_local_export  )(const char *name, oop value)= 0;
static void 		  (*_local_method  )(oop type, oop selector, _imp_t method)= 0;
static oop  		  (*_local_alloc   )(oop type, size_t size)= 0;
static oop  		 *(*_local_palloc  )(size_t size)= 0;
static void  		 *(*_local_balloc  )(size_t size)= 0;
static struct __closure  *(*_local_bind    )(oop selector, oop receiver)= 0;
static oop                (*_local_nlreturn)(oop nlr, oop result)= 0;
static oop                (*_local_nlresult)(void)= 0;
static oop  		    _local_object= 0;
static oop  		   *_local_tag_vtable= 0;
static oop  		   *_local_nil_vtable= 0;
static void               (*_local_gc_addRoots)(char *lo, char *hi)= 0;
static void	          (*_local_gc_unregisterDisappearingLink)(void *ptr)= 0;
static void		  (*_local_gc_generalRegisterDisappearingLink)(void *link, void *ptr)= 0;
static void		  (*_local_gc_gcollect)(void)= 0;
static void		 *(*_local_enter)(char *name, char *type, char *file)= 0;
static void		  (*_local_line)(int line)= 0;
static void		  (*_local_leave)(void *)= 0;
static char		 *(*_local_backtrace)(void)= 0;

#define _param(INDEX)		_local_param(INDEX)
#define _selector(NAME)		_local_intern(NAME)
#define _proto(BASE)		_local_proto(BASE)
#define _id_import(NAME)	_local_import(NAME)
#define _id_export(NAME, VAL)	_local_export((NAME), (VAL))
#define _method(TYPE, SEL, IMP)	_local_method((TYPE), (SEL), (_imp_t)(IMP))
#define _alloc(RCV, LBS)	_local_alloc((RCV), (LBS))
#define _palloc(LBS)		_local_palloc((LBS))
#define _balloc(LBS)		_local_balloc((LBS))
#define _nlreturn(NLR, ARG)	_local_nlreturn((NLR), (ARG))
#define _nlresult()		_local_nlresult()
#define _backtrace()		_local_backtrace()
#ifdef ID_DEBUG
# define _enter(NM, TYPE, FILE)	void *__id_debug= _local_enter(NM, TYPE, FILE)
# define _line(line)		_local_line(line)
# define _leave()		_local_leave(__id_debug)
#else
# define _enter(NM, TYPE, FILE)
# define _line(line)
# define _leave()
#endif
#define _return			_leave(); return

#define _send(MSG, RCV, ARG...) ({					\
  register oop _r= (RCV);						\
  struct __closure *_c= (struct __closure *)_local_bind((MSG), _r);	\
  (_c->method)((oop)_c, _r, _r, ##ARG);					\
})

#define _super(TYP, MSG, RCV, ARG...) ({				\
  register oop _r= (RCV);						\
  struct __closure *_c= (struct __closure *)_local_bind((MSG), (TYP));	\
  (_c->method)((oop)_c, _r, _r, ##ARG);					\
})

static oop s_new_5f_= 0;
static oop s_in_perform_with_= 0;
static oop s_in__5fperform_with_= 0;
static oop s_perform_withArguments_= 0;
static oop s_ifTrue_ifFalse_= 0;
static oop s__3c= 0;
static oop s_error_= 0;
static oop s_perform_with0Arguments_= 0;
static oop s_value_5f_= 0;
static oop s_perform_with1Arguments_= 0;
static oop s__5fimport_= 0;
static oop s_perform_with2Arguments_= 0;
static oop s_perform_with3Arguments_= 0;
static oop s_perform_with4Arguments_= 0;
static oop s_perform_with5Arguments_= 0;
static oop s__2b= 0;
static oop s_size= 0;
static oop s_perform_= 0;
static oop s__5fperform_= 0;
static oop s_asSelector= 0;
static oop s_function_5f_arity_5f_outer_state_nlr_5f_= 0;
static oop s_at_ifAbsent_= 0;
static oop s__5fdebugName= 0;
static oop s_new= 0;
static oop s_size_5f_value_5f_= 0;
static oop s__5fsize= 0;
static oop s__5fstringValue= 0;
static oop s_respondsTo_= 0;
static oop s_findKeyOrNil_= 0;
static oop s__5fvtable= 0;
static oop s_perform_with_= 0;
static oop s__5fperform_w_= 0;
static oop s_perform_with_with_= 0;
static oop s__5fperform_w_w_= 0;
static oop s_perform_with_with_with_= 0;
static oop s__5fperform_w_w_w_= 0;
static oop s_at_= 0;
static oop s_perform_with_with_with_with_= 0;
static oop s__5fperform_w_w_w_w_= 0;
static oop s_perform_with_with_with_with_with_= 0;
static oop s__7e_7e= 0;
static oop s__5fperform_w_w_w_w_w_= 0;
static oop s__5fsizeof= 0;
static oop s_in_perform_= 0;
static oop s_at_put_= 0;
static oop s_in__5fperform_= 0;
static struct _Selector { const char *name; oop *addr; } _Selectors[]= {
  { "new_:", &s_new_5f_ },
  { "in:perform:with:", &s_in_perform_with_ },
  { "in:_perform:with:", &s_in__5fperform_with_ },
  { "perform:withArguments:", &s_perform_withArguments_ },
  { "ifTrue:ifFalse:", &s_ifTrue_ifFalse_ },
  { "<", &s__3c },
  { "error:", &s_error_ },
  { "perform:with0Arguments:", &s_perform_with0Arguments_ },
  { "value_:", &s_value_5f_ },
  { "perform:with1Arguments:", &s_perform_with1Arguments_ },
  { "_import:", &s__5fimport_ },
  { "perform:with2Arguments:", &s_perform_with2Arguments_ },
  { "perform:with3Arguments:", &s_perform_with3Arguments_ },
  { "perform:with4Arguments:", &s_perform_with4Arguments_ },
  { "perform:with5Arguments:", &s_perform_with5Arguments_ },
  { "+", &s__2b },
  { "size", &s_size },
  { "perform:", &s_perform_ },
  { "_perform:", &s__5fperform_ },
  { "asSelector", &s_asSelector },
  { "function_:arity_:outer:state:nlr_:", &s_function_5f_arity_5f_outer_state_nlr_5f_ },
  { "at:ifAbsent:", &s_at_ifAbsent_ },
  { "_debugName", &s__5fdebugName },
  { "new", &s_new },
  { "size_:value_:", &s_size_5f_value_5f_ },
  { "_size", &s__5fsize },
  { "_stringValue", &s__5fstringValue },
  { "respondsTo:", &s_respondsTo_ },
  { "findKeyOrNil:", &s_findKeyOrNil_ },
  { "_vtable", &s__5fvtable },
  { "perform:with:", &s_perform_with_ },
  { "_perform:w:", &s__5fperform_w_ },
  { "perform:with:with:", &s_perform_with_with_ },
  { "_perform:w:w:", &s__5fperform_w_w_ },
  { "perform:with:with:with:", &s_perform_with_with_with_ },
  { "_perform:w:w:w:", &s__5fperform_w_w_w_ },
  { "at:", &s_at_ },
  { "perform:with:with:with:with:", &s_perform_with_with_with_with_ },
  { "_perform:w:w:w:w:", &s__5fperform_w_w_w_w_ },
  { "perform:with:with:with:with:with:", &s_perform_with_with_with_with_with_ },
  { "~~", &s__7e_7e },
  { "_perform:w:w:w:w:w:", &s__5fperform_w_w_w_w_w_ },
  { "_sizeof", &s__5fsizeof },
  { "in:perform:", &s_in_perform_ },
  { "at:put:", &s_at_put_ },
  { "in:_perform:", &s_in__5fperform_ },
  { 0, 0 }
};
struct t__object {
  struct _vtable *_vtable[0];
};
struct t__selector {
  struct _vtable *_vtable[0];
  oop v__size;
  oop v__elements;
};
struct t__assoc {
  struct _vtable *_vtable[0];
  oop v_key;
  oop v_value;
};
struct t__closure {
  struct _vtable *_vtable[0];
  oop v__method;
  oop v_data;
};
struct t__vector {
  struct _vtable *_vtable[0];
  oop v__size;
};
struct t__vtable {
  struct _vtable *_vtable[0];
  oop v__tally;
  oop v_bindings;
  oop v_delegate;
};
struct t_Object {
  struct _vtable *_vtable[0];
};
struct t_UndefinedObject {
  struct _vtable *_vtable[0];
};
struct t_StaticBlockClosure {
  struct _vtable *_vtable[0];
  oop v__function;
  oop v__arity;
};
struct t_BlockClosure {
  struct _vtable *_vtable[0];
  oop v__function;
  oop v__arity;
  oop v_outer;
  oop v_state;
  oop v__nlr;
};
struct t_Magnitude {
  struct _vtable *_vtable[0];
};
struct t_Character {
  struct _vtable *_vtable[0];
  oop v_value;
};
struct t_Number {
  struct _vtable *_vtable[0];
};
struct t_Fraction {
  struct _vtable *_vtable[0];
  oop v_numerator;
  oop v_denominator;
};
struct t_Float {
  struct _vtable *_vtable[0];
};
struct t_Integer {
  struct _vtable *_vtable[0];
};
struct t_SmallInteger {
  struct _vtable *_vtable[0];
};
struct t_LargePositiveInteger {
  struct _vtable *_vtable[0];
  oop v_bytes;
};
struct t_LargeNegativeInteger {
  struct _vtable *_vtable[0];
  oop v_bytes;
};
struct t_Collection {
  struct _vtable *_vtable[0];
};
struct t_SequenceableCollection {
  struct _vtable *_vtable[0];
};
struct t_ArrayedCollection {
  struct _vtable *_vtable[0];
  oop v_size;
};
struct t_Array {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
struct t_ImmutableArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
struct t_WordArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__words;
};
struct t_ImmutableWordArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__words;
};
struct t_ByteArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_ImmutableByteArray {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_String {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_ImmutableString {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_Symbol {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__bytes;
};
struct t_nil {
  struct _vtable *_vtable[0];
};
struct t_true {
  struct _vtable *_vtable[0];
};
struct t_false {
  struct _vtable *_vtable[0];
};
struct t_CharacterTable {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
struct t_Set {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_LookupKey {
  struct _vtable *_vtable[0];
  oop v_key;
};
struct t_Association {
  struct _vtable *_vtable[0];
  oop v_key;
  oop v_value;
};
struct t_OrderedCollection {
  struct _vtable *_vtable[0];
  oop v_array;
  oop v_firstIndex;
  oop v_lastIndex;
};
struct t_Dictionary {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_SymbolTable {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_IdentitySet {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_IdentityDictionary {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_SelectorTable {
  struct _vtable *_vtable[0];
  oop v_tally;
  oop v_array;
};
struct t_PerformWithArgumentsSelectors {
  struct _vtable *_vtable[0];
  oop v_size;
  oop v__pointers;
};
static oop l_2= 0;
static oop l_3= 0;
static oop l_4= 0;
static oop l_5= 0;
static oop l_6= 0;
static oop l_7= 0;
static oop l_8= 0;
static oop l_9= 0;
static oop l_10= 0;
static oop l_11= 0;
static oop l_12= 0;
static oop l_13= 0;
static oop l_14= 0;
static oop l_15= 0;
static oop l_16= 0;
static oop l_17= 0;
static oop l_18= 0;
static oop l_19= 0;
static oop l_20= 0;
static oop l_21= 0;
static oop l_22= 0;
static oop l_23= 0;
static oop l_24= 0;
static oop l_25= 0;
static oop l_26= 0;
static oop v__object= 0;
static oop v__selector= 0;
static oop v__vector= 0;
static oop v_Object= 0;
static oop v_UndefinedObject= 0;
static oop v_StaticBlockClosure= 0;
static oop v_BlockClosure= 0;
static oop v_Magnitude= 0;
static oop v_Number= 0;
static oop v_Integer= 0;
static oop v_SmallInteger= 0;
static oop v_LargePositiveInteger= 0;
static oop v_Collection= 0;
static oop v_SequenceableCollection= 0;
static oop v_ArrayedCollection= 0;
static oop v_Array= 0;
static oop v_ImmutableArray= 0;
static oop v_WordArray= 0;
static oop v_ByteArray= 0;
static oop v_String= 0;
static oop v_ImmutableString= 0;
static oop v_Symbol= 0;
static oop v_nil= 0;
static oop v_true= 0;
static oop v_false= 0;
static oop v_Set= 0;
static oop v_LookupKey= 0;
static oop v_Dictionary= 0;
static oop v_IdentityDictionary= 0;
static oop v_SelectorTable= 0;
static oop v_PerformWithArgumentsSelectors= 0;
static oop al_8[6]= {
  
(oop)&l_2,
  
(oop)&l_3,
  
(oop)&l_4,
  
(oop)&l_5,
  
(oop)&l_6,
  
(oop)&l_7
};
static size_t SelectorTable___5fsizeof(oop _closure, oop v_self) { return sizeof(struct t_SelectorTable); }
static char *SelectorTable___5fdebugName(oop _closure, oop v_self) { return "SelectorTable"; }
static oop b_1(oop v__closure, oop v__self)
 {
  _enter("[]", "?", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  _line(32);
  _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1];  /* self */
  _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3];  /* aSymbol */
  _3= v__selector;
  _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3];  /* aSymbol */
  _line(32);
  _4=_send(s__5fsize, _4);
  _5= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3];  /* aSymbol */
  _line(32);
  _5=_send(s__5fstringValue, _5);
  _line(32);
  _3=_send(s_size_5f_value_5f_, _3, _4, _5);
  _line(32);
  _1=_send(s_at_put_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop SelectorTable__at_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol)
 {
  _enter("at:", "SelectorTable", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _state1= _send(s_new_5f_, v__vector, 6);
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  ((oop *)_state1)[2]= v_stateful_self;
  ((oop *)_state1)[1]= v_self;
  ((oop *)_state1)[3]= v_aSymbol;
  _line(30);
  _1= ((oop *)_state1)[1];  /* self */
  _2= ((oop *)_state1)[3];  /* aSymbol */
  /* Scope() */
  /* Scope('aSymbol'->ArgumentVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */
  /* nil */
  /* 2 */
  /* 1 */
  _3= _send(s_function_5f_arity_5f_outer_state_nlr_5f_, v_BlockClosure, (oop)b_1, 0, 0, ((oop *)_state1), 0);
  _line(32);
  _1=_send(s_at_ifAbsent_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop Symbol__asSelector(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("asSelector", "Symbol", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  _line(35);
  _1= v_SelectorTable;
  _2= v_self;
  _line(37);
  _1=_send(s_at_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop Object__respondsTo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol)
 {
  _enter("respondsTo:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(40);
  _1= v_nil;
  _2= v_self;
  _line(42);
  _2=_send(s__5fvtable, _2);
  _3= v_SelectorTable;
  _4= v_aSymbol;
  _line(42);
  _3=_send(s_at_, _3, _4);
  _line(42);
  _2=_send(s_findKeyOrNil_, _2, _3);
  _1= (_1 != _2) ? v_true : v_false;
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol)
 {
  _enter("perform:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(45);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(45);
  _2=_send(s_at_, _2, _3);
  _line(45);
  _1=_send(s__5fperform_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_a)
 {
  _enter("perform:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(46);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(46);
  _2=_send(s_at_, _2, _3);
  _3= v_a;
  _line(46);
  _1=_send(s__5fperform_w_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_a, oop v_b)
 {
  _enter("perform:with:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(47);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(47);
  _2=_send(s_at_, _2, _3);
  _3= v_a;
  _4= v_b;
  _line(47);
  _1=_send(s__5fperform_w_w_, _1, _2, _3, _4);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with_with_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_a, oop v_b, oop v_c)
 {
  _enter("perform:with:with:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  _line(48);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(48);
  _2=_send(s_at_, _2, _3);
  _3= v_a;
  _4= v_b;
  _5= v_c;
  _line(48);
  _1=_send(s__5fperform_w_w_w_, _1, _2, _3, _4, _5);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with_with_with_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_a, oop v_b, oop v_c, oop v_d)
 {
  _enter("perform:with:with:with:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  oop _6= 0;
  _line(49);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(49);
  _2=_send(s_at_, _2, _3);
  _3= v_a;
  _4= v_b;
  _5= v_c;
  _6= v_d;
  _line(49);
  _1=_send(s__5fperform_w_w_w_w_, _1, _2, _3, _4, _5, _6);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with_with_with_with_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_a, oop v_b, oop v_c, oop v_d, oop v_e)
 {
  _enter("perform:with:with:with:with:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  oop _6= 0;
  oop _7= 0;
  _line(50);
  _1= v_self;
  _2= v_SelectorTable;
  _3= v_aSymbol;
  _line(50);
  _2=_send(s_at_, _2, _3);
  _3= v_a;
  _4= v_b;
  _5= v_c;
  _6= v_d;
  _7= v_e;
  _line(50);
  _1=_send(s__5fperform_w_w_w_w_w_, _1, _2, _3, _4, _5, _6, _7);
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s)
 {
  _enter("_perform:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(52);
 {
# define self ((struct t_Object *)v_self)

#if STAGE1
# define V_SELF v_self
#else
# define V_SELF v_self, v_self
#endif
  struct __closure *c= _local_bind(v_s, v_self);
  return (c->method)((oop)c, V_SELF);

# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_w_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s, oop v_a)
 {
  _enter("_perform:w:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(63);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_self);  return (c->method)((oop)c, V_SELF, v_a); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_w_w_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s, oop v_a, oop v_b)
 {
  _enter("_perform:w:w:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(64);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_self);  return (c->method)((oop)c, V_SELF, v_a, v_b); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_w_w_w_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s, oop v_a, oop v_b, oop v_c)
 {
  _enter("_perform:w:w:w:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(65);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_self);  return (c->method)((oop)c, V_SELF, v_a, v_b, v_c); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_w_w_w_w_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s, oop v_a, oop v_b, oop v_c, oop v_d)
 {
  _enter("_perform:w:w:w:w:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(66);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_self);  return (c->method)((oop)c, V_SELF, v_a, v_b, v_c, v_d); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object___5fperform_w_w_w_w_w_(oop v__closure, oop v_stateful_self, oop v_self, oop v_s, oop v_a, oop v_b, oop v_c, oop v_d, oop v_e)
 {
  _enter("_perform:w:w:w:w:w:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(67);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_self);  return (c->method)((oop)c, V_SELF, v_a, v_b, v_c, v_d, v_e); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object__in_perform_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aType, oop v_aSymbol)
 {
  _enter("in:perform:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(69);
  _1= v_self;
  _2= v_aType;
  _3= v_SelectorTable;
  _4= v_aSymbol;
  _line(69);
  _3=_send(s_at_, _3, _4);
  _line(69);
  _1=_send(s_in__5fperform_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop Object__in_perform_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aType, oop v_s, oop v_a)
 {
  _enter("in:perform:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(70);
  _1= v_self;
  _2= v_aType;
  _3= v_SelectorTable;
  _4= v_s;
  _line(70);
  _3=_send(s_at_, _3, _4);
  _4= v_a;
  _line(70);
  _1=_send(s_in__5fperform_with_, _1, _2, _3, _4);
  _leave();
  return _1;
  _leave();
 }
static oop Object__in__5fperform_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aType, oop v_s)
 {
  _enter("in:_perform:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(72);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_aType);  return (c->method)((oop)c, V_SELF); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop Object__in__5fperform_with_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aType, oop v_s, oop v_a)
 {
  _enter("in:_perform:with:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  _line(74);
 {
# define self ((struct t_Object *)v_self)
 struct __closure *c= _local_bind(v_s, v_aType);  return (c->method)((oop)c, V_SELF, v_a); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static size_t PerformWithArgumentsSelectors___5fsizeof(oop _closure, oop v_self) { return sizeof(struct t_PerformWithArgumentsSelectors); }
static char *PerformWithArgumentsSelectors___5fdebugName(oop _closure, oop v_self) { return "PerformWithArgumentsSelectors"; }
static oop Object__perform_withArguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:withArguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop v_size= 0;
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  (void)v_size;
  _line(87);
  /* ifTrue:ifFalse: */
  _1= v_arguments;
  _line(90);
  _1=_send(s_size, _1);
  v_size= _1;
  _2= l_9;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l1;
 {
  _1= v_self;
  _2= v_PerformWithArgumentsSelectors;
  _3= l_10;
  _4= v_size;
  {
    int _l= (int)_3 >> 1;
    int _r= (int)_4 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_4) && ((_s ^ (_s << 1)) >= 0))  _3= (oop)(_s << 1 | 1);  else _3= _send(s__2b, _3, _4);
  }
  _line(91);
  _2=_send(s_at_, _2, _3);
  _3= v_aSymbol;
  _4= v_arguments;
  _line(91);
  _1=_send(s_perform_with_with_, _1, _2, _3, _4);
 }
  goto _l2;
 _l1:;
 {
  _1= v_self;
  _2= l_11;
  _line(92);
  _1=_send(s_error_, _1, _2);
 }
 _l2:;
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with0Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with0Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  _line(95);
  _1= v_self;
  _2= v_aSymbol;
  _line(95);
  _1=_send(s_perform_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with1Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with1Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(96);
  _1= v_self;
  _2= v_aSymbol;
  _3= v_arguments;
  _4= l_12;
  _line(96);
  _3=_send(s_at_, _3, _4);
  _line(96);
  _1=_send(s_perform_with_, _1, _2, _3);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with2Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with2Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  _line(97);
  _1= v_self;
  _2= v_aSymbol;
  _3= v_arguments;
  _4= l_13;
  _line(97);
  _3=_send(s_at_, _3, _4);
  _4= v_arguments;
  _5= l_14;
  _line(97);
  _4=_send(s_at_, _4, _5);
  _line(97);
  _1=_send(s_perform_with_with_, _1, _2, _3, _4);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with3Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with3Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  oop _6= 0;
  _line(98);
  _1= v_self;
  _2= v_aSymbol;
  _3= v_arguments;
  _4= l_15;
  _line(98);
  _3=_send(s_at_, _3, _4);
  _4= v_arguments;
  _5= l_16;
  _line(98);
  _4=_send(s_at_, _4, _5);
  _5= v_arguments;
  _6= l_17;
  _line(98);
  _5=_send(s_at_, _5, _6);
  _line(98);
  _1=_send(s_perform_with_with_with_, _1, _2, _3, _4, _5);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with4Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with4Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  oop _6= 0;
  oop _7= 0;
  _line(99);
  _1= v_self;
  _2= v_aSymbol;
  _3= v_arguments;
  _4= l_18;
  _line(99);
  _3=_send(s_at_, _3, _4);
  _4= v_arguments;
  _5= l_19;
  _line(99);
  _4=_send(s_at_, _4, _5);
  _5= v_arguments;
  _6= l_20;
  _line(99);
  _5=_send(s_at_, _5, _6);
  _6= v_arguments;
  _7= l_21;
  _line(100);
  _6=_send(s_at_, _6, _7);
  _line(99);
  _1=_send(s_perform_with_with_with_with_, _1, _2, _3, _4, _5, _6);
  _leave();
  return _1;
  _leave();
 }
static oop Object__perform_with5Arguments_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSymbol, oop v_arguments)
 {
  _enter("perform:with5Arguments:", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/perform.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  oop _5= 0;
  oop _6= 0;
  oop _7= 0;
  oop _8= 0;
  _line(101);
  _1= v_self;
  _2= v_aSymbol;
  _3= v_arguments;
  _4= l_22;
  _line(101);
  _3=_send(s_at_, _3, _4);
  _4= v_arguments;
  _5= l_23;
  _line(101);
  _4=_send(s_at_, _4, _5);
  _5= v_arguments;
  _6= l_24;
  _line(101);
  _5=_send(s_at_, _5, _6);
  _6= v_arguments;
  _7= l_25;
  _line(102);
  _6=_send(s_at_, _6, _7);
  _7= v_arguments;
  _8= l_26;
  _line(102);
  _7=_send(s_at_, _7, _8);
  _line(101);
  _1=_send(s_perform_with_with_with_with_with_, _1, _2, _3, _4, _5, _6, _7);
  _leave();
  return _1;
  _leave();
 }

void __id__init__perform(void)
{
  if (_local_object) return;
  { 
    dlhandle_t global= dlopen(0, RTLD_LAZY);
    _local_object= *(oop *)dlsym(global, "_libid_object");
    _local_param= dlsym(global, "_libid_param");
    _local_intern= dlsym(global, "_libid_intern");
    _local_proto= dlsym(global, "_libid_proto");
    _local_import= dlsym(global, "_libid_import");
    _local_export= dlsym(global, "_libid_export");
    _local_method= dlsym(global, "_libid_method");
    _local_alloc= dlsym(global, "_libid_alloc");
    _local_palloc= dlsym(global, "_libid_palloc");
    _local_balloc= dlsym(global, "_libid_balloc");
    _local_bind= dlsym(global, "_libid_bind");
    _local_nlreturn= dlsym(global, "_libid_nlreturn");
    _local_nlresult= dlsym(global, "_libid_nlresult");
    _local_enter= dlsym(global, "_libid_enter");
    _local_line= dlsym(global, "_libid_line");
    _local_leave= dlsym(global, "_libid_leave");
    _local_backtrace= dlsym(global, "_libid_backtrace");
    _local_tag_vtable= dlsym(global, "_libid_tag_vtable");
    _local_nil_vtable= dlsym(global, "_libid_nil_vtable");
    _local_gc_addRoots= dlsym(global, "GC_add_roots");
    _local_gc_unregisterDisappearingLink= dlsym(global, "GC_unregister_disappearing_link");
    _local_gc_generalRegisterDisappearingLink= dlsym(global, "GC_general_register_disappearing_link");
    _local_gc_gcollect= dlsym(global, "GC_gcollect");
    dlclose(global);
  }
# define GC_add_roots _local_gc_addRoots
  GC_INIT();
  {
    struct _Selector *s= 0;
    for (s= _Selectors;  s->name;  ++s)
      *s->addr= _selector(s->name);
  }
  _enter("__id__init__", "<initialisation>", "perform.st");

  _send(s__5fimport_, _local_object, "Symbol", "__id__init__Symbol");
  _send(s__5fimport_, _local_object, "String", "__id__init__String");
  _send(s__5fimport_, _local_object, "ByteArray", "__id__init__ByteArray");
  _send(s__5fimport_, _local_object, "ArrayedCollection", "__id__init__ArrayedCollection");
  _send(s__5fimport_, _local_object, "SequenceableCollection", "__id__init__SequenceableCollection");
  _send(s__5fimport_, _local_object, "Collection", "__id__init__Collection");
  _send(s__5fimport_, _local_object, "Object", "__id__init__Object");
  _send(s__5fimport_, _local_object, "_object", "__id__init___5fobject");
  v__object= _id_import("_object");
  v__selector= _id_import("_selector");
  v__vector= _id_import("_vector");
  v_Object= _id_import("Object");
  v_UndefinedObject= _id_import("UndefinedObject");
  v_StaticBlockClosure= _id_import("StaticBlockClosure");
  v_BlockClosure= _id_import("BlockClosure");
  v_Magnitude= _id_import("Magnitude");
  v_Number= _id_import("Number");
  v_Integer= _id_import("Integer");
  v_SmallInteger= _id_import("SmallInteger");
  v_LargePositiveInteger= _id_import("LargePositiveInteger");
  v_Collection= _id_import("Collection");
  v_SequenceableCollection= _id_import("SequenceableCollection");
  v_ArrayedCollection= _id_import("ArrayedCollection");
  v_Array= _id_import("Array");
  v_ImmutableArray= _id_import("ImmutableArray");
  v_WordArray= _id_import("WordArray");
  v_ByteArray= _id_import("ByteArray");
  v_String= _id_import("String");
  v_ImmutableString= _id_import("ImmutableString");
  v_Symbol= _id_import("Symbol");
  v_nil= _id_import("nil");
  v_true= _id_import("true");
  v_false= _id_import("false");
  _send(s__5fimport_, _local_object, "BlockClosure", "__id__init__BlockClosure");
  _send(s__5fimport_, _local_object, "SmallInteger", "__id__init__SmallInteger");
  _send(s__5fimport_, _local_object, "Integer", "__id__init__Integer");
  _send(s__5fimport_, _local_object, "Number", "__id__init__Number");
  _send(s__5fimport_, _local_object, "Magnitude", "__id__init__Magnitude");
  _send(s__5fimport_, _local_object, "Array", "__id__init__Array");
  _send(s__5fimport_, _local_object, "Character", "__id__init__Character");
  _send(s__5fimport_, _local_object, "WordArray", "__id__init__WordArray");
  _send(s__5fimport_, _local_object, "Dictionary", "__id__init__Dictionary");
  _send(s__5fimport_, _local_object, "Set", "__id__init__Set");
  v_Set= _id_import("Set");
  _send(s__5fimport_, _local_object, "Association", "__id__init__Association");
  _send(s__5fimport_, _local_object, "LookupKey", "__id__init__LookupKey");
  v_LookupKey= _id_import("LookupKey");
  _send(s__5fimport_, _local_object, "OrderedCollection", "__id__init__OrderedCollection");
  v_Dictionary= _id_import("Dictionary");
  _send(s__5fimport_, _local_object, "IdentityDictionary", "__id__init__IdentityDictionary");
  _send(s__5fimport_, _local_object, "IdentitySet", "__id__init__IdentitySet");
  v_IdentityDictionary= _id_import("IdentityDictionary");
  v_SelectorTable= _proto(v_IdentityDictionary);
  _method(v_SelectorTable, s__5fsizeof, SelectorTable___5fsizeof);
  _method(v_SelectorTable, s__5fdebugName, SelectorTable___5fdebugName);
  _id_export("SelectorTable", v_SelectorTable);
 {
  oop _1= 0;
  _1= v_SelectorTable;
  _line(27);
  _1=_send(s_new, _1);
  v_SelectorTable= _1;
  _id_export("SelectorTable", v_SelectorTable);
 }
  _method(v_SelectorTable, s_at_, SelectorTable__at_);
  _method(v_Symbol, s_asSelector, Symbol__asSelector);
  _method(v_Object, s_respondsTo_, Object__respondsTo_);
  _method(v_Object, s_perform_, Object__perform_);
  _method(v_Object, s_perform_with_, Object__perform_with_);
  _method(v_Object, s_perform_with_with_, Object__perform_with_with_);
  _method(v_Object, s_perform_with_with_with_, Object__perform_with_with_with_);
  _method(v_Object, s_perform_with_with_with_with_, Object__perform_with_with_with_with_);
  _method(v_Object, s_perform_with_with_with_with_with_, Object__perform_with_with_with_with_with_);
  _method(v_Object, s__5fperform_, Object___5fperform_);
  _method(v_Object, s__5fperform_w_, Object___5fperform_w_);
  _method(v_Object, s__5fperform_w_w_, Object___5fperform_w_w_);
  _method(v_Object, s__5fperform_w_w_w_, Object___5fperform_w_w_w_);
  _method(v_Object, s__5fperform_w_w_w_w_, Object___5fperform_w_w_w_w_);
  _method(v_Object, s__5fperform_w_w_w_w_w_, Object___5fperform_w_w_w_w_w_);
  _method(v_Object, s_in_perform_, Object__in_perform_);
  _method(v_Object, s_in_perform_with_, Object__in_perform_with_);
  _method(v_Object, s_in__5fperform_, Object__in__5fperform_);
  _method(v_Object, s_in__5fperform_with_, Object__in__5fperform_with_);
  v_PerformWithArgumentsSelectors= _proto(v_Array);
  _method(v_PerformWithArgumentsSelectors, s__5fsizeof, PerformWithArgumentsSelectors___5fsizeof);
  _method(v_PerformWithArgumentsSelectors, s__5fdebugName, PerformWithArgumentsSelectors___5fdebugName);
  _id_export("PerformWithArgumentsSelectors", v_PerformWithArgumentsSelectors);
  l_2= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with0Arguments:");
  l_3= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with1Arguments:");
  l_4= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with2Arguments:");
  l_5= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with3Arguments:");
  l_6= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with4Arguments:");
  l_7= _send(s_size_5f_value_5f_, v_Symbol, 23, "perform:with5Arguments:");
  l_8= _send(s_size_5f_value_5f_, v_ImmutableArray, 6, al_8);
 {
  oop _1= 0;
  _1= l_8;
  v_PerformWithArgumentsSelectors= _1;
  _id_export("PerformWithArgumentsSelectors", v_PerformWithArgumentsSelectors);
 }
  l_9= _send(s_value_5f_, v_SmallInteger, 6);
  l_10= _send(s_value_5f_, v_SmallInteger, 1);
  l_11= _send(s_size_5f_value_5f_, v_ImmutableString, 61, "perform:withArguments: does not support more than 5 arguments");
  _method(v_Object, s_perform_withArguments_, Object__perform_withArguments_);
  _method(v_Object, s_perform_with0Arguments_, Object__perform_with0Arguments_);
  l_12= _send(s_value_5f_, v_SmallInteger, 1);
  _method(v_Object, s_perform_with1Arguments_, Object__perform_with1Arguments_);
  l_13= _send(s_value_5f_, v_SmallInteger, 1);
  l_14= _send(s_value_5f_, v_SmallInteger, 2);
  _method(v_Object, s_perform_with2Arguments_, Object__perform_with2Arguments_);
  l_15= _send(s_value_5f_, v_SmallInteger, 1);
  l_16= _send(s_value_5f_, v_SmallInteger, 2);
  l_17= _send(s_value_5f_, v_SmallInteger, 3);
  _method(v_Object, s_perform_with3Arguments_, Object__perform_with3Arguments_);
  l_18= _send(s_value_5f_, v_SmallInteger, 1);
  l_19= _send(s_value_5f_, v_SmallInteger, 2);
  l_20= _send(s_value_5f_, v_SmallInteger, 3);
  l_21= _send(s_value_5f_, v_SmallInteger, 4);
  _method(v_Object, s_perform_with4Arguments_, Object__perform_with4Arguments_);
  l_22= _send(s_value_5f_, v_SmallInteger, 1);
  l_23= _send(s_value_5f_, v_SmallInteger, 2);
  l_24= _send(s_value_5f_, v_SmallInteger, 3);
  l_25= _send(s_value_5f_, v_SmallInteger, 4);
  l_26= _send(s_value_5f_, v_SmallInteger, 5);
  _method(v_Object, s_perform_with5Arguments_, Object__perform_with5Arguments_);
  _leave();
}
