#include "cdefs.h"
#include "mem.h"
#include "cint.h"
#include "cstring.h"
#include "cprocess.h"
#include "cintarray.h"
#include "cfloat.h"
extern cptr strpool_methods[meth_max];
extern cptr boolean_methods[meth_max];
extern cptr integer_methods[meth_max];
extern cptr float_methods[meth_max];
extern cptr entset_methods[meth_max];
extern cptr charset_methods[meth_max];
extern cptr strset_methods[meth_max];
extern cptr intset_methods[meth_max];
extern cptr boolset_methods[meth_max];
extern cptr debug_methods[meth_max];
extern cptr scope_methods[meth_max];
extern cptr slist_methods[meth_max];
extern cptr sset_methods[meth_max];
extern cptr sstring_methods[meth_max];

extern cint boolean_True;
extern cint strpool_str_6;
extern cint strpool_str_5;
extern cint strpool_str_7;
extern cint strpool_str_8;
extern cint strpool_str_9;
extern cint entset_predef;
extern cint intset_predef;
extern cint strset_predef;
extern cint strpool_str_30;
extern cint boolean_False;
extern cint scope_curr;
extern cint charset_predef;
extern cint boolset_predef;
extern cint strpool_str_1;
extern cint strpool_str_2;
extern cint strpool_str_3;
extern cint strpool_str_4;

cint object_Undefined;

cptr object_methods[meth_max];

cint object_init(){
  cint t1, t2, t3;
  t2 = mem_malloc(28); ((cptr)t2)[0] = object_methods;
  t3 = object_alloc((cint)t2);
  object_Undefined = t3;
  ((cptr)object_Undefined)[6] /* name_space*/ = object_Undefined;
  t1_label: return t1;
}

cint object_fini(){
  cint t4, t5;
  t5 = (cptr)(((cptr)(((cptr)object_Undefined)[0]))[4]); /* reclaim*/
  ((f0)t5)((cint)object_Undefined);
  t4_label: return t4;
}

cint object_alloc(cint object_self){
  cint object_result;
  cint t6;
  ((cptr)object_self)[1] /* refcount*/ = 1;
  ((cptr)object_self)[2] /* hashval*/ = 0;
  ((cptr)object_self)[3] /* len*/ = 0;
  ((cptr)object_self)[4] /* class_of*/ = strpool_str_1;
  ((cptr)object_self)[5] /* representation*/ = strpool_str_2;
  ((cptr)object_self)[6] /* name_space*/ = object_Undefined;
  t6 = object_self;
  goto t6_label;
  t6_label: return t6;
}

cint object_reclaim(cint object_self){
  cint t7;
  cstring_mem_free((cint)object_self);
  t7_label: return t7;
}

cint object_add_to(cint object_self, cint object_ob){
  cint object_result;
  cint t8;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t8 = object_Undefined;
  goto t8_label;
  t8_label: return t8;
}

cint object_All_but_last(cint object_self){
  cint object_result;
  cint t9;
  object_Dec_ref(object_self);
  t9 = object_Undefined;
  goto t9_label;
  t9_label: return t9;
}

cint object_Append(cint object_self, cint object_ob){
  cint object_result;
  cint t10;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t10 = object_Undefined;
  goto t10_label;
  t10_label: return t10;
}

cint object_Append_item(cint object_self, cint object_ob){
  cint object_result;
  cint t11, t12, t13, t14;
  t12 = ((cptr)(((cptr)object_self)[0]))[7];
  t13 = ((f0)t12)((cint)object_self, (cint)object_ob); /* Append*/
  t11 = t13;
  goto t11_label;
  t11_label: return t11;
}

cint object_Apply(cint object_self, cint object_params){
  cint object_result;
  cint t15;
  object_Dec_ref(object_self);
  object_Dec_ref(object_params);
  t15 = object_Undefined;
  goto t15_label;
  t15_label: return t15;
}

cint object_Apply_indirect(cint object_self, cint object_params){
  cint object_result;
  cint t16, t17, t18, t19;
  t17 = ((cptr)(((cptr)object_self)[0]))[9];
  t18 = ((f0)t17)((cint)object_self, (cint)object_params); /* Apply*/
  t16 = t18;
  goto t16_label;
  t16_label: return t16;
}

cint object_as_array(cint object_self){
  cint object_result;
  cint t20, t21, t22, t23, t24;
  t21 = ((cptr)object_self)[4] /* class_of*/ == strpool_str_30;
  if (t21){
    t22 = ((cptr)(((cptr)object_self)[0]))[365];
    t23 = ((f0)t22)((cint)object_self); /* as_array*/
    t20 = t23;
    goto t20_label;
  };
  t20 = 0;
  goto t20_label;
  t20_label: return t20;
}

cint object_as_int(cint object_self){
  cint object_result;
  cint t25;
  t25 = ((cptr)object_self)[2] /* hashval*/;
  goto t25_label;
  t25_label: return t25;
}

