/* generated by Id 1.1 at ,$ */ /* with the command: -I../stage1/ -c LargeInteger.st -o ../stage2/LargeInteger.o.c */ #include static struct __libid *_libid= 0; #ifdef ID_DEBUG # define _enter(info) void *__id_debug= _libid->enter(info) # define _line(lno) _libid->line(lno) # define _leave() _libid->leave(__id_debug) # define _backtrace() _libid->backtrace() #else # define _enter(info) (void)info # define _line(lno) # define _leave() # define _backtrace() "(no debugging information)\n" #endif #define _return _leave(); return #define _sendv(MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (RCV) }; \ ((_imp_t)(_libid->bindv(&_s)))(&_s, _s.receiver, _s.receiver, ##ARG); \ }) #define _superv(TYP, MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (TYP) }; \ _imp_t _imp= _libid->bindv(&_s); \ _s.receiver= (RCV); \ _imp(&_s, _s.receiver, _s.receiver, ##ARG); \ }) static oop s_new_neg_= 0; static oop s_bitXor_= 0; static oop s_negated= 0; static oop s_bitOr_= 0; static oop s_growTo_= 0; static oop s_abs= 0; static oop s_min_= 0; static oop s__5c_5c= 0; static oop s_isSmallInteger= 0; static oop s_digitLength= 0; static oop s_ifTrue_ifFalse_= 0; static oop s_growBy_= 0; static oop s_replaceFrom_to_with_startingAt_= 0; static oop s_digitSubtract_= 0; static oop s_adaptToInteger_andSend_= 0; static oop s_size_5f_value_5f_= 0; static oop s_digitAt_put_= 0; static oop s_bitAnd_= 0; static oop s_function_5f_arity_5f_outer_state_nlr_5f_= 0; static oop s__2a= 0; static oop s_digitMultiply_neg_= 0; static oop s_digitDiv_neg_= 0; static oop s_whileTrue_= 0; static oop s_errorZeroDivide= 0; static oop s_highBitOfPositiveReceiver= 0; static oop s_digitLshift_= 0; static oop s_digitRshift_bytes_lookfirst_= 0; static oop s_digitLogic_op_length_= 0; static oop s_error_= 0; static oop s_lastDigit= 0; static oop s__7e_7e= 0; static oop s_bitClear_= 0; static oop s_digitAt_= 0; static oop s_max_= 0; static oop s_new_= 0; static oop s_new_5f_= 0; static oop s_asFloat= 0; static oop s__3c_3d= 0; static oop s_perform_with_= 0; static oop s__3c_3c= 0; static oop s_bitShiftMagnitude_= 0; static oop s_anyBitOfMagnitudeFrom_to_= 0; static oop s_value_5f_= 0; static oop s_negative= 0; static oop s__5fimport_= 0; static oop s_quo_= 0; static oop s_with_with_= 0; static oop s_highBitOfMagnitude= 0; static oop s_digitCompare_= 0; static oop s_maxVal= 0; static oop s_whileFalse_= 0; static oop s_normalize= 0; static oop s_ifFalse_= 0; static oop s__2d= 0; static oop s_ifTrue_= 0; static oop s__2b= 0; static oop s_to_do_= 0; static oop s__2f_2f= 0; static oop s_rem_= 0; static oop s__2f= 0; static oop s__3d_3d= 0; static oop s_gcd_= 0; static oop s_digitAdd_= 0; static oop s__3d= 0; static oop s_bitInvert= 0; static oop s__3c= 0; static oop s_highBit= 0; static oop s_bitShift_= 0; static oop s_and_= 0; static oop s__3e= 0; static oop s_or_= 0; static oop s__7e_3d= 0; static oop s_at_= 0; static oop s__3e_3d= 0; static oop s__3e_3e= 0; static oop s_copyTo_= 0; static oop s_isInteger= 0; static oop s_at_put_= 0; static struct _Selector { const char *name; oop *addr; } _Selectors[]= { { "new:neg:", &s_new_neg_ }, { "bitXor:", &s_bitXor_ }, { "negated", &s_negated }, { "bitOr:", &s_bitOr_ }, { "growTo:", &s_growTo_ }, { "abs", &s_abs }, { "min:", &s_min_ }, { "\\\\", &s__5c_5c }, { "isSmallInteger", &s_isSmallInteger }, { "digitLength", &s_digitLength }, { "ifTrue:ifFalse:", &s_ifTrue_ifFalse_ }, { "growBy:", &s_growBy_ }, { "replaceFrom:to:with:startingAt:", &s_replaceFrom_to_with_startingAt_ }, { "digitSubtract:", &s_digitSubtract_ }, { "adaptToInteger:andSend:", &s_adaptToInteger_andSend_ }, { "size_:value_:", &s_size_5f_value_5f_ }, { "digitAt:put:", &s_digitAt_put_ }, { "bitAnd:", &s_bitAnd_ }, { "function_:arity_:outer:state:nlr_:", &s_function_5f_arity_5f_outer_state_nlr_5f_ }, { "*", &s__2a }, { "digitMultiply:neg:", &s_digitMultiply_neg_ }, { "digitDiv:neg:", &s_digitDiv_neg_ }, { "whileTrue:", &s_whileTrue_ }, { "errorZeroDivide", &s_errorZeroDivide }, { "highBitOfPositiveReceiver", &s_highBitOfPositiveReceiver }, { "digitLshift:", &s_digitLshift_ }, { "digitRshift:bytes:lookfirst:", &s_digitRshift_bytes_lookfirst_ }, { "digitLogic:op:length:", &s_digitLogic_op_length_ }, { "error:", &s_error_ }, { "lastDigit", &s_lastDigit }, { "~~", &s__7e_7e }, { "bitClear:", &s_bitClear_ }, { "digitAt:", &s_digitAt_ }, { "max:", &s_max_ }, { "new:", &s_new_ }, { "new_:", &s_new_5f_ }, { "asFloat", &s_asFloat }, { "<=", &s__3c_3d }, { "perform:with:", &s_perform_with_ }, { "<<", &s__3c_3c }, { "bitShiftMagnitude:", &s_bitShiftMagnitude_ }, { "anyBitOfMagnitudeFrom:to:", &s_anyBitOfMagnitudeFrom_to_ }, { "value_:", &s_value_5f_ }, { "negative", &s_negative }, { "_import:", &s__5fimport_ }, { "quo:", &s_quo_ }, { "with:with:", &s_with_with_ }, { "highBitOfMagnitude", &s_highBitOfMagnitude }, { "digitCompare:", &s_digitCompare_ }, { "maxVal", &s_maxVal }, { "whileFalse:", &s_whileFalse_ }, { "normalize", &s_normalize }, { "ifFalse:", &s_ifFalse_ }, { "-", &s__2d }, { "ifTrue:", &s_ifTrue_ }, { "+", &s__2b }, { "to:do:", &s_to_do_ }, { "//", &s__2f_2f }, { "rem:", &s_rem_ }, { "/", &s__2f }, { "==", &s__3d_3d }, { "gcd:", &s_gcd_ }, { "digitAdd:", &s_digitAdd_ }, { "=", &s__3d }, { "bitInvert", &s_bitInvert }, { "<", &s__3c }, { "highBit", &s_highBit }, { "bitShift:", &s_bitShift_ }, { "and:", &s_and_ }, { ">", &s__3e }, { "or:", &s_or_ }, { "~=", &s__7e_3d }, { "at:", &s_at_ }, { ">=", &s__3e_3d }, { ">>", &s__3e_3e }, { "copyTo:", &s_copyTo_ }, { "isInteger", &s_isInteger }, { "at:put:", &s_at_put_ }, { 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_6= 0; static oop l_8= 0; static oop l_10= 0; static oop l_11= 0; static oop l_13= 0; static oop l_14= 0; static oop l_16= 0; static oop l_18= 0; static oop l_19= 0; static oop l_21= 0; static oop l_23= 0; static oop l_25= 0; static oop l_26= 0; static oop l_29= 0; static oop l_30= 0; static oop l_32= 0; static oop l_33= 0; static oop l_34= 0; static oop l_36= 0; static oop l_37= 0; static oop l_39= 0; static oop l_40= 0; static oop l_41= 0; static oop l_42= 0; static oop l_44= 0; static oop l_45= 0; static oop l_46= 0; static oop l_48= 0; static oop l_49= 0; static oop l_50= 0; static oop l_51= 0; static oop l_52= 0; static oop l_53= 0; static oop l_54= 0; static oop l_55= 0; static oop l_56= 0; static oop l_60= 0; static oop l_62= 0; static oop l_64= 0; static oop l_67= 0; static oop l_69= 0; static oop l_70= 0; static oop l_71= 0; static oop l_73= 0; static oop l_74= 0; static oop l_76= 0; static oop l_77= 0; static oop l_79= 0; static oop l_80= 0; static oop l_82= 0; static oop l_84= 0; static oop l_85= 0; static oop l_86= 0; static oop l_88= 0; static oop l_89= 0; static oop l_90= 0; static oop l_91= 0; static oop l_92= 0; static oop l_96= 0; static oop l_97= 0; static oop l_98= 0; static oop l_99= 0; static oop l_102= 0; static oop l_103= 0; static oop l_105= 0; static oop l_106= 0; static oop l_107= 0; static oop l_109= 0; static oop l_110= 0; static oop l_111= 0; static oop v__object= 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_LargeNegativeInteger= 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_String= 0; static oop v_ImmutableString= 0; static oop v_Symbol= 0; static oop v_true= 0; static oop v_false= 0; static struct __methodinfo __info1= { "new:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 25, 30, 0 }; static oop Integer__new_neg_(oop v__closure, oop v_stateful_self, oop v_self, oop v_length, oop v_neg) { _enter(&__info1); oop _1= 0; oop _2= 0; _line(25); /* ifTrue:ifFalse: */ _1= v_neg; if (!_1) goto _l1; { _1= v_LargeNegativeInteger; } goto _l2; _l1:; { _1= v_LargePositiveInteger; } _l2:; _2= v_length; _line(27); _1=_sendv(s_new_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info2= { "lastDigit", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 30, 35, &__info1 }; static oop Integer__lastDigit(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info2); oop _1= 0; oop _2= 0; _line(30); _1= v_self; _2= v_self; _line(32); _2=_sendv(s_digitLength, 1, _2); _line(32); _1=_sendv(s_digitAt_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info3= { "growTo:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 35, 40, &__info2 }; static oop Integer__growTo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info3); oop _1= 0; oop _2= 0; oop _3= 0; _line(35); _1= v_self; _2= v_self; _3= v_n; _line(37); _2=_sendv(s_new_, 2, _2, _3); _line(37); _1=_sendv(s_copyTo_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info4= { "growBy:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 40, 45, &__info3 }; static oop Integer__growBy_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info4); oop _1= 0; oop _2= 0; oop _3= 0; _line(40); _1= v_self; _2= v_self; _line(42); _2=_sendv(s_digitLength, 1, _2); _3= v_n; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _line(42); _1=_sendv(s_growTo_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info5= { "copyTo:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 45, 52, &__info4 }; static oop Integer__copyTo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_x) { _enter(&__info5); oop v_stop= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_stop; _line(45); _1= v_self; _line(48); _1=_sendv(s_digitLength, 1, _1); _2= v_x; _line(48); _2=_sendv(s_digitLength, 1, _2); _line(48); _1=_sendv(s_min_, 2, _1, _2); v_stop= _1; _1= v_x; _2= l_6; _3= v_stop; _4= v_self; _5= l_6; _line(49); _1=_sendv(s_replaceFrom_to_with_startingAt_, 5, _1, _2, _3, _4, _5); _leave(); return _1; _leave(); } static struct __methodinfo __info7= { "+", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 52, 62, &__info5 }; static oop Integer___2b(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info7); oop _1= 0; oop _2= 0; oop _3= 0; _line(52); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(54); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l3; { /* ifTrue:ifFalse: */ _1= v_self; _line(56); _1=_sendv(s_negative, 1, _1); _2= v_aNumber; _line(56); _2=_sendv(s_negative, 1, _2); _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l4; { _1= v_self; _2= v_aNumber; _line(57); _1=_sendv(s_digitAdd_, 2, _1, _2); _line(57); _1=_sendv(s_normalize, 1, _1); } goto _l5; _l4:; { _1= v_self; _2= v_aNumber; _line(58); _1=_sendv(s_digitSubtract_, 2, _1, _2); } _l5:; _leave(); return _1; } _l3:; _1= v_aNumber; _2= v_self; _3= l_8; _line(59); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info12= { "[] digitAdd:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 62, 78, &__info7 }; static oop b_12(oop v__closure, oop v__self, oop v_i) { _enter(&__info12); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(68); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* accum */ _2= l_14; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* self */ _3= v_i; _line(69); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* arg */ _3= v_i; _line(69); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]= _1; /* accum */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* sum */ _2= v_i; _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* accum */ _4= l_13; if ((1 & (long)_3) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 & (long)_4); } else _3= _sendv(s_bitAnd_, 2, _3, _4); _line(70); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info9= { "digitAdd:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 62, 78, &__info12 }; static oop Integer__digitAdd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_arg) { _enter(&__info9); oop _state1= _sendv(s_new_5f_, 2, v__vector, 6); oop v_len= 0; oop v_arglen= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_len; (void)v_arglen; ((oop *)_state1)[3]= v_stateful_self; ((oop *)_state1)[2]= v_self; ((oop *)_state1)[4]= v_arg; _line(62); _1= l_10; ((oop *)_state1)[1]= _1; /* accum */ /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[2]; /* self */ _line(66); _2=_sendv(s_digitLength, 1, _2); v_len= _2; _3= ((oop *)_state1)[4]; /* arg */ _line(66); _3=_sendv(s_digitLength, 1, _3); v_arglen= _3; if (1 & (long)_2 & (long)_3) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l6; { _1= v_arglen; v_len= _1; } _l6:; _1= v_Integer; _2= v_len; _3= ((oop *)_state1)[2]; /* self */ _line(67); _3=_sendv(s_negative, 1, _3); _line(67); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[5]= _1; /* sum */ _1= l_11; _2= v_len; /* Scope('i'->ArgumentVariableNode) */ /* Scope('accum'->TemporaryVariableNode 'arg'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode 'self'->ArgumentVariableNode 'len'->TemporaryVariableNode 'arglen'->TemporaryVariableNode 'sum'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_12, 1, 0, ((oop *)_state1), 0); _line(68); _1=_sendv(s_to_do_, 3, _1, _2, _3); /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[1]; /* accum */ _3= l_13; if (1 & (long)_2) { _2= (((long)_2 > (long)_3) ? v_true : v_false); } else _2= _sendv(s__3e, 2, _2, _3); if (!_2) goto _l7; { _1= ((oop *)_state1)[5]; /* sum */ _2= l_11; _line(73); _1=_sendv(s_growBy_, 2, _1, _2); ((oop *)_state1)[5]= _1; /* sum */ _1= ((oop *)_state1)[5]; /* sum */ _2= ((oop *)_state1)[5]; /* sum */ _line(74); _2=_sendv(s_digitLength, 1, _2); _3= ((oop *)_state1)[1]; /* accum */ _4= l_14; { int _l= (long)_3 >> 1, _r= (long)_4 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_3) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s_bitShift_, 2, _3, _4); } _line(74); _1=_sendv(s_at_put_, 3, _1, _2, _3); } _l7:; _1= ((oop *)_state1)[5]; /* sum */ _leave(); return _1; _leave(); } static struct __methodinfo __info15= { "-", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 78, 88, &__info9 }; static oop Integer___2d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info15); oop _1= 0; oop _2= 0; oop _3= 0; _line(78); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(80); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l8; { /* ifTrue:ifFalse: */ _1= v_self; _line(82); _1=_sendv(s_negative, 1, _1); _2= v_aNumber; _line(82); _2=_sendv(s_negative, 1, _2); _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l9; { _1= v_self; _2= v_aNumber; _line(83); _1=_sendv(s_digitSubtract_, 2, _1, _2); } goto _l10; _l9:; { _1= v_self; _2= v_aNumber; _line(84); _1=_sendv(s_digitAdd_, 2, _1, _2); _line(84); _1=_sendv(s_normalize, 1, _1); } _l10:; _leave(); return _1; } _l8:; _1= v_aNumber; _2= v_self; _3= l_16; _line(85); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info20= { "[] digitSubtract:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 88, 118, &__info15 }; static oop b_20(oop v__closure, oop v__self, oop v_i) { _enter(&__info20); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; _line(110); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* z */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* larger */ _3= v_i; _line(111); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* smaller */ _3= v_i; _line(111); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]= _1; /* z */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* sum */ _2= v_i; _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* z */ _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* z */ _5= l_21; _4= _sendv(s__2f_2f, 2, _4, _5); _5= l_21; { int _l= (long)_4 >> 1; int _r= (long)_5 >> 1; int _s= (_l * _r); if ((1 & (long)_4) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _4= (oop)(long)(_s << 1 | 1); else _4= _sendv(s__2a, 2, _4, _5); } { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_3 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } _line(112); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* z */ _2= l_21; _1= _sendv(s__2f_2f, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]= _1; /* z */ _leave(); return _1; _leave(); } static struct __methodinfo __info17= { "digitSubtract:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 88, 118, &__info20 }; static oop Integer__digitSubtract_(oop v__closure, oop v_stateful_self, oop v_self, oop v_arg) { _enter(&__info17); oop _state1= _sendv(s_new_5f_, 2, v__vector, 5); oop v_sl= 0; oop v_al= 0; oop v_ng= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_sl; (void)v_al; (void)v_ng; _line(88); _1= v_self; _line(91); _1=_sendv(s_digitLength, 1, _1); v_sl= _1; _1= v_arg; _line(92); _1=_sendv(s_digitLength, 1, _1); v_al= _1; /* ifTrue:ifFalse: */ /* ifTrue:ifFalse: */ _1= v_sl; _2= v_al; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l13; { /* whileTrue: */ goto _l16; _l15:; { _1= v_sl; _2= l_18; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_sl= _1; } _l16:; { /* and: */ _1= v_self; _2= v_sl; _line(93); _1=_sendv(s_digitAt_, 2, _1, _2); _2= v_arg; _3= v_sl; _line(93); _2=_sendv(s_digitAt_, 2, _2, _3); if (1 & (long)_1 & (long)_2) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l17; { _1= v_sl; _2= l_18; if (1 & (long)_1) { _1= (((long)_1 > (long)_2) ? v_true : v_false); } else _1= _sendv(s__3e, 2, _1, _2); } _l17:; } if (_1) goto _l15; _1= 0; _1= v_sl; v_al= _1; _1= v_self; _2= v_sl; _line(96); _1=_sendv(s_digitAt_, 2, _1, _2); _2= v_arg; _3= v_sl; _line(96); _2=_sendv(s_digitAt_, 2, _2, _3); if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); } goto _l14; _l13:; { _1= v_sl; _2= v_al; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); } _l14:; if (!_1) goto _l11; { _1= v_arg; ((oop *)_state1)[2]= _1; /* larger */ _1= v_self; ((oop *)_state1)[3]= _1; /* smaller */ _1= v_self; _line(101); _1=_sendv(s_negative, 1, _1); _2= v_false; _1= (_1 == _2) ? v_true : v_false; v_ng= _1; _1= v_al; v_sl= _1; } goto _l12; _l11:; { _1= v_self; ((oop *)_state1)[2]= _1; /* larger */ _1= v_arg; ((oop *)_state1)[3]= _1; /* smaller */ _1= v_self; _line(106); _1=_sendv(s_negative, 1, _1); v_ng= _1; } _l12:; _1= v_Integer; _2= v_sl; _3= v_ng; _line(107); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[4]= _1; /* sum */ _1= l_19; ((oop *)_state1)[1]= _1; /* z */ _1= l_18; _2= v_sl; /* Scope('i'->ArgumentVariableNode) */ /* Scope('sl'->TemporaryVariableNode 'arg'->ArgumentVariableNode 'larger'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'al'->TemporaryVariableNode 'smaller'->TemporaryVariableNode 'z'->TemporaryVariableNode 'self'->ArgumentVariableNode 'ng'->TemporaryVariableNode 'sum'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_20, 1, 0, ((oop *)_state1), 0); _line(110); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[4]; /* sum */ _line(115); _1=_sendv(s_normalize, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info22= { "*", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 118, 126, &__info17 }; static oop Integer___2a(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info22); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(118); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(120); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l18; { _1= v_self; _2= v_aNumber; _3= v_self; _line(122); _3=_sendv(s_negative, 1, _3); _4= v_aNumber; _line(122); _4=_sendv(s_negative, 1, _4); _3= (_3 != _4) ? v_true : v_false; _line(122); _1=_sendv(s_digitMultiply_neg_, 3, _1, _2, _3); _leave(); return _1; } _l18:; _1= v_aNumber; _2= v_self; _3= l_23; _line(123); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info28= { "[] digitMultiply:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 126, 149, &__info22 }; static oop b_28(oop v__closure, oop v__self, oop v_j) { _enter(&__info28); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(140); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[6]; /* arg */ _2= v_j; _line(141); _1=_sendv(s_digitAt_, 2, _1, _2); _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[3]; /* digit */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[5]; /* carry */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[7]; /* prod */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[4]; /* k */ _line(141); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]= _1; /* ab */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]; /* ab */ _2= l_29; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[5]= _1; /* carry */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[7]; /* prod */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[4]; /* k */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]; /* ab */ _4= l_30; if ((1 & (long)_3) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 & (long)_4); } else _3= _sendv(s_bitAnd_, 2, _3, _4); _line(143); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[4]; /* k */ _2= l_25; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[4]= _1; /* k */ _leave(); return _1; _leave(); } static struct __methodinfo __info27= { "[] digitMultiply:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 126, 149, &__info28 }; static oop b_27(oop v__closure, oop v__self, oop v_i) { _enter(&__info27); oop _1= 0; oop _2= 0; oop _3= 0; _line(134); /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _3= v_i; _line(135); _2=_sendv(s_digitAt_, 2, _2, _3); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]= _2; /* digit */ _3= l_26; if (1 & (long)_2) { _2= (((long)_2 != (long)_3) ? v_true : v_false); } else _2= _sendv(s__7e_3d, 2, _2, _3); if (!_2) goto _l19; { _1= v_i; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* k */ _1= l_26; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]= _1; /* carry */ _1= l_25; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* arg */ _line(140); _2=_sendv(s_digitLength, 1, _2); /* Scope('j'->ArgumentVariableNode) */ /* Scope('i'->ArgumentVariableNode) */ /* Object */ /* 3 */ /* 2 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_28, 1, v__self, 0, 0); _line(140); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* prod */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* k */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* carry */ _line(145); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); } _l19:; _leave(); return _1; _leave(); } static struct __methodinfo __info24= { "digitMultiply:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 126, 149, &__info27 }; static oop Integer__digitMultiply_neg_(oop v__closure, oop v_stateful_self, oop v_self, oop v_arg, oop v_ng) { _enter(&__info24); oop _state1= _sendv(s_new_5f_, 2, v__vector, 9); oop v_prodLen= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_prodLen; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; ((oop *)_state1)[6]= v_arg; _line(126); /* ifTrue: */ _1= 0; /* and: */ _2= ((oop *)_state1)[6]; /* arg */ _line(129); _2=_sendv(s_digitLength, 1, _2); _3= l_25; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l21; { _2= ((oop *)_state1)[6]; /* arg */ _3= l_25; _line(129); _2=_sendv(s_digitAt_, 2, _2, _3); _3= l_26; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); } _l21:; if (!_2) goto _l20; { _1= l_26; _leave(); return _1; } _l20:; /* ifTrue: */ _1= 0; /* and: */ _2= ((oop *)_state1)[1]; /* self */ _line(130); _2=_sendv(s_digitLength, 1, _2); _3= l_25; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l23; { _2= ((oop *)_state1)[1]; /* self */ _3= l_25; _line(130); _2=_sendv(s_digitAt_, 2, _2, _3); _3= l_26; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); } _l23:; if (!_2) goto _l22; { _1= l_26; _leave(); return _1; } _l22:; _1= ((oop *)_state1)[1]; /* self */ _line(131); _1=_sendv(s_digitLength, 1, _1); _2= ((oop *)_state1)[6]; /* arg */ _line(131); _2=_sendv(s_digitLength, 1, _2); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_prodLen= _1; _1= v_Integer; _2= v_prodLen; _3= v_ng; _line(132); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[7]= _1; /* prod */ _1= l_25; _2= ((oop *)_state1)[1]; /* self */ _line(134); _2=_sendv(s_digitLength, 1, _2); /* Scope('i'->ArgumentVariableNode) */ /* Scope('ab'->TemporaryVariableNode 'carry'->TemporaryVariableNode 'arg'->ArgumentVariableNode 'prodLen'->TemporaryVariableNode 'k'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'ng'->ArgumentVariableNode 'self'->ArgumentVariableNode 'prod'->TemporaryVariableNode 'digit'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_27, 1, 0, ((oop *)_state1), 0); _line(134); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[7]; /* prod */ _line(146); _1=_sendv(s_normalize, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info31= { "//", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 149, 160, &__info24 }; static oop Integer___2f_2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info31); oop v_q= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_q; _line(149); /* ifTrue: */ _1= 0; _2= v_aNumber; _3= l_32; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l24; { _1= v_self; _2= l_33; _line(152); _1=_sendv(s_error_, 2, _1, _2); _leave(); return _1; } _l24:; /* ifTrue: */ _1= 0; _2= v_self; _3= l_32; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l25; { _1= l_32; _leave(); return _1; } _l25:; _1= v_self; _2= v_aNumber; _line(154); _1=_sendv(s_quo_, 2, _1, _2); v_q= _1; /* ifTrue:ifFalse: */ /* ifTrue:ifFalse: */ _1= v_q; _line(155); _1=_sendv(s_negative, 1, _1); if (!_1) goto _l28; { _1= v_q; _2= v_aNumber; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } _2= v_self; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 != (long)_2) ? v_true : v_false); } else _1= _sendv(s__7e_3d, 2, _1, _2); } goto _l29; _l28:; { /* and: */ _1= v_q; _2= l_32; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l30; { _1= v_self; _line(155); _1=_sendv(s_negative, 1, _1); _2= v_aNumber; _line(155); _2=_sendv(s_negative, 1, _2); if (1 & (long)_1 & (long)_2) { _1= (((long)_1 != (long)_2) ? v_true : v_false); } else _1= _sendv(s__7e_3d, 2, _1, _2); } _l30:; } _l29:; if (!_1) goto _l26; { _1= v_q; _2= l_34; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } goto _l27; _l26:; { _1= v_q; } _l27:; _leave(); return _1; _leave(); } static struct __methodinfo __info35= { "quo:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 160, 172, &__info31 }; static oop Integer__quo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info35); oop v_ng= 0; oop v_quo= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_ng; (void)v_quo; _line(160); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(163); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l31; { _1= v_self; _line(165); _1=_sendv(s_negative, 1, _1); _2= v_aNumber; _line(165); _2=_sendv(s_negative, 1, _2); _1= (_1 == _2) ? v_true : v_false; _2= v_false; _1= (_1 == _2) ? v_true : v_false; v_ng= _1; _1= v_self; /* ifTrue:ifFalse: */ _2= v_aNumber; _line(166); _2=_sendv(s_isSmallInteger, 1, _2); if (!_2) goto _l32; { _2= v_aNumber; _line(166); _2=_sendv(s_abs, 1, _2); } goto _l33; _l32:; { _2= v_aNumber; } _l33:; _3= v_ng; _line(166); _1=_sendv(s_digitDiv_neg_, 3, _1, _2, _3); _2= l_36; _line(167); _1=_sendv(s_at_, 2, _1, _2); v_quo= _1; _1= v_quo; _line(168); _1=_sendv(s_normalize, 1, _1); _leave(); return _1; } _l31:; _1= v_aNumber; _2= v_self; _3= l_37; _line(169); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info38= { "/", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 172, 184, &__info35 }; static oop Integer___2f(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info38); oop v_quoRem= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_quoRem; _line(172); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(175); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l34; { _1= v_self; _2= v_aNumber; _line(177); _2=_sendv(s_abs, 1, _2); _3= v_self; _line(177); _3=_sendv(s_negative, 1, _3); _4= v_aNumber; _line(177); _4=_sendv(s_negative, 1, _4); _3= (_3 != _4) ? v_true : v_false; _line(177); _1=_sendv(s_digitDiv_neg_, 3, _1, _2, _3); v_quoRem= _1; /* ifTrue:ifFalse: */ _1= v_quoRem; _2= l_39; _line(178); _1=_sendv(s_at_, 2, _1, _2); _2= l_40; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l35; { _1= v_quoRem; _2= l_41; _line(179); _1=_sendv(s_at_, 2, _1, _2); _line(179); _1=_sendv(s_normalize, 1, _1); } goto _l36; _l35:; { _1= v_self; _line(180); _1=_sendv(s_asFloat, 1, _1); _2= v_aNumber; _line(180); _2=_sendv(s_asFloat, 1, _2); _line(180); _1=_sendv(s__2f, 2, _1, _2); } _l36:; _leave(); return _1; } _l34:; _1= v_aNumber; _2= v_self; _3= l_42; _line(181); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info57= { "[] digitDiv:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 184, 269, &__info38 }; static oop b_57(oop v__closure, oop v__self, oop v_i) { _enter(&__info57); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; _line(247); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[14]; /* div */ _2= v_i; _line(248); _1=_sendv(s_digitAt_, 2, _1, _2); _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[5]; /* qhi */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]= _1; /* hi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[13]; /* a */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[1]; /* rem */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _line(249); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]; /* hi */ _3= l_48; if ((1 & (long)_2) && (_2 > 0) && (_3 > 0)) { _2= (oop)((long)_2 & (long)_3); } else _2= _sendv(s_bitAnd_, 2, _2, _3); _3= l_49; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[14]; /* div */ _3= v_i; _line(249); _2=_sendv(s_digitAt_, 2, _2, _3); _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[4]; /* qlo */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[9]= _1; /* lo */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[1]; /* rem */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[9]; /* lo */ _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[9]; /* lo */ _5= l_55; _4= _sendv(s__2f_2f, 2, _4, _5); _5= l_55; { int _l= (long)_4 >> 1; int _r= (long)_5 >> 1; int _s= (_l * _r); if ((1 & (long)_4) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _4= (oop)(long)(_s << 1 | 1); else _4= _sendv(s__2a, 2, _4, _5); } { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_3 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } _line(250); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[9]; /* lo */ _2= l_55; _1= _sendv(s__2f_2f, 2, _1, _2); _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[8]; /* hi */ _3= l_50; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[13]= _1; /* a */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]= _1; /* l */ _leave(); return _1; _leave(); } static struct __methodinfo __info58= { "[] digitDiv:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 184, 269, &__info57 }; static oop b_58(oop v__closure, oop v__self, oop v_i) { _enter(&__info58); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(260); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[13]; /* a */ _2= l_51; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[1]; /* rem */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _line(261); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[14]; /* div */ _3= v_i; _line(261); _2=_sendv(s_digitAt_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[13]= _1; /* a */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[1]; /* rem */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[13]; /* a */ _4= l_52; if ((1 & (long)_3) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 & (long)_4); } else _3= _sendv(s_bitAnd_, 2, _3, _4); _line(262); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]; /* l */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_outer)->v_state))[12]= _1; /* l */ _leave(); return _1; _leave(); } static struct __methodinfo __info47= { "[] digitDiv:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 184, 269, &__info58 }; static oop b_47(oop v__closure, oop v__self, oop v_k) { _enter(&__info47); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(203); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _line(207); _1=_sendv(s_digitLength, 1, _1); _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= v_k; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]= _1; /* j */ /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _line(209); _1=_sendv(s_digitAt_, 2, _1, _2); _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ if (1 & (long)_1 & (long)_2) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l37; { _1= l_48; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* qlo */ ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]= _1; /* qhi */ } goto _l38; _l37:; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _line(217); _1=_sendv(s_digitAt_, 2, _1, _2); _2= l_49; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _4= l_45; { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } _line(217); _2=_sendv(s_digitAt_, 2, _2, _3); _3= l_50; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]= _1; /* t */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ _1= _sendv(s__2f_2f, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]= _1; /* qhi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ _1= _sendv(s__5c_5c, 2, _1, _2); _2= l_49; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _4= l_45; { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } _line(219); _2=_sendv(s_digitAt_, 2, _2, _3); _3= l_48; if ((1 & (long)_2) && (_2 > 0) && (_3 > 0)) { _2= (oop)((long)_2 & (long)_3); } else _2= _sendv(s_bitAnd_, 2, _2, _3); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]= _1; /* t */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ _1= _sendv(s__2f_2f, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* qlo */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ _1= _sendv(s__5c_5c, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]= _1; /* t */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* qhi */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* dnh */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]= _1; /* hi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* dnh */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ _3= l_48; if ((1 & (long)_2) && (_2 > 0) && (_3 > 0)) { _2= (oop)((long)_2 & (long)_3); } else _2= _sendv(s_bitAnd_, 2, _2, _3); _3= l_49; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]= _1; /* lo */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ _2= l_50; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ _3= l_51; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]= _1; /* hi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ _2= l_52; if ((1 & (long)_1) && (_1 > 0) && (_2 > 0)) { _1= (oop)((long)_1 & (long)_2); } else _1= _sendv(s_bitAnd_, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]= _1; /* lo */ /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _2= l_53; if (1 & (long)_1) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); if (!_1) goto _l39; { _1= l_44; } goto _l40; _l39:; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* rem */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _3= l_54; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } _line(228); _1=_sendv(s_digitAt_, 2, _1, _2); } _l40:; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[10]= _1; /* r3 */ /* whileTrue: */ goto _l42; _l41:; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]= _1; /* hi */ } _l42:; { /* and: */ /* or: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); if (_1) goto _l44; { /* and: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* t */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ if (1 & (long)_1 & (long)_2) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l45; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[10]; /* r3 */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); } _l45:; } _l44:; if (!_1) goto _l43; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* qlo */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* dnh */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]= _1; /* lo */ /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ _3= l_44; if (1 & (long)_2) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l46; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]= _1; /* hi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* lo */ _2= l_55; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]= _1; /* lo */ } _l46:; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* hi */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* dh */ if (1 & (long)_1 & (long)_2) { _1= (((long)_1 >= (long)_2) ? v_true : v_false); } else _1= _sendv(s__3e_3d, 2, _1, _2); } _l43:; } if (_1) goto _l41; _1= 0; /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ _3= l_44; if (1 & (long)_2) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l47; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* qhi */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]= _1; /* qhi */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ _2= l_56; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* qlo */ } _l47:; } _l38:; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* dl */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[12]= _1; /* l */ _1= l_44; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[13]= _1; /* a */ _1= l_45; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[14]; /* div */ _line(247); _2=_sendv(s_digitLength, 1, _2); /* Scope('i'->ArgumentVariableNode) */ /* Scope('k'->ArgumentVariableNode) */ /* Object */ /* 3 */ /* 2 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_57, 1, v__self, 0, 0); _line(247); _1=_sendv(s_to_do_, 3, _1, _2, _3); /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[13]; /* a */ _3= l_44; if (1 & (long)_2) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l48; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]= _1; /* qlo */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* j */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* dl */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[12]= _1; /* l */ _1= l_44; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[13]= _1; /* a */ _1= l_45; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[14]; /* div */ _line(260); _2=_sendv(s_digitLength, 1, _2); /* Scope('i'->ArgumentVariableNode) */ /* Scope('k'->ArgumentVariableNode) */ /* Object */ /* 3 */ /* 2 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_58, 1, v__self, 0, 0); _line(260); _1=_sendv(s_to_do_, 3, _1, _2, _3); } _l48:; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[15]; /* quo */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[15]; /* quo */ _line(264); _2=_sendv(s_digitLength, 1, _2); _3= l_45; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _3= v_k; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* qhi */ _4= l_49; { int _l= (long)_3 >> 1, _r= (long)_4 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_3) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s_bitShift_, 2, _3, _4); } _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* qlo */ { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= _l + _r; if ((1 & (long)_3 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2b, 2, _3, _4); } _line(264); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info43= { "digitDiv:neg:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 184, 269, &__info47 }; static oop Integer__digitDiv_neg_(oop v__closure, oop v_stateful_self, oop v_self, oop v_arg, oop v_ng) { _enter(&__info43); oop _state1= _sendv(s_new_5f_, 2, v__vector, 16); oop v_ql= 0; oop v_d= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_ql; (void)v_d; _line(184); /* ifTrue: */ _1= 0; _2= v_arg; _3= l_44; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l49; { _1= v_self; _line(187); _1=_sendv(s_errorZeroDivide, 1, _1); _leave(); return _1; } _l49:; _1= v_self; _line(188); _1=_sendv(s_digitLength, 1, _1); _2= v_arg; _line(188); _2=_sendv(s_digitLength, 1, _2); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)_state1)[12]= _1; /* l */ /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[12]; /* l */ _3= l_44; if (1 & (long)_2) { _2= (((long)_2 <= (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c_3d, 2, _2, _3); if (!_2) goto _l50; { _1= v_Array; _2= l_44; _3= v_self; _line(189); _1=_sendv(s_with_with_, 3, _1, _2, _3); _leave(); return _1; } _l50:; _1= l_46; _2= v_arg; _line(190); _2=_sendv(s_lastDigit, 1, _2); _line(190); _2=_sendv(s_highBitOfPositiveReceiver, 1, _2); { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_d= _1; _1= v_arg; _2= v_d; _line(191); _1=_sendv(s_digitLshift_, 2, _1, _2); ((oop *)_state1)[14]= _1; /* div */ _1= ((oop *)_state1)[14]; /* div */ _2= ((oop *)_state1)[14]; /* div */ _line(192); _2=_sendv(s_digitLength, 1, _2); _3= l_45; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _line(192); _1=_sendv(s_growTo_, 2, _1, _2); ((oop *)_state1)[14]= _1; /* div */ _1= v_self; _2= v_d; _line(194); _1=_sendv(s_digitLshift_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* rem */ /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[1]; /* rem */ _line(195); _2=_sendv(s_digitLength, 1, _2); _3= v_self; _line(195); _3=_sendv(s_digitLength, 1, _3); if (1 & (long)_2 & (long)_3) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l51; { _1= ((oop *)_state1)[1]; /* rem */ _2= v_self; _line(195); _2=_sendv(s_digitLength, 1, _2); _3= l_45; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _line(195); _1=_sendv(s_growTo_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* rem */ } _l51:; _1= v_Integer; _2= ((oop *)_state1)[12]; /* l */ _3= v_ng; _line(197); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[15]= _1; /* quo */ _1= ((oop *)_state1)[14]; /* div */ _line(198); _1=_sendv(s_digitLength, 1, _1); _2= l_45; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)_state1)[11]= _1; /* dl */ _1= ((oop *)_state1)[12]; /* l */ v_ql= _1; _1= ((oop *)_state1)[14]; /* div */ _2= ((oop *)_state1)[11]; /* dl */ _line(201); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)_state1)[3]= _1; /* dh */ /* ifTrue:ifFalse: */ _1= ((oop *)_state1)[11]; /* dl */ _2= l_45; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l52; { _1= l_44; } goto _l53; _l52:; { _1= ((oop *)_state1)[14]; /* div */ _2= ((oop *)_state1)[11]; /* dl */ _3= l_45; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } _line(202); _1=_sendv(s_digitAt_, 2, _1, _2); } _l53:; ((oop *)_state1)[7]= _1; /* dnh */ _1= l_45; _2= v_ql; /* Scope('k'->ArgumentVariableNode) */ /* Scope('r3'->TemporaryVariableNode 'dl'->TemporaryVariableNode 'hi'->TemporaryVariableNode 'ql'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'qlo'->TemporaryVariableNode 'j'->TemporaryVariableNode 'self'->ArgumentVariableNode 'div'->TemporaryVariableNode 'quo'->TemporaryVariableNode 'dnh'->TemporaryVariableNode 't'->TemporaryVariableNode 'dh'->TemporaryVariableNode 'arg'->ArgumentVariableNode 'l'->TemporaryVariableNode 'ng'->ArgumentVariableNode 'a'->TemporaryVariableNode 'qhi'->TemporaryVariableNode 'rem'->TemporaryVariableNode 'lo'->TemporaryVariableNode 'd'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_47, 1, 0, ((oop *)_state1), 0); _line(203); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[1]; /* rem */ _2= v_d; _3= l_44; _4= ((oop *)_state1)[11]; /* dl */ _line(265); _1=_sendv(s_digitRshift_bytes_lookfirst_, 4, _1, _2, _3, _4); ((oop *)_state1)[1]= _1; /* rem */ _1= v_Array; _2= ((oop *)_state1)[15]; /* quo */ _3= ((oop *)_state1)[1]; /* rem */ _line(266); _1=_sendv(s_with_with_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info59= { "bitAnd:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 269, 279, &__info43 }; static oop Integer__bitAnd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info59); oop v_norm= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_norm; _line(269); _1= v_n; _line(272); _1=_sendv(s_normalize, 1, _1); v_norm= _1; _1= v_self; _2= v_norm; _3= l_60; _4= v_self; _line(276); _4=_sendv(s_digitLength, 1, _4); _5= v_norm; _line(276); _5=_sendv(s_digitLength, 1, _5); _line(276); _4=_sendv(s_max_, 2, _4, _5); _line(274); _1=_sendv(s_digitLogic_op_length_, 4, _1, _2, _3, _4); _leave(); return _1; _leave(); } static struct __methodinfo __info61= { "bitOr:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 279, 289, &__info59 }; static oop Integer__bitOr_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info61); oop v_norm= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_norm; _line(279); _1= v_n; _line(282); _1=_sendv(s_normalize, 1, _1); v_norm= _1; _1= v_self; _2= v_norm; _3= l_62; _4= v_self; _line(286); _4=_sendv(s_digitLength, 1, _4); _5= v_norm; _line(286); _5=_sendv(s_digitLength, 1, _5); _line(286); _4=_sendv(s_max_, 2, _4, _5); _line(284); _1=_sendv(s_digitLogic_op_length_, 4, _1, _2, _3, _4); _leave(); return _1; _leave(); } static struct __methodinfo __info63= { "bitXor:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 289, 299, &__info61 }; static oop Integer__bitXor_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info63); oop v_norm= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_norm; _line(289); _1= v_n; _line(292); _1=_sendv(s_normalize, 1, _1); v_norm= _1; _1= v_self; _2= v_norm; _3= l_64; _4= v_self; _line(296); _4=_sendv(s_digitLength, 1, _4); _5= v_norm; _line(296); _5=_sendv(s_digitLength, 1, _5); _line(296); _4=_sendv(s_max_, 2, _4, _5); _line(294); _1=_sendv(s_digitLogic_op_length_, 4, _1, _2, _3, _4); _leave(); return _1; _leave(); } static struct __methodinfo __info65= { "bitClear:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 299, 304, &__info63 }; static oop Integer__bitClear_(oop v__closure, oop v_stateful_self, oop v_self, oop v_n) { _enter(&__info65); oop _1= 0; oop _2= 0; _line(299); _1= v_self; _2= v_n; if ((1 & (long)_1 & (long)_2) && (_1 > 0) && (_2 > 0)) { _1= (oop)((long)_1 | (long)_2); } else _1= _sendv(s_bitOr_, 2, _1, _2); _2= v_n; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } _leave(); return _1; _leave(); } static struct __methodinfo __info66= { "bitInvert", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 304, 306, &__info65 }; static oop Integer__bitInvert(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info66); oop _1= 0; oop _2= 0; _line(304); _1= l_67; _2= v_self; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } _leave(); return _1; _leave(); } static struct __methodinfo __info72= { "[] digitLogic:op:length:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 306, 346, &__info66 }; static oop b_72(oop v__closure, oop v__self, oop v_i) { _enter(&__info72); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(316); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _2= v_i; _line(317); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]= _1; /* b1 */ /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* neg1 */ if (!_2) goto _l54; { /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* z1 */ if (!_1) goto _l55; { /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* b1 */ _2= l_70; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l57; { _1= l_70; } goto _l58; _l57:; { _1= v_false; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]= _1; /* z1 */ _1= l_73; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* b1 */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } _l58:; } goto _l56; _l55:; { _1= l_74; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* b1 */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } _l56:; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]= _1; /* b1 */ } _l54:; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* arg */ _2= v_i; _line(325); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]= _1; /* b2 */ /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* neg2 */ if (!_2) goto _l59; { /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* z2 */ if (!_1) goto _l60; { /* ifTrue:ifFalse: */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* b2 */ _2= l_70; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l62; { _1= l_70; } goto _l63; _l62:; { _1= v_false; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]= _1; /* z2 */ _1= l_73; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* b2 */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } _l63:; } goto _l61; _l60:; { _1= l_74; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* b2 */ { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } _l61:; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]= _1; /* b2 */ } _l59:; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* b1 */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[10]; /* op */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* b2 */ _line(333); _1=_sendv(s_perform_with_, 3, _1, _2, _3); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]= _1; /* b */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[12]; /* result */ _2= v_i; /* ifTrue:ifFalse: */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[13]; /* rneg */ if (!_3) goto _l64; { /* ifTrue:ifFalse: */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[14]; /* rz */ if (!_3) goto _l66; { /* ifTrue:ifFalse: */ _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* b */ _4= l_70; if (1 & (long)_3) { _3= (((long)_3 == (long)_4) ? v_true : v_false); } else _3= _sendv(s__3d, 2, _3, _4); if (!_3) goto _l68; { _3= l_70; } goto _l69; _l68:; { _3= v_false; ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[14]= _3; /* rz */ _3= l_73; _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* b */ { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } } _l69:; } goto _l67; _l66:; { _3= l_74; _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* b */ { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } } _l67:; } goto _l65; _l64:; { _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[11]; /* b */ } _l65:; _line(335); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info68= { "digitLogic:op:length:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 306, 346, &__info72 }; static oop Integer__digitLogic_op_length_(oop v__closure, oop v_stateful_self, oop v_self, oop v_arg, oop v_op, oop v_len) { _enter(&__info68); oop _state1= _sendv(s_new_5f_, 2, v__vector, 15); oop _1= 0; oop _2= 0; oop _3= 0; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; ((oop *)_state1)[6]= v_arg; ((oop *)_state1)[10]= v_op; _line(306); _1= ((oop *)_state1)[1]; /* self */ _line(309); _1=_sendv(s_negative, 1, _1); ((oop *)_state1)[4]= _1; /* neg1 */ _1= ((oop *)_state1)[6]; /* arg */ _line(310); _1=_sendv(s_negative, 1, _1); ((oop *)_state1)[8]= _1; /* neg2 */ /* ifTrue:ifFalse: */ _1= ((oop *)_state1)[4]; /* neg1 */ if (!_1) goto _l70; { _1= l_69; } goto _l71; _l70:; { _1= l_70; } _l71:; _2= ((oop *)_state1)[10]; /* op */ /* ifTrue:ifFalse: */ _3= ((oop *)_state1)[8]; /* neg2 */ if (!_3) goto _l72; { _3= l_69; } goto _l73; _l72:; { _3= l_70; } _l73:; _line(312); _1=_sendv(s_perform_with_, 3, _1, _2, _3); _2= l_70; if (1 & (long)_1) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); ((oop *)_state1)[13]= _1; /* rneg */ _1= v_Integer; _2= v_len; _3= ((oop *)_state1)[13]; /* rneg */ _line(314); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[12]= _1; /* result */ _1= v_true; ((oop *)_state1)[9]= _1; /* z2 */ ((oop *)_state1)[5]= _1; /* z1 */ ((oop *)_state1)[14]= _1; /* rz */ _1= l_71; _2= ((oop *)_state1)[12]; /* result */ _line(316); _2=_sendv(s_digitLength, 1, _2); /* Scope('i'->ArgumentVariableNode) */ /* Scope('stateful_self'->ArgumentVariableNode 'b1'->TemporaryVariableNode 'self'->ArgumentVariableNode 'len'->ArgumentVariableNode 'b2'->TemporaryVariableNode 'result'->TemporaryVariableNode 'rneg'->TemporaryVariableNode 'b'->TemporaryVariableNode 'arg'->ArgumentVariableNode 'op'->ArgumentVariableNode 'rz'->TemporaryVariableNode 'neg2'->TemporaryVariableNode 'z1'->TemporaryVariableNode 'z2'->TemporaryVariableNode 'neg1'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_72, 1, 0, ((oop *)_state1), 0); _line(316); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[12]; /* result */ _line(343); _1=_sendv(s_normalize, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info75= { "<<", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 346, 352, &__info68 }; static oop Integer___3c_3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement) { _enter(&__info75); oop _1= 0; oop _2= 0; oop _3= 0; _line(346); /* ifTrue: */ _1= 0; _2= v_displacement; _3= l_76; if (1 & (long)_2) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l74; { _1= v_self; _2= l_77; _line(348); _1=_sendv(s_error_, 2, _1, _2); } _l74:; _1= v_self; _2= v_displacement; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _leave(); return _1; _leave(); } static struct __methodinfo __info78= { ">>", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 352, 358, &__info75 }; static oop Integer___3e_3e(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement) { _enter(&__info78); oop _1= 0; oop _2= 0; oop _3= 0; _line(352); /* ifTrue: */ _1= 0; _2= v_displacement; _3= l_79; if (1 & (long)_2) { _2= (((long)_2 < (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c, 2, _2, _3); if (!_2) goto _l75; { _1= v_self; _2= l_80; _line(354); _1=_sendv(s_error_, 2, _1, _2); } _l75:; _1= v_self; _2= v_displacement; _line(355); _2=_sendv(s_negated, 1, _2); { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _leave(); return _1; _leave(); } static struct __methodinfo __info81= { "bitShift:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 358, 367, &__info78 }; static oop Integer__bitShift_(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement) { _enter(&__info81); oop v_magnitudeShift= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_magnitudeShift; _line(358); _1= v_self; _2= v_displacement; _line(361); _1=_sendv(s_bitShiftMagnitude_, 2, _1, _2); v_magnitudeShift= _1; /* ifTrue:ifFalse: */ /* and: */ /* and: */ _1= v_self; _line(362); _1=_sendv(s_negative, 1, _1); if (!_1) goto _l79; { _1= v_displacement; _line(362); _1=_sendv(s_negative, 1, _1); } _l79:; if (!_1) goto _l78; { _1= v_self; _2= l_82; _3= v_displacement; _line(362); _3=_sendv(s_negated, 1, _3); _line(362); _1=_sendv(s_anyBitOfMagnitudeFrom_to_, 3, _1, _2, _3); } _l78:; if (!_1) goto _l76; { _1= v_magnitudeShift; _2= l_82; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } } goto _l77; _l76:; { _1= v_magnitudeShift; } _l77:; _leave(); return _1; _leave(); } static struct __methodinfo __info83= { "bitShiftMagnitude:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 367, 378, &__info81 }; static oop Integer__bitShiftMagnitude_(oop v__closure, oop v_stateful_self, oop v_self, oop v_displacement) { _enter(&__info83); oop v_rShift= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_rShift; _line(367); /* ifTrue: */ _1= 0; _2= v_displacement; _3= l_84; if (1 & (long)_2) { _2= (((long)_2 >= (long)_3) ? v_true : v_false); } else _2= _sendv(s__3e_3d, 2, _2, _3); if (!_2) goto _l80; { _1= v_self; _2= v_displacement; _line(370); _1=_sendv(s_digitLshift_, 2, _1, _2); _leave(); return _1; } _l80:; _1= l_84; _2= v_displacement; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_rShift= _1; _1= v_self; _2= v_rShift; _3= l_85; if ((1 & (long)_2) && (_2 > 0) && (_3 > 0)) { _2= (oop)((long)_2 & (long)_3); } else _2= _sendv(s_bitAnd_, 2, _2, _3); _3= v_rShift; _4= l_86; { int _l= (long)_3 >> 1, _r= (long)_4 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_3) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s_bitShift_, 2, _3, _4); } _4= v_self; _line(375); _4=_sendv(s_digitLength, 1, _4); _line(373); _1=_sendv(s_digitRshift_bytes_lookfirst_, 4, _1, _2, _3, _4); _line(375); _1=_sendv(s_normalize, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info93= { "[] digitLshift:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 378, 400, &__info83 }; static oop b_93(oop v__closure, oop v__self, oop v_i) { _enter(&__info93); oop _1= 0; oop _2= 0; oop _3= 0; _line(391); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* result */ _2= v_i; _3= l_88; _line(391); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info94= { "[] digitLshift:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 378, 400, &__info93 }; static oop b_94(oop v__closure, oop v__self, oop v_i) { _enter(&__info94); oop v_digit= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_digit; _line(392); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* self */ _2= v_i; _line(394); _1=_sendv(s_digitAt_, 2, _1, _2); v_digit= _1; _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* result */ _2= v_i; _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* byteShift */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _3= v_digit; _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* mask */ if ((1 & (long)_3 & (long)_4) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 & (long)_4); } else _3= _sendv(s_bitAnd_, 2, _3, _4); _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* bitShift */ { int _l= (long)_3 >> 1, _r= (long)_4 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_3 & (long)_4) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s_bitShift_, 2, _3, _4); } _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* carry */ if ((1 & (long)_3 & (long)_4) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 | (long)_4); } else _3= _sendv(s_bitOr_, 2, _3, _4); _line(395); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= v_digit; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* rShift */ { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]= _1; /* carry */ _leave(); return _1; _leave(); } static struct __methodinfo __info87= { "digitLshift:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 378, 400, &__info94 }; static oop Integer__digitLshift_(oop v__closure, oop v_stateful_self, oop v_self, oop v_shiftCount) { _enter(&__info87); oop _state1= _sendv(s_new_5f_, 2, v__vector, 9); oop v_len= 0; oop v_highBit= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_len; (void)v_highBit; ((oop *)_state1)[3]= v_stateful_self; ((oop *)_state1)[2]= v_self; _line(378); /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[2]; /* self */ _line(381); _2=_sendv(s_highBitOfMagnitude, 1, _2); v_highBit= _2; _3= l_88; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l81; { _1= l_88; _leave(); return _1; } _l81:; _1= v_highBit; _2= v_shiftCount; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= l_89; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= l_90; _1= _sendv(s__2f_2f, 2, _1, _2); v_len= _1; _1= v_Integer; _2= v_len; _3= ((oop *)_state1)[2]; /* self */ _line(383); _3=_sendv(s_negative, 1, _3); _line(383); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[1]= _1; /* result */ _1= v_shiftCount; _2= l_90; _1= _sendv(s__2f_2f, 2, _1, _2); ((oop *)_state1)[4]= _1; /* byteShift */ _1= v_shiftCount; _2= l_90; _1= _sendv(s__5c_5c, 2, _1, _2); ((oop *)_state1)[6]= _1; /* bitShift */ /* ifTrue: */ _1= 0; _2= ((oop *)_state1)[6]; /* bitShift */ _3= l_88; if (1 & (long)_2) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (!_2) goto _l82; { _1= ((oop *)_state1)[1]; /* result */ _2= ((oop *)_state1)[4]; /* byteShift */ _3= l_91; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _3= v_len; _4= ((oop *)_state1)[2]; /* self */ _5= l_91; _line(387); _1=_sendv(s_replaceFrom_to_with_startingAt_, 5, _1, _2, _3, _4, _5); _leave(); return _1; } _l82:; _1= l_88; ((oop *)_state1)[7]= _1; /* carry */ _1= ((oop *)_state1)[6]; /* bitShift */ _2= l_90; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)_state1)[8]= _1; /* rShift */ _1= l_92; _2= l_88; _3= ((oop *)_state1)[6]; /* bitShift */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)_state1)[5]= _1; /* mask */ _1= l_91; _2= ((oop *)_state1)[4]; /* byteShift */ /* Scope('i'->ArgumentVariableNode) */ /* Scope('result'->TemporaryVariableNode 'carry'->TemporaryVariableNode 'bitShift'->TemporaryVariableNode 'shiftCount'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode 'highBit'->TemporaryVariableNode 'self'->ArgumentVariableNode 'len'->TemporaryVariableNode 'rShift'->TemporaryVariableNode 'mask'->TemporaryVariableNode 'byteShift'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_93, 1, 0, ((oop *)_state1), 0); _line(391); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= l_91; _2= v_len; _3= ((oop *)_state1)[4]; /* byteShift */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } /* Scope('digit'->TemporaryVariableNode 'i'->ArgumentVariableNode) */ /* Scope('result'->TemporaryVariableNode 'carry'->TemporaryVariableNode 'bitShift'->TemporaryVariableNode 'shiftCount'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode 'highBit'->TemporaryVariableNode 'self'->ArgumentVariableNode 'len'->TemporaryVariableNode 'rShift'->TemporaryVariableNode 'mask'->TemporaryVariableNode 'byteShift'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_94, 1, 0, ((oop *)_state1), 0); _line(392); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[1]; /* result */ _leave(); return _1; _leave(); } static struct __methodinfo __info100= { "[] digitRshift:bytes:lookfirst:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 400, 426, &__info87 }; static oop b_100(oop v__closure, oop v__self, oop v_j) { _enter(&__info100); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(419); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _2= v_j; _3= l_99; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _line(420); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]= _1; /* digit */ _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[4]; /* r */ _2= v_j; _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[5]; /* b */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* digit */ _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[6]; /* m */ if ((1 & (long)_3 & (long)_4) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 & (long)_4); } else _3= _sendv(s_bitAnd_, 2, _3, _4); _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[7]; /* f */ { int _l= (long)_3 >> 1, _r= (long)_4 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_3 & (long)_4) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s_bitShift_, 2, _3, _4); } _4= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]; /* x */ if ((1 & (long)_3 & (long)_4) && (_3 > 0) && (_4 > 0)) { _3= (oop)((long)_3 | (long)_4); } else _3= _sendv(s_bitOr_, 2, _3, _4); _line(421); _1=_sendv(s_digitAt_put_, 3, _1, _2, _3); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* digit */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[9]; /* n */ { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[8]= _1; /* x */ _leave(); return _1; _leave(); } static struct __methodinfo __info95= { "digitRshift:bytes:lookfirst:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 400, 426, &__info100 }; static oop Integer__digitRshift_bytes_lookfirst_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger, oop v_b, oop v_a) { _enter(&__info95); oop _state1= _sendv(s_new_5f_, 2, v__vector, 10); oop v_count= 0; oop v_i= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_count; (void)v_i; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; ((oop *)_state1)[5]= v_b; _line(400); _1= l_96; _2= v_anInteger; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((oop *)_state1)[9]= _1; /* n */ _1= l_96; ((oop *)_state1)[8]= _1; /* x */ _1= ((oop *)_state1)[9]; /* n */ _2= l_97; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((oop *)_state1)[7]= _1; /* f */ _1= v_a; v_i= _1; _1= l_98; _2= l_96; _3= ((oop *)_state1)[7]; /* f */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)_state1)[6]= _1; /* m */ _1= ((oop *)_state1)[1]; /* self */ _2= v_i; _line(409); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)_state1)[3]= _1; /* digit */ /* whileTrue: */ goto _l84; _l83:; { _1= ((oop *)_state1)[3]; /* digit */ _2= ((oop *)_state1)[7]; /* f */ { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)_state1)[8]= _1; /* x */ _1= v_i; _2= l_99; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_i= _1; _1= ((oop *)_state1)[1]; /* self */ _2= v_i; _line(414); _1=_sendv(s_digitAt_, 2, _1, _2); ((oop *)_state1)[3]= _1; /* digit */ } _l84:; { /* and: */ _1= ((oop *)_state1)[3]; /* digit */ _2= ((oop *)_state1)[9]; /* n */ { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } _2= ((oop *)_state1)[8]; /* x */ if ((1 & (long)_1 & (long)_2) && (_1 > 0) && (_2 > 0)) { _1= (oop)((long)_1 | (long)_2); } else _1= _sendv(s_bitOr_, 2, _1, _2); _2= l_96; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l85; { _1= v_i; _2= l_99; if (1 & (long)_1) { _1= (((long)_1 != (long)_2) ? v_true : v_false); } else _1= _sendv(s__7e_3d, 2, _1, _2); } _l85:; } if (_1) goto _l83; _1= 0; /* ifTrue: */ _1= 0; _2= v_i; _3= ((oop *)_state1)[5]; /* b */ if (1 & (long)_2 & (long)_3) { _2= (((long)_2 <= (long)_3) ? v_true : v_false); } else _2= _sendv(s__3c_3d, 2, _2, _3); if (!_2) goto _l86; { _1= v_Integer; _2= l_96; _3= ((oop *)_state1)[1]; /* self */ _line(415); _3=_sendv(s_negative, 1, _3); _line(415); _1=_sendv(s_new_neg_, 3, _1, _2, _3); _leave(); return _1; } _l86:; _1= v_Integer; _2= v_i; _3= ((oop *)_state1)[5]; /* b */ { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } _3= ((oop *)_state1)[1]; /* self */ _line(416); _3=_sendv(s_negative, 1, _3); _line(416); _1=_sendv(s_new_neg_, 3, _1, _2, _3); ((oop *)_state1)[4]= _1; /* r */ _1= v_i; v_count= _1; _1= ((oop *)_state1)[1]; /* self */ _2= ((oop *)_state1)[5]; /* b */ _3= l_99; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _line(418); _1=_sendv(s_digitAt_, 2, _1, _2); _2= ((oop *)_state1)[9]; /* n */ { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } ((oop *)_state1)[8]= _1; /* x */ _1= ((oop *)_state1)[5]; /* b */ _2= l_99; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= v_count; /* Scope('j'->ArgumentVariableNode) */ /* Scope('r'->TemporaryVariableNode 'f'->TemporaryVariableNode 'count'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'self'->ArgumentVariableNode 'i'->TemporaryVariableNode 'b'->ArgumentVariableNode 'x'->TemporaryVariableNode 'm'->TemporaryVariableNode 'a'->ArgumentVariableNode 'digit'->TemporaryVariableNode 'anInteger'->ArgumentVariableNode 'n'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_100, 1, 0, ((oop *)_state1), 0); _line(419); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= ((oop *)_state1)[4]; /* r */ _leave(); return _1; _leave(); } static struct __methodinfo __info101= { "<", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 426, 438, &__info95 }; static oop Integer___3c(oop v__closure, oop v_stateful_self, oop v_self, oop v_aNumber) { _enter(&__info101); oop _1= 0; oop _2= 0; oop _3= 0; _line(426); /* ifTrue: */ _1= 0; _2= v_aNumber; _line(428); _2=_sendv(s_isInteger, 1, _2); if (!_2) goto _l87; { /* ifTrue:ifFalse: */ _1= v_self; _line(430); _1=_sendv(s_negative, 1, _1); _2= v_aNumber; _line(430); _2=_sendv(s_negative, 1, _2); _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l88; { /* ifTrue:ifFalse: */ _1= v_self; _line(431); _1=_sendv(s_negative, 1, _1); if (!_1) goto _l90; { _1= v_self; _2= v_aNumber; _line(432); _1=_sendv(s_digitCompare_, 2, _1, _2); _2= l_102; if (1 & (long)_1) { _1= (((long)_1 > (long)_2) ? v_true : v_false); } else _1= _sendv(s__3e, 2, _1, _2); _leave(); return _1; } goto _l91; _l90:; { _1= v_self; _2= v_aNumber; _line(433); _1=_sendv(s_digitCompare_, 2, _1, _2); _2= l_102; if (1 & (long)_1) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); _leave(); return _1; } _l91:; } goto _l89; _l88:; { _1= v_self; _line(434); _1=_sendv(s_negative, 1, _1); _leave(); return _1; } _l89:; } _l87:; _1= v_aNumber; _2= v_self; _3= l_103; _line(435); _1=_sendv(s_adaptToInteger_andSend_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info104= { "digitCompare:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 438, 457, &__info101 }; static oop Integer__digitCompare_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger) { _enter(&__info104); oop v_length= 0; oop v_argLength= 0; oop v_digit= 0; oop v_argDigit= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_length; (void)v_argLength; (void)v_digit; (void)v_argDigit; _line(438); _1= v_self; _line(441); _1=_sendv(s_digitLength, 1, _1); v_length= _1; /* ifTrue: */ _1= 0; _2= v_anInteger; _line(442); _2=_sendv(s_digitLength, 1, _2); v_argLength= _2; _3= v_length; if (1 & (long)_2 & (long)_3) { _2= (((long)_2 != (long)_3) ? v_true : v_false); } else _2= _sendv(s__7e_3d, 2, _2, _3); if (!_2) goto _l92; { /* ifTrue:ifFalse: */ _1= v_argLength; _2= v_length; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 > (long)_2) ? v_true : v_false); } else _1= _sendv(s__3e, 2, _1, _2); if (!_1) goto _l93; { _1= l_105; } goto _l94; _l93:; { _1= l_106; } _l94:; _leave(); return _1; } _l92:; /* whileTrue: */ goto _l96; _l95:; { /* ifTrue: */ _1= 0; _2= v_anInteger; _3= v_length; _line(449); _2=_sendv(s_digitAt_, 2, _2, _3); v_argDigit= _2; _3= v_self; _4= v_length; _line(449); _3=_sendv(s_digitAt_, 2, _3, _4); v_digit= _3; if (1 & (long)_2 & (long)_3) { _2= (((long)_2 != (long)_3) ? v_true : v_false); } else _2= _sendv(s__7e_3d, 2, _2, _3); if (!_2) goto _l97; { /* ifTrue:ifFalse: */ _1= v_argDigit; _2= v_digit; if (1 & (long)_1 & (long)_2) { _1= (((long)_1 < (long)_2) ? v_true : v_false); } else _1= _sendv(s__3c, 2, _1, _2); if (!_1) goto _l98; { _1= l_106; } goto _l99; _l98:; { _1= l_105; } _l99:; _leave(); return _1; } _l97:; _1= v_length; _2= l_106; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_length= _1; } _l96:; { _1= v_length; _2= l_107; if (1 & (long)_1) { _1= (((long)_1 > (long)_2) ? v_true : v_false); } else _1= _sendv(s__3e, 2, _1, _2); } if (_1) goto _l95; _1= 0; _1= l_107; _leave(); return _1; _leave(); } static struct __methodinfo __info108= { "gcd:", "Integer", "/Users/piumarta/src/idst/object/st80/LargeInteger.st", 0, 457, 491, &__info104 }; static oop Integer__gcd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anInteger) { _enter(&__info108); oop v_higher= 0; oop v_u= 0; oop v_v= 0; oop v_k= 0; oop v_uHat= 0; oop v_vHat= 0; oop v_a= 0; oop v_b= 0; oop v_c= 0; oop v_d= 0; oop v_vPrime= 0; oop v_vPrimePrime= 0; oop v_q= 0; oop v_t= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; (void)v_higher; (void)v_u; (void)v_v; (void)v_k; (void)v_uHat; (void)v_vHat; (void)v_a; (void)v_b; (void)v_c; (void)v_d; (void)v_vPrime; (void)v_vPrimePrime; (void)v_q; (void)v_t; _line(457); _1= v_SmallInteger; _line(461); _1=_sendv(s_maxVal, 1, _1); _line(461); _1=_sendv(s_highBit, 1, _1); v_higher= _1; _1= v_self; _line(462); _1=_sendv(s_abs, 1, _1); _2= v_anInteger; _line(462); _2=_sendv(s_abs, 1, _2); v_v= _2; _line(462); _1=_sendv(s_max_, 2, _1, _2); v_u= _1; _1= v_self; _line(463); _1=_sendv(s_abs, 1, _1); _2= v_v; _line(463); _1=_sendv(s_min_, 2, _1, _2); v_v= _1; /* whileFalse: */ goto _l101; _l100:; { /* ifFalse: */ _1= 0; _2= v_u; _3= v_higher; _4= v_u; _line(466); _4=_sendv(s_highBit, 1, _4); { int _l= (long)_3 >> 1; int _r= (long)_4 >> 1; int _s= (_l - _r); if ((1 & (long)_3 & (long)_4) && ((_s ^ (_s << 1)) >= 0)) _3= (oop)(long)(_s << 1 | 1); else _3= _sendv(s__2d, 2, _3, _4); } v_k= _3; { int _l= (long)_2 >> 1, _r= (long)_3 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_2 & (long)_3) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s_bitShift_, 2, _2, _3); } v_uHat= _2; _line(466); _2=_sendv(s_isSmallInteger, 1, _2); if (_2) goto _l102; { _1= v_k; _2= l_109; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_k= _1; _1= v_uHat; _2= l_110; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } v_uHat= _1; } _l102:; _1= v_v; _2= v_k; { int _l= (long)_1 >> 1, _r= (long)_2 >> 1, _s= ((_r < 0) ? (_l >> -_r) : (_l << _r)); if ((1 & (long)_1 & (long)_2) && ( ( (_r >= 0) && (_r <= 31) && (_l == (_s >> _r)) && ((_s ^ (_s << 1)) >= 0) ) || ((_r < 0) && (_r >= -31)) )) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s_bitShift_, 2, _1, _2); } v_vHat= _1; _1= l_109; v_a= _1; _1= l_111; v_b= _1; _1= l_111; v_c= _1; _1= l_109; v_d= _1; /* whileTrue: */ goto _l104; _l103:; { _1= v_a; _2= v_q; _3= v_c; v_a= _3; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_c= _1; _1= v_b; _2= v_q; _3= v_d; v_b= _3; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_d= _1; _1= v_uHat; _2= v_q; _3= v_vHat; v_uHat= _3; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } v_vHat= _1; } _l104:; { /* and: */ _1= v_vHat; _2= v_d; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_vPrime= _1; _2= l_111; if (1 & (long)_1) { _1= (((long)_1 != (long)_2) ? v_true : v_false); } else _1= _sendv(s__7e_3d, 2, _1, _2); if (!_1) goto _l105; { /* and: */ _1= v_vHat; _2= v_c; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_vPrimePrime= _1; _2= l_111; if (1 & (long)_1) { _1= (((long)_1 != (long)_2) ? v_true : v_false); } else _1= _sendv(s__7e_3d, 2, _1, _2); if (!_1) goto _l106; { _1= v_uHat; _2= v_a; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } _2= v_vPrimePrime; _1= _sendv(s__2f_2f, 2, _1, _2); v_q= _1; _2= v_uHat; _3= v_b; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= _l + _r; if ((1 & (long)_2 & (long)_3) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2b, 2, _2, _3); } _3= v_vPrime; _2= _sendv(s__2f_2f, 2, _2, _3); if (1 & (long)_1 & (long)_2) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); } _l106:; } _l105:; } if (_1) goto _l103; _1= 0; /* ifTrue:ifFalse: */ _1= v_b; _2= l_111; if (1 & (long)_1) { _1= (((long)_1 == (long)_2) ? v_true : v_false); } else _1= _sendv(s__3d, 2, _1, _2); if (!_1) goto _l107; { _1= v_u; _2= v_v; v_u= _2; _line(484); _1=_sendv(s_rem_, 2, _1, _2); v_v= _1; } goto _l108; _l107:; { _1= v_u; _2= v_a; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } _2= v_v; _3= v_b; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_t= _1; _1= v_u; _2= v_c; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l * _r); if ((1 & (long)_1 & (long)_2) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2a, 2, _1, _2); } _2= v_v; _3= v_d; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l * _r); if ((1 & (long)_2 & (long)_3) && ((_r == 0) || (_s / _r == _l)) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2a, 2, _2, _3); } { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_v= _1; _1= v_t; v_u= _1; } _l108:; } _l101:; { _1= v_v; _line(464); _1=_sendv(s_isSmallInteger, 1, _1); } if (!_1) goto _l100; _1= 0; _1= v_v; _2= v_u; _line(489); _1=_sendv(s_gcd_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info= { "__id__init__", "", "LargeInteger.st", 0, 0, 0, &__info108 }; void __id__init__LargeInteger(struct __libid *__libid) { if (_libid) return; if (!(_libid= __libid)) { fprintf(stderr, "init _libid %p\n", __libid); abort(); } # define GC_add_roots _libid->gc_addRoots GC_INIT(); { struct _Selector *s= 0; for (s= _Selectors; s->name; ++s) *s->addr= _libid->intern(s->name); } _enter(&__info); _libid->infos(&__info, &__info1); _sendv(s__5fimport_, 3, _libid->_object, "Integer", "__id__init__Integer"); v__object= _libid->import("_object"); v__vector= _libid->import("_vector"); v_Object= _libid->import("Object"); v_UndefinedObject= _libid->import("UndefinedObject"); v_StaticBlockClosure= _libid->import("StaticBlockClosure"); v_BlockClosure= _libid->import("BlockClosure"); v_Magnitude= _libid->import("Magnitude"); v_Number= _libid->import("Number"); v_Integer= _libid->import("Integer"); v_SmallInteger= _libid->import("SmallInteger"); v_LargePositiveInteger= _libid->import("LargePositiveInteger"); v_LargeNegativeInteger= _libid->import("LargeNegativeInteger"); v_Collection= _libid->import("Collection"); v_SequenceableCollection= _libid->import("SequenceableCollection"); v_ArrayedCollection= _libid->import("ArrayedCollection"); v_Array= _libid->import("Array"); v_WordArray= _libid->import("WordArray"); v_ByteArray= _libid->import("ByteArray"); v_String= _libid->import("String"); v_ImmutableString= _libid->import("ImmutableString"); v_Symbol= _libid->import("Symbol"); v_true= _libid->import("true"); v_false= _libid->import("false"); _sendv(s__5fimport_, 3, _libid->_object, "LargePositiveInteger", "__id__init__LargePositiveInteger"); _sendv(s__5fimport_, 3, _libid->_object, "LargeNegativeInteger", "__id__init__LargeNegativeInteger"); _libid->method(v_Integer, s_new_neg_, (_imp_t)Integer__new_neg_); _libid->method(v_Integer, s_lastDigit, (_imp_t)Integer__lastDigit); _libid->method(v_Integer, s_growTo_, (_imp_t)Integer__growTo_); _libid->method(v_Integer, s_growBy_, (_imp_t)Integer__growBy_); l_6= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Integer, s_copyTo_, (_imp_t)Integer__copyTo_); l_8= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "+"); _libid->method(v_Integer, s__2b, (_imp_t)Integer___2b); l_10= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_11= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_13= _sendv(s_value_5f_, 2, v_SmallInteger, 255); l_14= _sendv(s_value_5f_, 2, v_SmallInteger, -8); _libid->method(v_Integer, s_digitAdd_, (_imp_t)Integer__digitAdd_); l_16= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "-"); _libid->method(v_Integer, s__2d, (_imp_t)Integer___2d); l_18= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_19= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_21= _sendv(s_value_5f_, 2, v_SmallInteger, 256); _libid->method(v_Integer, s_digitSubtract_, (_imp_t)Integer__digitSubtract_); l_23= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "*"); _libid->method(v_Integer, s__2a, (_imp_t)Integer___2a); l_25= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_26= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_29= _sendv(s_value_5f_, 2, v_SmallInteger, -8); l_30= _sendv(s_value_5f_, 2, v_SmallInteger, 255); _libid->method(v_Integer, s_digitMultiply_neg_, (_imp_t)Integer__digitMultiply_neg_); l_32= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_33= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 13, "division by 0"); l_34= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Integer, s__2f_2f, (_imp_t)Integer___2f_2f); l_36= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_37= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 4, "quo:"); _libid->method(v_Integer, s_quo_, (_imp_t)Integer__quo_); l_39= _sendv(s_value_5f_, 2, v_SmallInteger, 2); l_40= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_41= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_42= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "/"); _libid->method(v_Integer, s__2f, (_imp_t)Integer___2f); l_44= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_45= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_46= _sendv(s_value_5f_, 2, v_SmallInteger, 8); l_48= _sendv(s_value_5f_, 2, v_SmallInteger, 15); l_49= _sendv(s_value_5f_, 2, v_SmallInteger, 4); l_50= _sendv(s_value_5f_, 2, v_SmallInteger, -4); l_51= _sendv(s_value_5f_, 2, v_SmallInteger, -8); l_52= _sendv(s_value_5f_, 2, v_SmallInteger, 255); l_53= _sendv(s_value_5f_, 2, v_SmallInteger, 3); l_54= _sendv(s_value_5f_, 2, v_SmallInteger, 2); l_55= _sendv(s_value_5f_, 2, v_SmallInteger, 256); l_56= _sendv(s_value_5f_, 2, v_SmallInteger, 16); _libid->method(v_Integer, s_digitDiv_neg_, (_imp_t)Integer__digitDiv_neg_); l_60= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 7, "bitAnd:"); _libid->method(v_Integer, s_bitAnd_, (_imp_t)Integer__bitAnd_); l_62= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 6, "bitOr:"); _libid->method(v_Integer, s_bitOr_, (_imp_t)Integer__bitOr_); l_64= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 7, "bitXor:"); _libid->method(v_Integer, s_bitXor_, (_imp_t)Integer__bitXor_); _libid->method(v_Integer, s_bitClear_, (_imp_t)Integer__bitClear_); l_67= _sendv(s_value_5f_, 2, v_SmallInteger, -1); _libid->method(v_Integer, s_bitInvert, (_imp_t)Integer__bitInvert); l_69= _sendv(s_value_5f_, 2, v_SmallInteger, -1); l_70= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_71= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_73= _sendv(s_value_5f_, 2, v_SmallInteger, 256); l_74= _sendv(s_value_5f_, 2, v_SmallInteger, 255); _libid->method(v_Integer, s_digitLogic_op_length_, (_imp_t)Integer__digitLogic_op_length_); l_76= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_77= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 21, "negative displacement"); _libid->method(v_Integer, s__3c_3c, (_imp_t)Integer___3c_3c); l_79= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_80= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 21, "negative displacement"); _libid->method(v_Integer, s__3e_3e, (_imp_t)Integer___3e_3e); l_82= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Integer, s_bitShift_, (_imp_t)Integer__bitShift_); l_84= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_85= _sendv(s_value_5f_, 2, v_SmallInteger, 7); l_86= _sendv(s_value_5f_, 2, v_SmallInteger, -3); _libid->method(v_Integer, s_bitShiftMagnitude_, (_imp_t)Integer__bitShiftMagnitude_); l_88= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_89= _sendv(s_value_5f_, 2, v_SmallInteger, 7); l_90= _sendv(s_value_5f_, 2, v_SmallInteger, 8); l_91= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_92= _sendv(s_value_5f_, 2, v_SmallInteger, 255); _libid->method(v_Integer, s_digitLshift_, (_imp_t)Integer__digitLshift_); l_96= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_97= _sendv(s_value_5f_, 2, v_SmallInteger, 8); l_98= _sendv(s_value_5f_, 2, v_SmallInteger, 255); l_99= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Integer, s_digitRshift_bytes_lookfirst_, (_imp_t)Integer__digitRshift_bytes_lookfirst_); l_102= _sendv(s_value_5f_, 2, v_SmallInteger, 0); l_103= _sendv(s_size_5f_value_5f_, 3, v_Symbol, 1, "<"); _libid->method(v_Integer, s__3c, (_imp_t)Integer___3c); l_105= _sendv(s_value_5f_, 2, v_SmallInteger, -1); l_106= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_107= _sendv(s_value_5f_, 2, v_SmallInteger, 0); _libid->method(v_Integer, s_digitCompare_, (_imp_t)Integer__digitCompare_); l_109= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_110= _sendv(s_value_5f_, 2, v_SmallInteger, -1); l_111= _sendv(s_value_5f_, 2, v_SmallInteger, 0); _libid->method(v_Integer, s_gcd_, (_imp_t)Integer__gcd_); _leave(); }