/* generated by Id 1.0 at 2007-08-31 06:59:09 Z */
/* with the command: -I../stage1/ -c SmallInteger.st -o ../stage2/SmallInteger.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_value= 0;
static oop s_bitXor_= 0;
static oop s_negated= 0;
static oop s_bitOr_= 0;
static oop s_abs= 0;
static oop s__5c_5c= 0;
static oop s__2a= 0;
static oop s_bitAnd_= 0;
static oop s_minVal= 0;
static oop s_whileTrue_= 0;
static oop s_bitClear_= 0;
static oop s_error_= 0;
static oop s_maxVal= 0;
static oop s_digitAt_= 0;
static oop s__3c_3d= 0;
static oop s_hash= 0;
static oop s__3c_3c= 0;
static oop s_value_5f_= 0;
static oop s_quo_= 0;
static oop s__5fimport_= 0;
static oop s_ifFalse_= 0;
static oop s__2d= 0;
static oop s_ifTrue_= 0;
static oop s__5fbeTagType= 0;
static oop s__2b= 0;
static oop s__2f_2f= 0;
static oop s_to_do_= 0;
static oop s__2f= 0;
static oop s_downTo_do_= 0;
static oop s__3d_3d= 0;
static oop s_gcd_= 0;
static oop s__3d= 0;
static oop s_bitInvert= 0;
static oop s_highBitOfPositiveReceiver= 0;
static oop s_whileFalse_= 0;
static oop s_isSmallInteger= 0;
static oop s_identityHash= 0;
static oop s_digitLength= 0;
static oop s__3c= 0;
static oop s_and_= 0;
static oop s__3e= 0;
static oop s_ifTrue_ifFalse_= 0;
static oop s_size_5f_value_5f_= 0;
static oop s_bitShift_= 0;
static oop s_errorDivisionByZero= 0;
static oop s_reduced= 0;
static oop s_numerator_denominator_= 0;
static oop s_errorZeroDivide= 0;
static oop s_primitiveFailed= 0;
static oop s_at_= 0;
static oop s__3e_3d= 0;
static oop s__7e_3d= 0;
static oop s_highBitOfMagnitude= 0;
static oop s__3e_3e= 0;
static oop s_value_= 0;
static oop s_to_by_do_= 0;
static oop s_downTo_by_do_= 0;
static oop s_upTo_by_do_= 0;
static oop s_timesRepeat_= 0;
static struct _Selector { const char *name; oop *addr; } _Selectors[]= {
  { "value", &s_value },
  { "bitXor:", &s_bitXor_ },
  { "negated", &s_negated },
  { "bitOr:", &s_bitOr_ },
  { "abs", &s_abs },
  { "\\\\", &s__5c_5c },
  { "*", &s__2a },
  { "bitAnd:", &s_bitAnd_ },
  { "minVal", &s_minVal },
  { "whileTrue:", &s_whileTrue_ },
  { "bitClear:", &s_bitClear_ },
  { "error:", &s_error_ },
  { "maxVal", &s_maxVal },
  { "digitAt:", &s_digitAt_ },
  { "<=", &s__3c_3d },
  { "hash", &s_hash },
  { "<<", &s__3c_3c },
  { "value_:", &s_value_5f_ },
  { "quo:", &s_quo_ },
  { "_import:", &s__5fimport_ },
  { "ifFalse:", &s_ifFalse_ },
  { "-", &s__2d },
  { "ifTrue:", &s_ifTrue_ },
  { "_beTagType", &s__5fbeTagType },
  { "+", &s__2b },
  { "//", &s__2f_2f },
  { "to:do:", &s_to_do_ },
  { "/", &s__2f },
  { "downTo:do:", &s_downTo_do_ },
  { "==", &s__3d_3d },
  { "gcd:", &s_gcd_ },
  { "=", &s__3d },
  { "bitInvert", &s_bitInvert },
  { "highBitOfPositiveReceiver", &s_highBitOfPositiveReceiver },
  { "whileFalse:", &s_whileFalse_ },
  { "isSmallInteger", &s_isSmallInteger },
  { "identityHash", &s_identityHash },
  { "digitLength", &s_digitLength },
  { "<", &s__3c },
  { "and:", &s_and_ },
  { ">", &s__3e },
  { "ifTrue:ifFalse:", &s_ifTrue_ifFalse_ },
  { "size_:value_:", &s_size_5f_value_5f_ },
  { "bitShift:", &s_bitShift_ },
  { "errorDivisionByZero", &s_errorDivisionByZero },
  { "reduced", &s_reduced },
  { "numerator:denominator:", &s_numerator_denominator_ },
  { "errorZeroDivide", &s_errorZeroDivide },
  { "primitiveFailed", &s_primitiveFailed },
  { "at:", &s_at_ },
  { ">=", &s__3e_3d },
  { "~=", &s__7e_3d },
  { "highBitOfMagnitude", &s_highBitOfMagnitude },
  { ">>", &s__3e_3e },
  { "value:", &s_value_ },
  { "to:by:do:", &s_to_by_do_ },
  { "downTo:by:do:", &s_downTo_by_do_ },
  { "upTo:by:do:", &s_upTo_by_do_ },
  { "timesRepeat:", &s_timesRepeat_ },
  { 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;
};
static oop l_1= 0;
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 l_27= 0;
static oop l_28= 0;
static oop l_29= 0;
static oop l_30= 0;
static oop l_31= 0;
static oop l_32= 0;
static oop l_33= 0;
static oop l_34= 0;
static oop l_35= 0;
static oop l_36= 0;
static oop v__object= 0;
static oop v_Object= 0;
static oop v_UndefinedObject= 0;
static oop v_StaticBlockClosure= 0;
static oop v_Magnitude= 0;
static oop v_Number= 0;
static oop v_Fraction= 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_WordArray= 0;
static oop v_ByteArray= 0;
static oop v_ImmutableByteArray= 0;
static oop v_String= 0;
static oop v_ImmutableString= 0;
static oop v_true= 0;
static oop v_false= 0;
static oop SmallInteger__isSmallInteger(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("isSmallInteger", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  _line(27);
  _1= v_true;
  _leave();
  return _1;
  _leave();
 }
static oop Object__isSmallInteger(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("isSmallInteger", "Object", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  _line(28);
  _1= v_false;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__hash(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("hash", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(30);
  _1= v_self;
  _2= l_1;
  if ((1 & (int)_1) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__identityHash(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("identityHash", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(31);
  _1= v_self;
  _2= l_2;
  if ((1 & (int)_1) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__maxVal(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("maxVal", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  _line(33);
 {
# define self ((struct t_SmallInteger *)v_self)
 return (oop)((-1UL >> 1)    ); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__minVal(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("minVal", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  _line(34);
 {
# define self ((struct t_SmallInteger *)v_self)
 return (oop)((-1UL >> 1) + 2); 
# undef self
 }
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__digitLength(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("digitLength", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(36);
  /* ifTrue: */
  _1= 0;
  /* and: */
  _2= v_self;
  _3= l_3;
  if (1 & (int)_2) {
    _2= (((int)_2 < (int)_3) ? v_true : v_false);
  } else _2= _send(s__3c, _2, _3);
  if (!_2) goto _l2;
 {
  _2= v_self;
  _3= l_4;
  if (1 & (int)_2) {
    _2= (((int)_2 > (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e, _2, _3);
 }
 _l2:;
  if (!_2) goto _l1;
 {
  _1= l_5;
  _leave();
  return _1;
 }
 _l1:;
  /* ifTrue: */
  _1= 0;
  /* and: */
  _2= v_self;
  _3= l_6;
  if (1 & (int)_2) {
    _2= (((int)_2 < (int)_3) ? v_true : v_false);
  } else _2= _send(s__3c, _2, _3);
  if (!_2) goto _l4;
 {
  _2= v_self;
  _3= l_7;
  if (1 & (int)_2) {
    _2= (((int)_2 > (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e, _2, _3);
 }
 _l4:;
  if (!_2) goto _l3;
 {
  _1= l_8;
  _leave();
  return _1;
 }
 _l3:;
  /* ifTrue: */
  _1= 0;
  /* and: */
  _2= v_self;
  _3= l_9;
  if (1 & (int)_2) {
    _2= (((int)_2 < (int)_3) ? v_true : v_false);
  } else _2= _send(s__3c, _2, _3);
  if (!_2) goto _l6;
 {
  _2= v_self;
  _3= l_10;
  if (1 & (int)_2) {
    _2= (((int)_2 > (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e, _2, _3);
 }
 _l6:;
  if (!_2) goto _l5;
 {
  _1= l_11;
  _leave();
  return _1;
 }
 _l5:;
  _1= l_12;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__digitAt_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n)
 {
  _enter("digitAt:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(44);
  /* ifTrue: */
  _1= 0;
  _2= v_n;
  _3= l_13;
  if (1 & (int)_2) {
    _2= (((int)_2 > (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e, _2, _3);
  if (!_2) goto _l7;
 {
  _1= l_14;
  _leave();
  return _1;
 }
 _l7:;
  /* ifTrue:ifFalse: */
  _1= v_self;
  _2= l_14;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l8;
 {
  /* ifTrue: */
  _1= 0;
  _2= v_self;
  _3= v_self;
  _line(49);
  _3=_send(s_minVal, _3);
  if (1 & (int)_2 & (int)_3) {
    _2= (((int)_2 == (int)_3) ? v_true : v_false);
  } else _2= _send(s__3d, _2, _3);
  if (!_2) goto _l10;
 {
  _1= l_15;
  _2= v_n;
  _line(52);
  _1=_send(s_at_, _1, _2);
  _leave();
  return _1;
 }
 _l10:;
  _1= l_14;
  _2= v_self;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_2) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2d, _1, _2);
  }
  _2= l_16;
  _3= v_n;
  {
    int _l= (int)_2 >> 1;
    int _r= (int)_3 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_3) && ((_s ^ (_s << 1)) >= 0))  _2= (oop)(_s << 1 | 1);  else _2= _send(s__2d, _2, _3);
  }
  _3= l_17;
  {
    int _l= (int)_2 >> 1;
    int _r= (int)_3 >> 1;
    int _s= (_l * _r);
    if ((1 & (int)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0))  _2= (oop)(_s << 1 | 1);  else _2= _send(s__2a, _2, _3);
  }
  { int _l= (int)_1 >> 1,  _r= (int)_2 >> 1,  _s= ((_r < 0) ? (_l >> -_r) : (_l << _r));
    if ((1 & (int)_1 & (int)_2) && (   (    (_r >= 0) && (_r <= 31)  && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(_s << 1 | 1); else _1= _send(s_bitShift_, _1, _2);
  }
  _2= l_18;
  if ((1 & (int)_1) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _leave();
  return _1;
 }
  goto _l9;
 _l8:;
 {
  _1= v_self;
  _2= l_16;
  _3= v_n;
  {
    int _l= (int)_2 >> 1;
    int _r= (int)_3 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_3) && ((_s ^ (_s << 1)) >= 0))  _2= (oop)(_s << 1 | 1);  else _2= _send(s__2d, _2, _3);
  }
  _3= l_17;
  {
    int _l= (int)_2 >> 1;
    int _r= (int)_3 >> 1;
    int _s= (_l * _r);
    if ((1 & (int)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0))  _2= (oop)(_s << 1 | 1);  else _2= _send(s__2a, _2, _3);
  }
  { int _l= (int)_1 >> 1,  _r= (int)_2 >> 1,  _s= ((_r < 0) ? (_l >> -_r) : (_l << _r));
    if ((1 & (int)_1 & (int)_2) && (   (    (_r >= 0) && (_r <= 31)  && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(_s << 1 | 1); else _1= _send(s_bitShift_, _1, _2);
  }
  _2= l_18;
  if ((1 & (int)_1) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _leave();
  return _1;
 }
 _l9:;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___2b(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("+", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(58);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) {
	int s= ((int)v_self >> 1) + ((int)v_aNumber >> 1);
        if ((s ^ (s << 1)) >= 0) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(64);
  _1=_super(v_Integer, s__2b, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___2d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("-", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(67);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) {
	int s= ((int)v_self >> 1) - ((int)v_aNumber >> 1);
        if ((s ^ (s << 1)) >= 0) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(73);
  _1=_super(v_Integer, s__2d, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___2a(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("*", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(76);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) {
	int l= (int)v_self >> 1, r= (int)v_aNumber >> 1, s= l * r;
        if (((s ^ (s << 1)) >= 0) && ((r == 0) || (s / r == l))) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(82);
  _1=_super(v_Integer, s__2a, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("/", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(85);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_aNumber & 1) && ((int)v_aNumber != 1)) {
	int l= (int)v_self >> 1, r= (int)v_aNumber >> 1, s= l / r;
	if (s * r == l) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_aNumber;
  _3= l_19;
  if (1 & (int)_2) {
    _2= (((int)_2 == (int)_3) ? v_true : v_false);
  } else _2= _send(s__3d, _2, _3);
  if (!_2) goto _l11;
 {
  _1= v_self;
  _line(91);
  _1=_send(s_errorDivisionByZero, _1);
  _leave();
  return _1;
 }
 _l11:;
  /* ifTrue:ifFalse: */
  _1= v_aNumber;
  _line(92);
  _1=_send(s_isSmallInteger, _1);
  if (!_1) goto _l12;
 {
  _1= v_Fraction;
  _2= v_self;
  _3= v_aNumber;
  _line(93);
  _1=_send(s_numerator_denominator_, _1, _2, _3);
  _line(93);
  _1=_send(s_reduced, _1);
 }
  goto _l13;
 _l12:;
 {
  _1= v_self;
  _2= v_aNumber;
  _line(94);
  _1=_super(v_Integer, s__2f, _1, _2);
 }
 _l13:;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___2f_2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("//", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(97);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_aNumber & 1) && ((int)v_aNumber != 1)) {
        int rcvr= (int)v_self >> 1, arg= (int)v_aNumber >> 1, result;
	if (rcvr > 0) {
	  if (arg > 0) {
	    result= rcvr / arg;
	  } else {
	    arg= 0 - arg;
	    result= 0 - ((rcvr + (arg - 1)) / arg);
	  }
	} else {
	  rcvr= 0 - rcvr;
	  if (arg > 0) {
	    result= 0 - ((rcvr + (arg - 1)) / arg);
	  } else {
	    arg= 0 - arg;
	    result= rcvr / arg;
	  }
	}
	if ((result ^ (result << 1)) >= 0)
	  return (oop)(result << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(120);
  _1=_super(v_Integer, s__2f_2f, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___5c_5c(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("\\", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(123);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_aNumber & 1) && ((int)v_aNumber != 1)) {
	int rem= ((int)v_self >> 1) % ((int)v_aNumber >> 1);
	if ((int)v_aNumber < 0) {
	  if (rem > 0) rem += ((int)v_aNumber >> 1);
	} else {
	  if (rem < 0) rem += ((int)v_aNumber >> 1);
	}
	if ((rem ^ (rem << 1)) >= 0)
	  return (oop)(rem << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(135);
  _1=_super(v_Integer, s__5c_5c, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__quo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("quo:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(138);
 {
# define self ((struct t_SmallInteger *)v_self)

      if ((int)v_self & (int)v_aNumber & 1)
        {
	  int integerRcvr   = (int)v_self    >> 1;
	  int integerArg    = (int)v_aNumber >> 1;
	  int integerResult = ((integerRcvr > 0)
	    ? (((integerArg > 0) ? (integerRcvr / integerArg) : (0 - (integerRcvr / (0 - integerArg)))))
            : (((integerArg > 0) ? (0 - ((0 - integerRcvr) / integerArg)) : ((0 - integerRcvr) / (0 - integerArg)))));
	  if ((integerResult ^ (integerResult << 1)) >= 0)
	    return (oop)(integerResult << 1 | 1);
        }
    
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_aNumber;
  _3= l_20;
  if (1 & (int)_2) {
    _2= (((int)_2 == (int)_3) ? v_true : v_false);
  } else _2= _send(s__3d, _2, _3);
  if (!_2) goto _l14;
 {
  _1= v_self;
  _line(152);
  _1=_send(s_errorZeroDivide, _1);
 }
 _l14:;
  /* ifFalse: */
  _1= 0;
  _2= v_aNumber;
  _line(153);
  _2=_send(s_isSmallInteger, _2);
  if (_2) goto _l15;
 {
  _1= v_self;
  _2= v_aNumber;
  _line(153);
  _1=_super(v_Integer, s_quo_, _1, _2);
  _leave();
  return _1;
 }
 _l15:;
  /* ifTrue: */
  _1= 0;
  /* and: */
  _2= v_aNumber;
  _3= l_21;
  _2= (_2 == _3) ? v_true : v_false;
  if (!_2) goto _l17;
 {
  _2= v_self;
  _3= v_self;
  _line(154);
  _3=_send(s_minVal, _3);
  _2= (_2 == _3) ? v_true : v_false;
 }
 _l17:;
  if (!_2) goto _l16;
 {
  _1= v_self;
  _line(154);
  _1=_send(s_negated, _1);
  _leave();
  return _1;
 }
 _l16:;
  _1= v_self;
  _line(155);
  _1=_send(s_primitiveFailed, _1);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__bitAnd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger)
 {
  _enter("bitAnd:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(158);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_anInteger & 1) && ((int)v_self > 0) && ((int)v_anInteger > 0))
        return (oop)(((int)v_self & (int)v_anInteger) | 1); 
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_self;
  _3= l_22;
  if (1 & (int)_2) {
    _2= (((int)_2 >= (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e_3d, _2, _3);
  if (!_2) goto _l18;
 {
  _1= v_anInteger;
  _2= v_self;
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _leave();
  return _1;
 }
 _l18:;
  _1= v_self;
  _line(163);
  _1=_send(s_bitInvert, _1);
  _2= v_anInteger;
  _line(163);
  _2=_send(s_bitInvert, _2);
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 | (int)_2);
  } else _1= _send(s_bitOr_, _1, _2);
  _line(163);
  _1=_send(s_bitInvert, _1);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__bitOr_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger)
 {
  _enter("bitOr:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(166);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_anInteger & 1) && ((int)v_self > 0) && ((int)v_anInteger > 0))
        return (oop)(((int)v_self | (int)v_anInteger) | 1); 
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_self;
  _3= l_23;
  if (1 & (int)_2) {
    _2= (((int)_2 >= (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e_3d, _2, _3);
  if (!_2) goto _l19;
 {
  _1= v_anInteger;
  _2= v_self;
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 | (int)_2);
  } else _1= _send(s_bitOr_, _1, _2);
  _leave();
  return _1;
 }
 _l19:;
  /* ifTrue:ifFalse: */
  _1= v_anInteger;
  _2= l_23;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l20;
 {
  _1= v_self;
  _line(172);
  _1=_send(s_bitInvert, _1);
  _2= v_anInteger;
  _line(172);
  _2=_send(s_bitInvert, _2);
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)((int)_1 & (int)_2);
  } else _1= _send(s_bitAnd_, _1, _2);
  _line(172);
  _1=_send(s_bitInvert, _1);
 }
  goto _l21;
 _l20:;
 {
  _1= v_self;
  _line(173);
  _1=_send(s_bitInvert, _1);
  _2= v_anInteger;
  _line(173);
  _1=_send(s_bitClear_, _1, _2);
  _line(173);
  _1=_send(s_bitInvert, _1);
 }
 _l21:;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__bitXor_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger)
 {
  _enter("bitXor:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(176);
 {
# define self ((struct t_SmallInteger *)v_self)
 if (((int)v_anInteger & 1) && ((int)v_self > 0) && ((int)v_anInteger > 0))
        return (oop)(((int)v_self ^ (int)v_anInteger) | 1); 
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_self;
  _3= l_24;
  if (1 & (int)_2) {
    _2= (((int)_2 >= (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e_3d, _2, _3);
  if (!_2) goto _l22;
 {
  _1= v_anInteger;
  _2= v_self;
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)(((int)_1 ^ (int)_2) | 1);
  } else _1= _send(s_bitXor_, _1, _2);
  _leave();
  return _1;
 }
 _l22:;
  /* ifTrue:ifFalse: */
  _1= v_anInteger;
  _2= l_24;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l23;
 {
  _1= v_self;
  _line(182);
  _1=_send(s_bitInvert, _1);
  _2= v_anInteger;
  _line(182);
  _2=_send(s_bitInvert, _2);
  if ((1 & (int)_1 & (int)_2) && (_1 > 0) && (_2 > 0)) {
    _1= (oop)(((int)_1 ^ (int)_2) | 1);
  } else _1= _send(s_bitXor_, _1, _2);
 }
  goto _l24;
 _l23:;
 {
  _1= v_self;
  _line(183);
  _1=_send(s_bitInvert, _1);
  _2= v_anInteger;
  _line(183);
  _1=_send(s_bitClear_, _1, _2);
  _line(183);
  _1=_send(s_bitInvert, _1);
 }
 _l24:;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__bitShift_(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement)
 {
  _enter("bitShift:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  _line(186);
  /* ifFalse: */
  _1= 0;
  _2= v_displacement;
  _line(188);
  _2=_send(s_isSmallInteger, _2);
  if (_2) goto _l25;
 {
  _1= v_self;
  _2= l_25;
  _line(188);
  _1=_send(s_error_, _1, _2);
  _leave();
  return _1;
 }
 _l25:;
 {
# define self ((struct t_SmallInteger *)v_self)
 int l= (int)v_self >> 1, r= (int)v_displacement >> 1;
      if (r >= 0) {
        if (r <= 31) {
          int s= l << r;
          if ((l == (s >> r)) && ((s ^ (s << 1)) >= 0)) return (oop)(s << 1 | 1);
        }
      } else if (r >= -31) {
  	int s= l >> r;
        return (oop)(s << 1 | 1);
      }
    
# undef self
 }
  _1= 0;
  /* ifTrue: */
  _1= 0;
  _2= v_self;
  _3= l_26;
  if (1 & (int)_2) {
    _2= (((int)_2 >= (int)_3) ? v_true : v_false);
  } else _2= _send(s__3e_3d, _2, _3);
  if (!_2) goto _l26;
 {
  _1= v_self;
  _2= v_displacement;
  _line(200);
  _1=_super(v_Integer, s_bitShift_, _1, _2);
  _leave();
  return _1;
 }
 _l26:;
  _1= v_self;
  _line(201);
  _1=_send(s_negated, _1);
  _2= v_displacement;
  { int _l= (int)_1 >> 1,  _r= (int)_2 >> 1,  _s= ((_r < 0) ? (_l >> -_r) : (_l << _r));
    if ((1 & (int)_1 & (int)_2) && (   (    (_r >= 0) && (_r <= 31)  && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(_s << 1 | 1); else _1= _send(s_bitShift_, _1, _2);
  }
  _line(201);
  _1=_send(s_negated, _1);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3c_3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement)
 {
  _enter("<<", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(204);
 {
# define self ((struct t_SmallInteger *)v_self)

      if ((int)v_self & (int)v_displacement & 1) {
	int l= (int)v_self >> 1, r= (int)v_displacement >> 1, s= (l << r);
	if ((r >= 0) && (r <= 31) && ((s ^ (s << 1)) >= 0) && ((s >> r) == l)) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_displacement;
  _line(211);
  _1=_super(v_Integer, s__3c_3c, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3e_3e(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement)
 {
  _enter(">>", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(214);
 {
# define self ((struct t_SmallInteger *)v_self)

      if ((int)v_self & (int)v_displacement & 1) {
	int l= (int)v_self >> 1, r= (int)v_displacement >> 1, s= (l >> r);
	if ((r >= 0) && (r <= 31)) return (oop)(s << 1 | 1);
    } 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_displacement;
  _line(221);
  _1=_super(v_Integer, s__3e_3e, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("<", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(224);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self < (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(227);
  _1=_super(v_Integer, s__3c, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3c_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("<=", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(230);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self <= (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(233);
  _1=_super(v_Integer, s__3c_3d, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("=", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(236);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self == (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(239);
  _1=_super(v_Integer, s__3d, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___7e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter("~=", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(242);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self != (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(245);
  _1=_super(v_Integer, s__7e_3d, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3e_3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter(">=", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(248);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self >= (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(251);
  _1=_super(v_Integer, s__3e_3d, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger___3e(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber)
 {
  _enter(">", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  _line(254);
 {
# define self ((struct t_SmallInteger *)v_self)
 if ((int)v_aNumber & 1) return ((int)v_self > (int)v_aNumber) ? v_true : v_false; 
# undef self
 }
  _1= 0;
  _1= v_self;
  _2= v_aNumber;
  _line(257);
  _1=_super(v_Integer, s__3e, _1, _2);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__highBitOfMagnitude(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("highBitOfMagnitude", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  _line(260);
  _1= v_self;
  _line(262);
  _1=_send(s_abs, _1);
  _line(262);
  _1=_send(s_highBitOfPositiveReceiver, _1);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__highBitOfPositiveReceiver(oop v__closure, oop v_stateful_self, oop v_self)
 {
  _enter("highBitOfPositiveReceiver", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_shifted= 0;
  oop v_bitNo= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_shifted;
  (void)v_bitNo;
  _line(265);
  _1= v_self;
  v_shifted= _1;
  _1= l_27;
  v_bitNo= _1;
  /* whileFalse: */
  goto _l28;
 _l27:;
 {
  _1= v_shifted;
  _2= l_29;
  {
    int _l= (int)_1 >> 1, _r= (int)_2 >> 1, _s= (_l >> _r);
    if ((1 & (int)_1) && (_r >= 0) && (_r <= 31)) _1= (oop)(_s << 1 | 1); else _1= _send(s__3e_3e, _1, _2);
  }
  v_shifted= _1;
  _1= v_bitNo;
  _2= l_29;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_1) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2b, _1, _2);
  }
  v_bitNo= _1;
 }
 _l28:;
 {
  _1= v_shifted;
  _2= l_28;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
 }
  if (!_1) goto _l27;
  _1= 0;
  /* whileFalse: */
  goto _l30;
 _l29:;
 {
  _1= v_shifted;
  _2= l_30;
  {
    int _l= (int)_1 >> 1, _r= (int)_2 >> 1, _s= (_l >> _r);
    if ((1 & (int)_1) && (_r >= 0) && (_r <= 31)) _1= (oop)(_s << 1 | 1); else _1= _send(s__3e_3e, _1, _2);
  }
  v_shifted= _1;
  _1= v_bitNo;
  _2= l_30;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_1) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2b, _1, _2);
  }
  v_bitNo= _1;
 }
 _l30:;
 {
  _1= v_shifted;
  _2= l_27;
  if (1 & (int)_1) {
    _1= (((int)_1 == (int)_2) ? v_true : v_false);
  } else _1= _send(s__3d, _1, _2);
 }
  if (!_1) goto _l29;
  _1= 0;
  _1= v_bitNo;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__gcd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger)
 {
  _enter("gcd:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_n= 0;
  oop v_m= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_n;
  (void)v_m;
  _line(281);
  _1= v_self;
  v_n= _1;
  _1= v_anInteger;
  v_m= _1;
  /* whileFalse: */
  goto _l32;
 _l31:;
 {
  _1= v_m;
  _2= v_n;
  v_m= _2;
  _1= _send(s__5c_5c, _1, _2);
  v_n= _1;
 }
 _l32:;
 {
  _1= v_n;
  _2= l_31;
  if (1 & (int)_1) {
    _1= (((int)_1 == (int)_2) ? v_true : v_false);
  } else _1= _send(s__3d, _1, _2);
 }
  if (!_1) goto _l31;
  _1= 0;
  _1= v_m;
  _line(287);
  _1=_send(s_abs, _1);
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__to_do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_unaryBlock)
 {
  _enter("to:do:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_index= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_index;
  _line(293);
  _1= v_self;
  v_index= _1;
  /* whileTrue: */
  goto _l34;
 _l33:;
 {
  _1= v_unaryBlock;
  _2= v_index;
  _line(299);
  _1=_send(s_value_, _1, _2);
  _1= v_index;
  _2= l_32;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_1) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2b, _1, _2);
  }
  v_index= _1;
 }
 _l34:;
 {
  _1= v_index;
  _2= v_anInteger;
  if (1 & (int)_1 & (int)_2) {
    _1= (((int)_1 <= (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c_3d, _1, _2);
 }
  if (_1) goto _l33;
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__downTo_do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_unaryBlock)
 {
  _enter("downTo:do:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_index= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_index;
  _line(303);
  _1= v_self;
  v_index= _1;
  /* whileTrue: */
  goto _l36;
 _l35:;
 {
  _1= v_unaryBlock;
  _2= v_index;
  _line(309);
  _1=_send(s_value_, _1, _2);
  _1= v_index;
  _2= l_33;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_1) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2d, _1, _2);
  }
  v_index= _1;
 }
 _l36:;
 {
  _1= v_index;
  _2= v_anInteger;
  if (1 & (int)_1 & (int)_2) {
    _1= (((int)_1 >= (int)_2) ? v_true : v_false);
  } else _1= _send(s__3e_3d, _1, _2);
 }
  if (_1) goto _l35;
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__to_by_do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_stepInteger, oop v_unaryBlock)
 {
  _enter("to:by:do:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop _1= 0;
  oop _2= 0;
  oop _3= 0;
  oop _4= 0;
  _line(313);
  /* ifTrue:ifFalse: */
  _1= v_stepInteger;
  _2= l_34;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
  if (!_1) goto _l37;
 {
  _1= v_self;
  _2= v_anInteger;
  _3= v_stepInteger;
  _4= v_unaryBlock;
  _line(316);
  _1=_send(s_downTo_by_do_, _1, _2, _3, _4);
 }
  goto _l38;
 _l37:;
 {
  _1= v_self;
  _2= v_anInteger;
  _3= v_stepInteger;
  _4= v_unaryBlock;
  _line(317);
  _1=_send(s_upTo_by_do_, _1, _2, _3, _4);
 }
 _l38:;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__upTo_by_do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_stepInteger, oop v_unaryBlock)
 {
  _enter("upTo:by:do:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_index= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_index;
  _line(320);
  _1= v_self;
  v_index= _1;
  /* whileTrue: */
  goto _l40;
 _l39:;
 {
  _1= v_unaryBlock;
  _2= v_index;
  _line(326);
  _1=_send(s_value_, _1, _2);
  _1= v_index;
  _2= v_stepInteger;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_1 & (int)_2) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2b, _1, _2);
  }
  v_index= _1;
 }
 _l40:;
 {
  _1= v_index;
  _2= v_anInteger;
  if (1 & (int)_1 & (int)_2) {
    _1= (((int)_1 <= (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c_3d, _1, _2);
 }
  if (_1) goto _l39;
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__downTo_by_do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_stepInteger, oop v_unaryBlock)
 {
  _enter("downTo:by:do:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_index= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_index;
  _line(330);
  _1= v_self;
  v_index= _1;
  /* whileTrue: */
  goto _l42;
 _l41:;
 {
  _1= v_unaryBlock;
  _2= v_index;
  _line(336);
  _1=_send(s_value_, _1, _2);
  _1= v_index;
  _2= v_stepInteger;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= _l + _r;
    if ((1 & (int)_1 & (int)_2) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2b, _1, _2);
  }
  v_index= _1;
 }
 _l42:;
 {
  _1= v_index;
  _2= v_anInteger;
  if (1 & (int)_1 & (int)_2) {
    _1= (((int)_1 >= (int)_2) ? v_true : v_false);
  } else _1= _send(s__3e_3d, _1, _2);
 }
  if (_1) goto _l41;
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }
static oop SmallInteger__timesRepeat_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock)
 {
  _enter("timesRepeat:", "SmallInteger", "/home/saintiss/source/svn/stIdst_278/object/st80/SmallInteger.st");
  oop v_count= 0;
  oop _1= 0;
  oop _2= 0;
  (void)v_count;
  _line(340);
  _1= v_self;
  v_count= _1;
  /* whileFalse: */
  goto _l44;
 _l43:;
 {
  _1= v_aBlock;
  _line(344);
  _1=_send(s_value, _1);
 }
 _l44:;
 {
  _1= v_count;
  _2= l_35;
  {
    int _l= (int)_1 >> 1;
    int _r= (int)_2 >> 1;
    int _s= (_l - _r);
    if ((1 & (int)_1) && ((_s ^ (_s << 1)) >= 0))  _1= (oop)(_s << 1 | 1);  else _1= _send(s__2d, _1, _2);
  }
  v_count= _1;
  _2= l_36;
  if (1 & (int)_1) {
    _1= (((int)_1 < (int)_2) ? v_true : v_false);
  } else _1= _send(s__3c, _1, _2);
 }
  if (!_1) goto _l43;
  _1= 0;
  _1= v_self;
  _leave();
  return _1;
  _leave();
 }

void __id__init__SmallInteger(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>", "SmallInteger.st");

  _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, "Object", "__id__init__Object");
  _send(s__5fimport_, _local_object, "_object", "__id__init___5fobject");
  v__object= _id_import("_object");
  v_Object= _id_import("Object");
  v_UndefinedObject= _id_import("UndefinedObject");
  v_StaticBlockClosure= _id_import("StaticBlockClosure");
  v_Magnitude= _id_import("Magnitude");
  v_Number= _id_import("Number");
  v_Fraction= _id_import("Fraction");
  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_WordArray= _id_import("WordArray");
  v_ByteArray= _id_import("ByteArray");
  v_ImmutableByteArray= _id_import("ImmutableByteArray");
  v_String= _id_import("String");
  v_ImmutableString= _id_import("ImmutableString");
  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, "Array", "__id__init__Array");
  _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, "Character", "__id__init__Character");
  _send(s__5fimport_, _local_object, "String", "__id__init__String");
  _send(s__5fimport_, _local_object, "ByteArray", "__id__init__ByteArray");
  _send(s__5fimport_, _local_object, "WordArray", "__id__init__WordArray");
 {
  oop _1= 0;
  _1= v_SmallInteger;
  _line(25);
  _1=_send(s__5fbeTagType, _1);
 }
  _method(v_SmallInteger, s_isSmallInteger, SmallInteger__isSmallInteger);
  _method(v_Object, s_isSmallInteger, Object__isSmallInteger);
  l_1= _send(s_value_5f_, v_SmallInteger, 16777215);
  _method(v_SmallInteger, s_hash, SmallInteger__hash);
  l_2= _send(s_value_5f_, v_SmallInteger, 16777215);
  _method(v_SmallInteger, s_identityHash, SmallInteger__identityHash);
  _method(v_SmallInteger, s_maxVal, SmallInteger__maxVal);
  _method(v_SmallInteger, s_minVal, SmallInteger__minVal);
  l_3= _send(s_value_5f_, v_SmallInteger, 256);
  l_4= _send(s_value_5f_, v_SmallInteger, -256);
  l_5= _send(s_value_5f_, v_SmallInteger, 1);
  l_6= _send(s_value_5f_, v_SmallInteger, 65536);
  l_7= _send(s_value_5f_, v_SmallInteger, -65536);
  l_8= _send(s_value_5f_, v_SmallInteger, 2);
  l_9= _send(s_value_5f_, v_SmallInteger, 16777216);
  l_10= _send(s_value_5f_, v_SmallInteger, -16777216);
  l_11= _send(s_value_5f_, v_SmallInteger, 3);
  l_12= _send(s_value_5f_, v_SmallInteger, 4);
  _method(v_SmallInteger, s_digitLength, SmallInteger__digitLength);
  l_13= _send(s_value_5f_, v_SmallInteger, 4);
  l_14= _send(s_value_5f_, v_SmallInteger, 0);
  l_15= _send(s_size_5f_value_5f_, v_ImmutableByteArray, 4, "\000\000\000\100");
  l_16= _send(s_value_5f_, v_SmallInteger, 1);
  l_17= _send(s_value_5f_, v_SmallInteger, 8);
  l_18= _send(s_value_5f_, v_SmallInteger, 255);
  _method(v_SmallInteger, s_digitAt_, SmallInteger__digitAt_);
  _method(v_SmallInteger, s__2b, SmallInteger___2b);
  _method(v_SmallInteger, s__2d, SmallInteger___2d);
  _method(v_SmallInteger, s__2a, SmallInteger___2a);
  l_19= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s__2f, SmallInteger___2f);
  _method(v_SmallInteger, s__2f_2f, SmallInteger___2f_2f);
  _method(v_SmallInteger, s__5c_5c, SmallInteger___5c_5c);
  l_20= _send(s_value_5f_, v_SmallInteger, 0);
  l_21= _send(s_value_5f_, v_SmallInteger, -1);
  _method(v_SmallInteger, s_quo_, SmallInteger__quo_);
  l_22= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_bitAnd_, SmallInteger__bitAnd_);
  l_23= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_bitOr_, SmallInteger__bitOr_);
  l_24= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_bitXor_, SmallInteger__bitXor_);
  l_25= _send(s_size_5f_value_5f_, v_ImmutableString, 24, "non-Integer displacement");
  l_26= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_bitShift_, SmallInteger__bitShift_);
  _method(v_SmallInteger, s__3c_3c, SmallInteger___3c_3c);
  _method(v_SmallInteger, s__3e_3e, SmallInteger___3e_3e);
  _method(v_SmallInteger, s__3c, SmallInteger___3c);
  _method(v_SmallInteger, s__3c_3d, SmallInteger___3c_3d);
  _method(v_SmallInteger, s__3d, SmallInteger___3d);
  _method(v_SmallInteger, s__7e_3d, SmallInteger___7e_3d);
  _method(v_SmallInteger, s__3e_3d, SmallInteger___3e_3d);
  _method(v_SmallInteger, s__3e, SmallInteger___3e);
  _method(v_SmallInteger, s_highBitOfMagnitude, SmallInteger__highBitOfMagnitude);
  l_27= _send(s_value_5f_, v_SmallInteger, 0);
  l_28= _send(s_value_5f_, v_SmallInteger, 16);
  l_29= _send(s_value_5f_, v_SmallInteger, 4);
  l_30= _send(s_value_5f_, v_SmallInteger, 1);
  _method(v_SmallInteger, s_highBitOfPositiveReceiver, SmallInteger__highBitOfPositiveReceiver);
  l_31= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_gcd_, SmallInteger__gcd_);
  l_32= _send(s_value_5f_, v_SmallInteger, 1);
  _method(v_SmallInteger, s_to_do_, SmallInteger__to_do_);
  l_33= _send(s_value_5f_, v_SmallInteger, 1);
  _method(v_SmallInteger, s_downTo_do_, SmallInteger__downTo_do_);
  l_34= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_to_by_do_, SmallInteger__to_by_do_);
  _method(v_SmallInteger, s_upTo_by_do_, SmallInteger__upTo_by_do_);
  _method(v_SmallInteger, s_downTo_by_do_, SmallInteger__downTo_by_do_);
  l_35= _send(s_value_5f_, v_SmallInteger, 1);
  l_36= _send(s_value_5f_, v_SmallInteger, 0);
  _method(v_SmallInteger, s_timesRepeat_, SmallInteger__timesRepeat_);
  _leave();
}