cint object_as_string(cint object_self){
  cint object_result;
  cint t26, t27, t28, t29, t30;
  t27 = ((cptr)object_self)[4] /* class_of*/ == strpool_str_6;
  if (t27){
    t28 = ((cptr)(((cptr)object_self)[0]))[366];
    t29 = ((f0)t28)((cint)object_self); /* as_string*/
    t26 = t29;
    goto t26_label;
  };
  t26 = 0;
  goto t26_label;
  t26_label: return t26;
}

cint object_Ascending(cint object_self){
  cint object_result;
  cint t31;
  object_Dec_ref(object_self);
  t31 = object_Undefined;
  goto t31_label;
  t31_label: return t31;
}

cint object_Assert(cint object_self){
  cint t32, t33;
  t33 = object_self != boolean_True;
  if (t33){
    ((cptr)strpool_str_3)[1] += 1;
    debug_message((cint)strpool_str_3);
    debug_interact();
  };
  t32_label: return t32;
}

cint object_Assign(cint object_self, cint object_new_val){
  cint t34, t35;
  t35 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t35)((cint)object_self, (cint)object_new_val, (cint)0);
  t34_label: return t34;
}

cint object_Assignment(cint object_self, cint object_new_val, cint object_scop, cint object_op){
  cint object_saved_curr;
  cint t36, t37;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t37 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t37)((cint)object_self, (cint)object_new_val, (cint)((cptr)object_op)[2] /* hashval*/);
  scope_curr = object_saved_curr;
  t36_label: return t36;
}

cint object_Assign_to_component(cint object_self, cint object_params, cint object_new_val, cint object_op){
  cint object_result;
  cint t38;
  object_Dec_ref(object_self);
  object_Dec_ref(object_params);
  object_Dec_ref(object_new_val);
  t38 = object_Undefined;
  goto t38_label;
  t38_label: return t38;
}

cint object_Call(cint object_self){
  cint t39;
  object_Dec_ref(object_self);
  t39_label: return t39;
}

cint object_Call_proc(cint object_self, cint object_scop){
  cint object_saved_curr;
  cint t40, t41;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t41 = (cptr)(((cptr)(((cptr)object_self)[0]))[16]); /* Call*/
  ((f0)t41)((cint)object_self);
  scope_curr = object_saved_curr;
  t40_label: return t40;
}

cint object_Call_with_params(cint object_self, cint object_params){
  cint t42, t43;
  object_Dec_ref(object_self);
  t43 = object_params != 0;
  if (t43){
    object_Dec_ref(object_params);
  };
  t42_label: return t42;
}

cint object_Codomain(cint object_self, cint object_ob){
  cint object_result;
  cint t44;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t44 = object_Undefined;
  goto t44_label;
  t44_label: return t44;
}

cint object_Contains(cint object_self, cint object_ob){
  cint object_result;
  cint t45;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t45 = object_Undefined;
  goto t45_label;
  t45_label: return t45;
}

cint object_copy_of(cint object_self){
  cint object_result;
  cint t46, t47, t48, t49;
  t47 = ((cptr)object_self)[1] /* refcount*/ <= 1;
  if (t47){
    t46 = object_self;
    goto t46_label;
  };
  object_Dec_ref(object_self);
  t48 = mem_malloc(28); ((cptr)t48)[0] = object_methods;
  t49 = object_alloc((cint)t48);
  t46 = t49;
  goto t46_label;
  t46_label: return t46;
}

cint object_Dec_ref(cint object_self){
  cint t50, t51, t52, t53, t54, t55, t56, t57, t58, t59;
  t51 = ((cptr)object_self)[1] /* refcount*/ - 1;
  ((cptr)object_self)[1] /* refcount*/ = t51;
  t52 = object_self == object_Undefined;
  t53 = t52;
  if (!t53){    t54 = object_self == boolean_True;
    t53 = t54;
  };
  t55 = t53;
  if (!t55){    t56 = object_self == boolean_False;
    t55 = t56;
  };
  if (t55){
    goto t50_label;
  };
  t57 = ((cptr)object_self)[1] /* refcount*/ < 0;
  if (t57){
    cprocess_exitt((cint)255);
  };
  t58 = ((cptr)object_self)[1] /* refcount*/ == 0;
  if (t58){
    t59 = (cptr)(((cptr)(((cptr)object_self)[0]))[4]); /* reclaim*/
    ((f0)t59)((cint)object_self);
  };
  t50_label: return t50;
}

cint object_Declare_as_const(cint object_self, cint object_val, cint object_scop){
  cint object_saved_curr;
  cint t60, t61;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t61 = (cptr)(((cptr)(((cptr)object_self)[0]))[24]); /* Declare_as_constant*/
  ((f0)t61)((cint)object_self, (cint)object_val);
  scope_curr = object_saved_curr;
  t60_label: return t60;
}

cint object_Declare_as_constant(cint object_self, cint object_val){
  cint t62;
  object_Dec_ref(object_self);
  object_Dec_ref(object_val);
  t62_label: return t62;
}

cint object_Declare_as_param(cint object_self, cint object_typ){
  cint t63;
  object_Dec_ref(object_self);
  object_Dec_ref(object_typ);
  t63_label: return t63;
}

cint object_Declare_as_parameter(cint object_self, cint object_typ, cint object_scop){
  cint object_saved_curr;
  cint t64, t65;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t65 = (cptr)(((cptr)(((cptr)object_self)[0]))[25]); /* Declare_as_param*/
  ((f0)t65)((cint)object_self, (cint)object_typ);
  scope_curr = object_saved_curr;
  t64_label: return t64;
}

cint object_Declare_as_var(cint object_self, cint object_typ, cint object_lno){
  cint object_result;
  cint t66;
  object_Dec_ref(object_self);
  object_Dec_ref(object_typ);
  t66 = object_Undefined;
  goto t66_label;
  t66_label: return t66;
}

cint object_Declare_as_variable(cint object_self, cint object_typ, cint object_lno, cint object_scop){
  cint object_result, object_saved_curr;
  cint t67, t68, t69, t70;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t68 = ((cptr)(((cptr)object_self)[0]))[27];
  t69 = ((f0)t68)((cint)object_self, (cint)object_typ, (cint)((cptr)object_lno)[2] /* hashval*/); /* Declare_as_var*/
  object_result = t69;
  scope_curr = object_saved_curr;
  t67 = object_result;
  goto t67_label;
  t67_label: return t67;
}

cint object_Delete_ith(cint object_self, cint object_i){
  cint object_result;
  cint t71;
  object_Dec_ref(object_self);
  t71 = object_Undefined;
  goto t71_label;
  t71_label: return t71;
}

cint object_Descending(cint object_self){
  cint object_result;
  cint t72;
  object_Dec_ref(object_self);
  t72 = object_Undefined;
  goto t72_label;
  t72_label: return t72;
}

cint object_Divide(cint object_self, cint object_ob){
  cint object_result;
  cint t73;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t73 = object_Undefined;
  goto t73_label;
  t73_label: return t73;
}

cint object_Divide_assign(cint object_self, cint object_new_val){
  cint t74, t75;
  t75 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t75)((cint)object_self, (cint)object_new_val, (cint)1);
  t74_label: return t74;
}

cint object_divide_into(cint object_self, cint object_ob){
  cint object_result;
  cint t76;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t76 = object_Undefined;
  goto t76_label;
  t76_label: return t76;
}

cint object_Domain(cint object_self, cint object_ob){
  cint object_result;
  cint t77;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t77 = object_Undefined;
  goto t77_label;
  t77_label: return t77;
}

cint object_End_parlist(cint object_self){
  cint object_result;
  cint t78;
  object_Dec_ref(object_self);
  t78 = object_Undefined;
  goto t78_label;
  t78_label: return t78;
}

cint object_Eq(cint object_self, cint object_ob){
  cint object_result;
  cint t79, t80, t81, t82;
  object_result = boolean_True;
  t80 = ((cptr)(((cptr)object_self)[0]))[37];
  t81 = ((f0)t80)((cint)object_self, (cint)object_ob); /* equal*/
  t82 = t81 == 0;
  if (t82){
    object_result = boolean_False;
  };
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t79 = object_result;
  goto t79_label;
  t79_label: return t79;
}

cint object_equal(cint object_self, cint object_ob){
  cint object_result;
  cint t83, t84;
  object_result = 0;
  t84 = object_self == object_ob;
  if (t84){
    object_result = 1;
  };
  t83 = object_result;
  goto t83_label;
  t83_label: return t83;
}

cint object_Eval(cint object_self){
  cint object_result;
  cint t85;
  t85 = object_self;
  goto t85_label;
  t85_label: return t85;
}

cint object_Evaluate(cint object_self, cint object_scop){
  cint object_result, object_saved_curr;
  cint t86, t87, t88, t89;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t87 = ((cptr)(((cptr)object_self)[0]))[38];
  t88 = ((f0)t87)((cint)object_self); /* Eval*/
  object_result = t88;
  scope_curr = object_saved_curr;
  t86 = object_result;
  goto t86_label;
  t86_label: return t86;
}

cint object_eval_target(cint object_self){
  cint object_result;
  cint t90;
  t90 = object_Undefined;
  goto t90_label;
  t90_label: return t90;
}

cint object_Expanded_with(cint object_self, cint object_ob){
  cint object_result;
  cint t91, t92, t93, t94, t95;
  object_result = entset_predef;
  t92 = ((cptr)object_ob)[4] /* class_of*/ == strpool_str_4;
  if (t92){
    object_result = boolset_predef;
  };
  t93 = ((cptr)object_ob)[4] /* class_of*/ == strpool_str_5;
  if (t93){
    object_result = intset_predef;
  };
  t94 = ((cptr)object_ob)[4] /* class_of*/ == strpool_str_6;
  if (t94){
    object_result = strset_predef;
  };
  t95 = ((cptr)object_ob)[5] /* representation*/ == strpool_str_7;
  if (t95){
    object_result = charset_predef;
  };
  object_Dec_ref(object_self);
  ((cptr)object_result)[1] += 1;
  t91 = object_result;
  goto t91_label;
  t91_label: return t91;
}

cint object_Exponentiate(cint object_self, cint object_ob){
  cint object_result;
  cint t96;
  object_result = object_Undefined;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t96 = object_result;
  goto t96_label;
  t96_label: return t96;
}

cint object_Export(cint object_self){
  cint t97;
  object_Dec_ref(object_self);
  goto t97_label;
  t97_label: return t97;
}

cint object_float_from(cint object_val){
  cint object_result;
  cint t98, t99, t100;
  t99 = mem_malloc(32); ((cptr)t99)[0] = float_methods;
  t100 = float_falloc((cint)t99, (cint)object_val);
  t98 = t100;
  goto t98_label;
  t98_label: return t98;
}

cint object_Ge(cint object_self, cint object_ob){
  cint object_result;
  cint t101, t102, t103, t104;
  object_result = boolean_True;
  t102 = ((cptr)(((cptr)object_self)[0]))[60];
  t103 = ((f0)t102)((cint)object_self, (cint)object_ob); /* less_than*/
  t104 = t103 == 1;
  if (t104){
    object_result = boolean_False;
  };
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t101 = object_result;
  goto t101_label;
  t101_label: return t101;
}

cint object_Get(cint object_self){
  cint t105;
  object_Dec_ref(object_self);
  t105_label: return t105;
}

cint object_Get_into(cint object_self, cint object_scop){
  cint object_saved_curr;
  cint t106, t107;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t107 = (cptr)(((cptr)(((cptr)object_self)[0]))[45]); /* Get*/
  ((f0)t107)((cint)object_self);
  scope_curr = object_saved_curr;
  t106_label: return t106;
}

cint object_get_index(cint object_self, cint object_ob){
  cint object_result;
  cint t108;
  t108 = 0;
  goto t108_label;
  t108_label: return t108;
}

cint object_Gt(cint object_self, cint object_ob){
  cint object_result;
  cint t109, t110, t111, t112, t113;
  object_result = boolean_True;
  t110 = ((cptr)(((cptr)object_self)[0]))[60];
  t111 = ((f0)t110)((cint)object_self, (cint)object_ob); /* less_than*/
  if (t111){
    object_result = boolean_False;
  }else{
  t112 = ((cptr)(((cptr)object_self)[0]))[37];
  t113 = ((f0)t112)((cint)object_self, (cint)object_ob); /* equal*/
  if (t113){
    object_result = boolean_False;
  };};
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t109 = object_result;
  goto t109_label;
  t109_label: return t109;
}

cint object_Import(cint object_self){
  cint t114;
  object_Dec_ref(object_self);
  goto t114_label;
  t114_label: return t114;
}

cint object_In(cint object_self, cint object_ob){
  cint object_result;
  cint t115, t116, t117, t118;
  t116 = ((cptr)(((cptr)object_ob)[0]))[20];
  t117 = ((f0)t116)((cint)object_ob, (cint)object_self); /* Contains*/
  t115 = t117;
  goto t115_label;
  t115_label: return t115;
}

cint object_incl(cint object_self, cint object_other){
  cint object_result;
  cint t119;
  t119 = 0;
  goto t119_label;
  t119_label: return t119;
}

cint object_inc_ref(cint object_self){
  cint object_result;
  cint t120, t121;
  object_result = object_self;
  t121 = ((cptr)object_result)[1] /* refcount*/ + 1;
  ((cptr)object_result)[1] /* refcount*/ = t121;
  t120 = object_result;
  goto t120_label;
  t120_label: return t120;
}

cint object_Indexed(cint object_self){
  cint object_result;
  cint t122;
  object_Dec_ref(object_self);
  t122 = object_Undefined;
  goto t122_label;
  t122_label: return t122;
}

cint object_integer_from(cint object_val){
  cint object_result;
  cint t123, t124, t125;
  t124 = mem_malloc(28); ((cptr)t124)[0] = integer_methods;
  t125 = integer_ialloc((cint)t124, (cint)object_val);
  t123 = t125;
  goto t123_label;
  t123_label: return t123;
}

cint object_Intersect(cint object_self, cint object_ob){
  cint object_result;
  cint t126;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t126 = object_Undefined;
  goto t126_label;
  t126_label: return t126;
}

cint object_iterate(cint object_self){
  cint object_result;
  cint t127;
  t127 = 0;
  goto t127_label;
  t127_label: return t127;
}

cint object_join(cint object_self, cint object_ob){
  cint object_result;
  cint t128;
  t128 = object_ob;
  goto t128_label;
  t128_label: return t128;
}

cint object_Lazy_eval(cint object_self){
  cint object_result;
  cint t129;
  t129 = object_self;
  goto t129_label;
  t129_label: return t129;
}

cint object_Le(cint object_self, cint object_ob){
  cint object_result;
  cint t130, t131, t132, t133, t134;
  object_result = boolean_False;
  t131 = ((cptr)(((cptr)object_self)[0]))[60];
  t132 = ((f0)t131)((cint)object_self, (cint)object_ob); /* less_than*/
  if (t132){
    object_result = boolean_True;
  }else{
  t133 = ((cptr)(((cptr)object_self)[0]))[37];
  t134 = ((f0)t133)((cint)object_self, (cint)object_ob); /* equal*/
  if (t134){
    object_result = boolean_True;
  };};
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t130 = object_result;
  goto t130_label;
  t130_label: return t130;
}

cint object_Lt(cint object_self, cint object_ob){
  cint object_result;
  cint t135, t136, t137, t138;
  object_result = boolean_False;
  t136 = ((cptr)(((cptr)object_self)[0]))[60];
  t137 = ((f0)t136)((cint)object_self, (cint)object_ob); /* less_than*/
  t138 = t137 == 1;
  if (t138){
    object_result = boolean_True;
  };
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t135 = object_result;
  goto t135_label;
  t135_label: return t135;
}

cint object_less_than(cint object_self, cint object_ob){
  cint object_result;
  cint t139;
  object_result = 0;
  t139 = 0;
  goto t139_label;
  t139_label: return t139;
}

cint object_List_of(cint object_self){
  cint object_result;
  cint t140;
  object_Dec_ref(object_self);
  t140 = object_Undefined;
  goto t140_label;
  t140_label: return t140;
}

cint object_list_from(cint object_arr){
  cint object_result, object_i;
  cint t141, t142, t143, t146, t147, t148, t149, t150;
  t142 = mem_malloc(40); ((cptr)t142)[0] = slist_methods;
  t143 = slist_alloc((cint)t142, (cint)0);
  object_result = t143;
  object_i = 0;
  t144:
  t146 = ((cptr)(object_arr))[object_i] != 0;
  if (!t146) goto t145;
    t147 = ((cptr)(((cptr)object_result)[0]))[7];
    t148 = ((f0)t147)((cint)object_result, (cint)((cptr)(object_arr))[object_i]); /* Append*/
    object_result = t148;
    t150 = object_i + 1;
    object_i = t150;
  goto t144;
  t145:;
  t141 = object_result;
  goto t141_label;
  t141_label: return t141;
}

cint object_lookup(cint object_self, cint object_i){
  cint object_result;
  cint t151;
  t151 = object_Undefined;
  goto t151_label;
  t151_label: return t151;
}

cint object_lookup_as_cint(cint object_self, cint object_i){
  cint object_result;
  cint t152;
  t152 = 0;
  goto t152_label;
  t152_label: return t152;
}

cint object_Make_elist(cint object_self, cint object_ob){
  cint object_result;
  cint t153;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t153 = object_Undefined;
  goto t153_label;
  t153_label: return t153;
}

cint object_Make_eset(cint object_self, cint object_ob){
  cint object_result;
  cint t154;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t154 = object_Undefined;
  goto t154_label;
  t154_label: return t154;
}

cint object_Make_filter(cint object_self, cint object_ob){
  cint object_result;
  cint t155;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t155 = object_Undefined;
  goto t155_label;
  t155_label: return t155;
}

cint object_Make_iterator(cint object_self, cint object_ob){
  cint object_result;
  cint t156;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t156 = object_Undefined;
  goto t156_label;
  t156_label: return t156;
}

cint object_Make_list(cint object_self){
  cint object_result;
  cint t157;
  object_Dec_ref(object_self);
  t157 = object_Undefined;
  goto t157_label;
  t157_label: return t157;
}

cint object_Make_name_list(cint object_self, cint object_ob){
  cint object_result;
  cint t158;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t158 = object_Undefined;
  goto t158_label;
  t158_label: return t158;
}

cint object_Make_name_lst(cint object_self, cint object_ob){
  cint object_result;
  cint t159, t160, t161, t162;
  t160 = ((cptr)(((cptr)object_self)[0]))[69];
  t161 = ((f0)t160)((cint)object_self, (cint)object_ob); /* Make_name_list*/
  t159 = t161;
  goto t159_label;
  t159_label: return t159;
}

cint object_Make_nested_iterator(cint object_self, cint object_t, cint object_s){
  cint object_result;
  cint t163;
  object_Dec_ref(object_self);
  object_Dec_ref(object_s);
  object_Dec_ref(object_t);
  t163 = object_Undefined;
  goto t163_label;
  t163_label: return t163;
}

cint object_Make_selec(cint object_self, cint object_ob){
  cint object_result;
  cint t164, t165, t166, t167;
  t165 = ((cptr)(((cptr)object_self)[0]))[73];
  t166 = ((f0)t165)((cint)object_self, (cint)object_ob); /* Make_selector*/
  t164 = t166;
  goto t164_label;
  t164_label: return t164;
}

cint object_Make_selector(cint object_self, cint object_ob){
  cint object_result;
  cint t168;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t168 = object_Undefined;
  goto t168_label;
  t168_label: return t168;
}

cint object_Make_set(cint object_self){
  cint object_result;
  cint t169;
  object_Dec_ref(object_self);
  t169 = object_Undefined;
  goto t169_label;
  t169_label: return t169;
}

cint object_Make_param(cint object_self, cint object_ob, cint object_scop){
  cint object_result, object_saved_curr;
  cint t170, t171, t172, t173;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t171 = ((cptr)(((cptr)object_self)[0]))[77];
  t172 = ((f0)t171)((cint)object_self, (cint)object_ob); /* Make_parameter*/
  object_result = t172;
  scope_curr = object_saved_curr;
  t170 = object_result;
  goto t170_label;
  t170_label: return t170;
}

cint object_Make_paramless(cint object_self, cint object_scop){
  cint object_result, object_saved_curr;
  cint t174, t175, t176, t177;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t175 = ((cptr)(((cptr)object_self)[0]))[78];
  t176 = ((f0)t175)((cint)object_self); /* Make_parameterless*/
  object_result = t176;
  scope_curr = object_saved_curr;
  t174 = object_result;
  goto t174_label;
  t174_label: return t174;
}

cint object_Make_parameter(cint object_self, cint object_ob){
  cint object_result;
  cint t178;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t178 = object_Undefined;
  goto t178_label;
  t178_label: return t178;
}

cint object_Make_parameterless(cint object_self){
  cint object_result;
  cint t179;
  object_Dec_ref(object_self);
  t179 = object_Undefined;
  goto t179_label;
  t179_label: return t179;
}

cint object_Mapped(cint object_self, cint object_ob){
  cint object_result;
  cint t180;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t180 = object_Undefined;
  goto t180_label;
  t180_label: return t180;
}

cint object_Max(cint object_self, cint object_ob){
  cint object_result;
  cint t181;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t181 = object_Undefined;
  goto t181_label;
  t181_label: return t181;
}

cint object_Merge(cint object_self, cint object_ob, cint object_f){
  cint object_result;
  cint t182;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  object_Dec_ref(object_f);
  t182 = object_Undefined;
  goto t182_label;
  t182_label: return t182;
}

cint object_Min(cint object_self, cint object_ob){
  cint object_result;
  cint t183;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t183 = object_Undefined;
  goto t183_label;
  t183_label: return t183;
}

cint object_Minus(cint object_self, cint object_ob){
  cint object_result;
  cint t184;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t184 = object_Undefined;
  goto t184_label;
  t184_label: return t184;
}

cint object_Minus_assign(cint object_self, cint object_new_val){
  cint t185, t186;
  t186 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t186)((cint)object_self, (cint)object_new_val, (cint)2);
  t185_label: return t185;
}

cint object_Mklist(cint object_self){
  cint object_result;
  cint t187, t188, t189, t190;
  t188 = ((cptr)(((cptr)object_self)[0]))[68];
  t189 = ((f0)t188)((cint)object_self); /* Make_list*/
  t187 = t189;
  goto t187_label;
  t187_label: return t187;
}

cint object_Mkmap(cint object_self){
  cint object_result;
  cint t191;
  object_Dec_ref(object_self);
  t191 = object_Undefined;
  goto t191_label;
  t191_label: return t191;
}

cint object_Mknum(cint object_self){
  cint object_result;
  cint t192;
  object_Dec_ref(object_self);
  t192 = object_Undefined;
  goto t192_label;
  t192_label: return t192;
}

cint object_Mkstr(cint object_self){
  cint object_result;
  cint t193, t194;
  t194 = object_self == object_Undefined;
  if (t194){
    ((cptr)strpool_str_8)[1] += 1;
    t193 = strpool_str_8;
    goto t193_label;
  };
  object_Dec_ref(object_self);
  ((cptr)strpool_str_9)[1] += 1;
  t193 = strpool_str_9;
  goto t193_label;
  t193_label: return t193;
}

cint object_Multiply(cint object_self, cint object_ob){
  cint object_result;
  cint t195;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t195 = object_Undefined;
  goto t195_label;
  t195_label: return t195;
}

cint object_Multiply_assign(cint object_self, cint object_new_val){
  cint t196, t197;
  t197 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t197)((cint)object_self, (cint)object_new_val, (cint)3);
  t196_label: return t196;
}

cint object_mult_with(cint object_self, cint object_ob){
  cint object_result;
  cint t198;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t198 = object_Undefined;
  goto t198_label;
  t198_label: return t198;
}

cint object_Negate(cint object_self){
  cint object_result;
  cint t199;
  object_Dec_ref(object_self);
  t199 = object_Undefined;
  goto t199_label;
  t199_label: return t199;
}

cint object_New(cint object_self){
  cint object_result;
  cint t200;
  object_Dec_ref(object_self);
  t200 = object_Undefined;
  goto t200_label;
  t200_label: return t200;
}

cint object_New_abstract(cint object_self, cint object_scop){
  cint object_result, object_saved_curr;
  cint t201, t202, t203, t204;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t202 = ((cptr)(((cptr)object_self)[0]))[93];
  t203 = ((f0)t202)((cint)object_self); /* New*/
  object_result = t203;
  scope_curr = object_saved_curr;
  t201 = object_result;
  goto t201_label;
  t201_label: return t201;
}

cint object_Not(cint object_self){
  cint object_result;
  cint t205;
  object_Dec_ref(object_self);
  t205 = boolean_False;
  goto t205_label;
  t205_label: return t205;
}

cint object_number_from(cint object_val){
  cint object_result;
  cint t206, t207, t208;
  t207 = mem_malloc(28); ((cptr)t207)[0] = integer_methods;
  t208 = integer_ialloc((cint)t207, (cint)object_val);
  t206 = t208;
  goto t206_label;
  t206_label: return t206;
}

cint object_OpAssign(cint object_self, cint object_new_val, cint object_op){
  cint t209;
  object_Dec_ref(object_self);
  object_Dec_ref(object_new_val);
  t209_label: return t209;
}

cint object_Plus(cint object_self, cint object_ob){
  cint object_result;
  cint t210;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t210 = object_Undefined;
  goto t210_label;
  t210_label: return t210;
}

cint object_Plus_assign(cint object_self, cint object_new_val){
  cint t211, t212;
  t212 = (cptr)(((cptr)(((cptr)object_self)[0]))[96]); /* OpAssign*/
  ((f0)t212)((cint)object_self, (cint)object_new_val, (cint)4);
  t211_label: return t211;
}

cint object_Powerset(cint object_self){
  cint object_result;
  cint t213;
  object_Dec_ref(object_self);
  t213 = object_Undefined;
  goto t213_label;
  t213_label: return t213;
}

cint object_Save_free_vars(cint object_self, cint object_fv){
  cint t214;
  object_Dec_ref(object_self);
  object_Dec_ref(object_fv);
  t214_label: return t214;
}

cint object_Set_attribute(cint object_self, cint object_aname, cint object_aval){
  cint object_result;
  cint t215;
  object_Dec_ref(object_self);
  object_Dec_ref(object_aname);
  object_Dec_ref(object_aval);
  t215 = object_Undefined;
  goto t215_label;
  t215_label: return t215;
}

cint object_set_from(cint object_arr){
  cint object_result, object_i;
  cint t216, t217, t218, t221, t222, t223, t224, t225;
  t217 = mem_malloc(48); ((cptr)t217)[0] = sset_methods;
  t218 = sset_alloc((cint)t217);
  object_result = t218;
  object_i = 0;
  t219:
  t221 = ((cptr)(object_arr))[object_i] != 0;
  if (!t221) goto t220;
    t222 = ((cptr)(((cptr)object_result)[0]))[7];
    t223 = ((f0)t222)((cint)object_result, (cint)((cptr)(object_arr))[object_i]); /* Append*/
    object_result = t223;
    t225 = object_i + 1;
    object_i = t225;
  goto t219;
  t220:;
  t216 = object_result;
  goto t216_label;
  t216_label: return t216;
}

cint object_Set_of(cint object_self, cint object_scop){
  cint object_result, object_saved_curr;
  cint t226, t227, t228, t229;
  object_saved_curr = scope_curr;
  scope_curr = object_scop;
  t227 = ((cptr)(((cptr)object_self)[0]))[99];
  t228 = ((f0)t227)((cint)object_self); /* Powerset*/
  object_result = t228;
  scope_curr = object_saved_curr;
  t226 = object_result;
  goto t226_label;
  t226_label: return t226;
}

cint object_Sort(cint object_self, cint object_ob){
  cint object_result;
  cint t230;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t230 = object_Undefined;
  goto t230_label;
  t230_label: return t230;
}

cint object_string_from(cint object_str){
  cint object_result;
  cint t231, t232, t233;
  t232 = mem_malloc(40); ((cptr)t232)[0] = sstring_methods;
  t233 = sstring_alloc((cint)t232, (cint)object_str);
  t231 = t233;
  goto t231_label;
  t231_label: return t231;
}

cint object_Subset(cint object_self, cint object_ob){
  cint object_result;
  cint t234;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t234 = boolean_False;
  goto t234_label;
  t234_label: return t234;
}

cint object_subtract_from(cint object_self, cint object_ob){
  cint object_result;
  cint t235;
  object_Dec_ref(object_self);
  object_Dec_ref(object_ob);
  t235 = object_Undefined;
  goto t235_label;
  t235_label: return t235;
}

cint object_Tail(cint object_self){
  cint object_result;
  cint t236;
  object_Dec_ref(object_self);
  t236 = object_Undefined;
  goto t236_label;
  t236_label: return t236;
}

cint object_Trim_trailing_undefineds(cint object_self){
  cint object_result;
  cint t237;
  t237 = object_self;
  goto t237_label;
  t237_label: return t237;
}

cint object_Trim_undefineds(cint object_self){
  cint object_result;
  cint t238, t239, t240, t241;
  t239 = ((cptr)(((cptr)object_self)[0]))[107];
  t240 = ((f0)t239)((cint)object_self); /* Trim_trailing_undefineds*/
  t238 = t240;
  goto t238_label;
  t238_label: return t238;
}

cint object_update_hashval(cint object_self, cint object_i){
  cint object_result;
  cint t242;
  object_Dec_ref(object_self);
  t242 = object_Undefined;
  goto t242_label;
  t242_label: return t242;
}

void init_object(){
  copy_meth_table(object_methods, entity_methods);
  object_methods[0] = 28;
  object_methods[1] = object_init;
  object_methods[2] = object_fini;
  object_methods[3] = object_alloc;
  object_methods[4] = object_reclaim;
  object_methods[5] = object_add_to;
  object_methods[6] = object_All_but_last;
  object_methods[7] = object_Append;
  object_methods[8] = object_Append_item;
  object_methods[9] = object_Apply;
  object_methods[10] = object_Apply_indirect;
  object_methods[365] = object_as_array;
  object_methods[294] = object_as_int;
  object_methods[366] = object_as_string;
  object_methods[11] = object_Ascending;
  object_methods[12] = object_Assert;
  object_methods[13] = object_Assign;
  object_methods[14] = object_Assignment;
  object_methods[15] = object_Assign_to_component;
  object_methods[16] = object_Call;
  object_methods[17] = object_Call_proc;
  object_methods[18] = object_Call_with_params;
  object_methods[19] = object_Codomain;
  object_methods[20] = object_Contains;
  object_methods[21] = object_copy_of;
  object_methods[22] = object_Dec_ref;
  object_methods[23] = object_Declare_as_const;
  object_methods[24] = object_Declare_as_constant;
  object_methods[25] = object_Declare_as_param;
  object_methods[26] = object_Declare_as_parameter;
  object_methods[27] = object_Declare_as_var;
  object_methods[28] = object_Declare_as_variable;
  object_methods[29] = object_Delete_ith;
  object_methods[30] = object_Descending;
  object_methods[31] = object_Divide;
  object_methods[32] = object_Divide_assign;
  object_methods[33] = object_divide_into;
  object_methods[34] = object_Domain;
  object_methods[35] = object_End_parlist;
  object_methods[36] = object_Eq;
  object_methods[37] = object_equal;
  object_methods[38] = object_Eval;
  object_methods[39] = object_Evaluate;
  object_methods[40] = object_eval_target;
  object_methods[41] = object_Expanded_with;
  object_methods[42] = object_Exponentiate;
  object_methods[43] = object_Export;
  object_methods[373] = object_float_from;
  object_methods[44] = object_Ge;
  object_methods[45] = object_Get;
  object_methods[46] = object_Get_into;
  object_methods[47] = object_get_index;
  object_methods[48] = object_Gt;
  object_methods[49] = object_Import;
  object_methods[50] = object_In;
  object_methods[52] = object_incl;
  object_methods[53] = object_inc_ref;
  object_methods[51] = object_Indexed;
  object_methods[368] = object_integer_from;
  object_methods[54] = object_Intersect;
  object_methods[55] = object_iterate;
  object_methods[56] = object_join;
  object_methods[57] = object_Lazy_eval;
  object_methods[58] = object_Le;
  object_methods[59] = object_Lt;
  object_methods[60] = object_less_than;
  object_methods[61] = object_List_of;
  object_methods[369] = object_list_from;
  object_methods[62] = object_lookup;
  object_methods[63] = object_lookup_as_cint;
  object_methods[64] = object_Make_elist;
  object_methods[65] = object_Make_eset;
  object_methods[66] = object_Make_filter;
  object_methods[67] = object_Make_iterator;
  object_methods[68] = object_Make_list;
  object_methods[69] = object_Make_name_list;
  object_methods[70] = object_Make_name_lst;
  object_methods[71] = object_Make_nested_iterator;
  object_methods[72] = object_Make_selec;
  object_methods[73] = object_Make_selector;
  object_methods[74] = object_Make_set;
  object_methods[75] = object_Make_param;
  object_methods[76] = object_Make_paramless;
  object_methods[77] = object_Make_parameter;
  object_methods[78] = object_Make_parameterless;
  object_methods[79] = object_Mapped;
  object_methods[80] = object_Max;
  object_methods[81] = object_Merge;
  object_methods[82] = object_Min;
  object_methods[83] = object_Minus;
  object_methods[84] = object_Minus_assign;
  object_methods[85] = object_Mklist;
  object_methods[86] = object_Mkmap;
  object_methods[87] = object_Mknum;
  object_methods[88] = object_Mkstr;
  object_methods[89] = object_Multiply;
  object_methods[90] = object_Multiply_assign;
  object_methods[91] = object_mult_with;
  object_methods[92] = object_Negate;
  object_methods[93] = object_New;
  object_methods[94] = object_New_abstract;
  object_methods[95] = object_Not;
  object_methods[374] = object_number_from;
  object_methods[96] = object_OpAssign;
  object_methods[97] = object_Plus;
  object_methods[98] = object_Plus_assign;
  object_methods[99] = object_Powerset;
  object_methods[100] = object_Save_free_vars;
  object_methods[101] = object_Set_attribute;
  object_methods[370] = object_set_from;
  object_methods[102] = object_Set_of;
  object_methods[103] = object_Sort;
  object_methods[371] = object_string_from;
  object_methods[104] = object_Subset;
  object_methods[105] = object_subtract_from;
  object_methods[106] = object_Tail;
  object_methods[107] = object_Trim_trailing_undefineds;
  object_methods[108] = object_Trim_undefineds;
  object_methods[109] = object_update_hashval;
}
