/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "compile_to_c.h"
void r240c_mapping_procedure_non_small_eiffel(T0* a1,T0* a2){
int _bfuc=0;
T0* _bf=NULL;
_bf=(((T906*)((T906*)a1)))->_base_feature/*44*/;
_bfuc=r883use_current(((T883*)_bf));
/*IF*/if ((!(_bfuc))&&(r324target_cannot_be_dropped(((T324*)(oBC364cpp))))) {
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms148_470));
/*]*/
}
/*FI*//*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),r883external_c_name(((T883*)_bf)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if (_bfuc) {
r324put_target_as_value(((T324*)(oBC364cpp)));
}
/*FI*//*IF*/if ((r906arg_count(((T906*)a1)))>(0)) {
/*IF*/if (_bfuc) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/r324put_arguments(((T324*)(oBC364cpp)));
}
/*FI*//*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms148_470));
/*]*/
}
void r240c_mapping_function_non_small_eiffel(T0* a1,T0* a2){
int _tcbd=0;
int _bfuc=0;
T0* _bf=NULL;
_bf=(((T892*)((T892*)a1)))->_base_feature/*48*/;
_bfuc=r679use_current(((T679*)_bf));
/*IF*/if (!(_bfuc)) {
_tcbd=r324target_cannot_be_dropped(((T324*)(oBC364cpp)));
/*IF*/if (_tcbd) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
/*FI*//*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),r679external_c_name(((T679*)_bf)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if (_bfuc) {
r324put_target_as_value(((T324*)(oBC364cpp)));
}
/*FI*//*IF*/if ((r892arg_count(((T892*)a1)))>(0)) {
/*IF*/if (_bfuc) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/r324put_arguments(((T324*)(oBC364cpp)));
}
/*FI*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if ((!(_bfuc))&&(_tcbd)) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
/*No:NATIVE_INLINE_WITH_CURRENT.c_define_function*/
/*No:NATIVE_INLINE_WITH_CURRENT.fz_14*/
/*No:NATIVE_INLINE_WITH_CURRENT.c_define_procedure*/
/*No:NATIVE_INLINE_WITH_CURRENT.stupid_switch*/
/*No:NATIVE_INLINE_WITH_CURRENT.c_mapping_procedure*/
/*No:NATIVE_INLINE_WITH_CURRENT.c_mapping_function*/
/*No:NATIVE_INLINE_WITH_CURRENT.use_current*/
void r913get_started(T913* C,T0* a1){
int _i=0;
_i=1;
while (!((_i)>((((T764*)((T764*)((((T913*)C))->_list/*0*/))))->_upper/*8*/))) {
r153add_into(((T153*)(r764item(((T764*)((((T913*)C))->_list/*0*/)),_i))),a1);
_i=(_i)+(1);
}
}
/*No:FEATURE_CLAUSE_LIST.make*/
/*No:FEATURE_CLAUSE_LIST.list*/
/*No:FEATURE_CLAUSE_LIST.add_last*/
int r870id(T870* C){
int R=0;
R=X291id((((T870*)C))->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_4.arguments*/
int r870result_is_current(T870* C){
int R=0;
T0* _e=NULL;
_e=r870body_one_result(C);
/*IF*/if (((_e)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
/*IF*/if (X662is_current(_e)) {
R=1;
}
/*FI*/}
/*FI*/return R;
}
int r870direct_call(T870* C){
int R=0;
T0* _rf4=NULL;
T0* _args=NULL;
T0* _c=NULL;
T0* _e=NULL;
_e=r870body_one_result(C);
/*IF*/if ((((_e)!=((void*)(NULL)))&&(((((T870*)C))->_arguments/*20*/)==((void*)(NULL))))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_c=_e;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};/*IF*/if ((_c)!=((void*)(NULL))) {
/*IF*/if (X662is_current(/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/))) {
_rf4=X295run_feature(_c);
if(NULL!=(_rf4))switch(((T0*)_rf4)->id) {
case 870: 
break;
default:
_rf4=NULL;
};/*IF*/if ((_rf4)!=((void*)(NULL))) {
_args=X295arguments(_c);
/*IF*/if ((_args)==((void*)(NULL))) {
R=1;
}
else {
R=X431is_static(_args);
}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.C_result_is_current*/
int r870dc_pco1(T870* C){
int R=0;
T0* _rf6=NULL;
T0* _c=NULL;
_c=r870body_one_dc_pco(C);
/*IF*/if (((_c)!=((void*)(NULL)))&&(X662is_current(/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/)))) {
_rf6=X295run_feature(_c);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 868: 
break;
default:
_rf6=NULL;
};/*IF*/if ((_rf6)!=((void*)(NULL))) {
R=!(r868use_current(((T868*)_rf6)));
}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.C_dc_pco2*/
/*No:RUN_FEATURE_4.ucs_true*/
T0* r870body_one_result_dca(T870* C){
T0* R=NULL;
T0* _r=NULL;
T0* _rf=NULL;
T0* _rf2=NULL;
T0* _c0c=NULL;
T0* _c=NULL;
_c=r870body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};/*IF*/if ((_c)!=((void*)(NULL))) {
_c0c=/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/);
if(NULL!=(_c0c))switch(((T0*)_c0c)->id) {
case 487: 
break;
default:
_c0c=NULL;
};/*IF*/if ((_c0c)!=((void*)(NULL))) {
/*IF*/if (X662is_current((((T487*)((T487*)_c0c)))->_target/*12*/)) {
_rf2=(((T487*)((T487*)_c0c)))->_run_feature/*20*/;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 820: 
break;
default:
_rf2=NULL;
};/*IF*/if ((_rf2)!=((void*)(NULL))) {
_r=(((T355*)((T355*)(r820run_class(((T820*)_rf2))))))->_running/*12*/;
/*IF*/if (((_r)!=((void*)(NULL)))&&((r396count(((T396*)_r)))==(1))) {
_rf=X295run_feature(_c);
/*IF*/if ((_rf)!=((void*)(NULL))) {
_r=(((T355*)((T355*)(X496run_class(_rf)))))->_running/*12*/;
/*IF*/if (((_r)!=((void*)(NULL)))&&((r396count(((T396*)_r)))==(1))) {
R=_c;
}
/*FI*/}
else {
R=_c;
}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
int r870dc_pco2(T870* C){
int R=0;
T0* _rf6=NULL;
T0* _c2=NULL;
T0* _c1=NULL;
_c1=r870body_one_dc_pco(C);
/*IF*/if ((_c1)!=((void*)(NULL))) {
_c2=/*X295*/((T0*)(((T121*)((T121*)_c1)))->_target/*12*/);
if(NULL!=(_c2))switch(((T0*)_c2)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c2=NULL;
};/*IF*/if ((_c2)!=((void*)(NULL))) {
_rf6=X295run_feature(_c2);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 868: 
break;
default:
_rf6=NULL;
};/*IF*/if ((((_rf6)!=((void*)(NULL)))&&(!(r868use_current(((T868*)_rf6)))))&&(X662is_current(/*X295*/((T0*)(((T121*)((T121*)_c2)))->_target/*12*/)))) {
R=1;
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
void r870c_define(T870* C){
/*IF*/if (r870isa_in_line(C)) {
r324incr_inlined_function_count(((T324*)(oBC364cpp)));
r870nothing_comment(C);
}
else {
/*IF*/if (r870use_current(C)) {
r324incr_function_count(((T324*)(oBC364cpp)));
}
else {
r324incr_real_function_count(((T324*)(oBC364cpp)));
}
/*FI*/r870define_prototype(C);
r870define_opening(C);
/*IF*/if (((((T870*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
r592compile_to_c(((T592*)((((T870*)C))->_routine_body/*32*/)));
}
/*FI*/r870define_closing(C);
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms149_470));
/*]*/
}
/*FI*/}
/*No:RUN_FEATURE_4.rescue_compound*/
/*No:RUN_FEATURE_4.actuals_clients*/
void r870nothing_comment(T870* C){
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms118_470));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms4_496));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),X291run_time_mark((((T870*)C))->_current_type/*4*/));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\56';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),X776to_string((((T870*)C))->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms81_470));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\n';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_4.C_value_reader*/
void r870define_closing(T870* C){
/*IF*/if (r870use_current(C)) {
r324current_class_invariant(((T324*)(oBC364cpp)),(((T870*)C))->_current_type/*4*/);
}
/*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
/*IF*/if (((((T870*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
r633compile_to_c(((T633*)((((T870*)C))->_ensure_assertion/*36*/)));
}
/*FI*/}
/*FI*//*IF*/if (r590no_check(((T590*)(oBC364run_control)))) {
/*[IRF3.6rs_unlink*/{T324* C1=((T324*)(oBC364cpp));
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)C1))->_current_out/*56*/)),((T0*)ms156_324));
/*]*/
}/*]*/
}
/*FI*/}
int r870empty_or_null_body(T870* C){
int R=0;
T0* _rb=NULL;
_rb=(((T870*)C))->_routine_body/*32*/;
/*IF*/if ((((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((((T592*)((T592*)_rb)))->_list/*8*/)==(NULL)/*)*/))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
C->_static_value_mem=0;
C->_is_static_flag=1;
R=1;
}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.ucs_in_computation*/
void r870make(T870* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
r199put(((T199*)((((T355*)((T355*)(r870run_class(C)))))->_feature_dictionary/*24*/)),(T0*)C,X776to_key(a2));
r604incr_magic_count(((T604*)(oBC364small_eiffel)));
C->_use_current_state=1005;
r604push(((T604*)(oBC364small_eiffel)),(T0*)C);
r870initialize(C);
r604pop(((T604*)(oBC364small_eiffel)));
}
void r870std_compute_use_current(T870* C){
/*IF*/if (((((T870*)C))->_use_current_state/*44*/)==(1006)) {
/*IF*/if (((((T870*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
/*IF*/if (r567use_current(((T567*)((((T870*)C))->_require_assertion/*28*/)))) {
C->_use_current_state=1004;
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_use_current_state/*44*/)==(1006)) {
/*IF*/if (((((T870*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
/*IF*/if (r592use_current(((T592*)((((T870*)C))->_routine_body/*32*/)))) {
C->_use_current_state=1004;
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_use_current_state/*44*/)==(1006)) {
/*IF*/if (((((T870*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
/*IF*/if (r633use_current(((T633*)((((T870*)C))->_ensure_assertion/*36*/)))) {
C->_use_current_state=1004;
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_use_current_state/*44*/)==(1006)) {
C->_use_current_state=1003;
}
/*FI*/}
/*No:RUN_FEATURE_4.name*/
void r870default_mapping_function(T870* C){
r870mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r324put_target_as_target(((T324*)(oBC364cpp)));
/*IF*/if ((r870arg_count(C))>(0)) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r324put_arguments(((T324*)(oBC364cpp)));
}
/*FI*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
void r870mapping_name(T870* C){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='r';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r544put_integer(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),r870id(C));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),X776to_key((((T870*)C))->_name/*16*/));
/*]*/
}
int r870arg_count(T870* C){
int R=0;
/*IF*/if (((((T870*)C))->_arguments/*20*/)!=((void*)(NULL))) {
R=/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T870*)C))->_arguments/*20*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/;
}
/*FI*/return R;
}
void r870routine_afd_check(T870* C){
/*IF*/if (((((T870*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
r567afd_check(((T567*)((((T870*)C))->_require_assertion/*28*/)));
}
/*FI*//*IF*/if (((((T870*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
r592afd_check(((T592*)((((T870*)C))->_routine_body/*32*/)));
}
/*FI*//*IF*/if (((((T870*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
r633afd_check(((T633*)((((T870*)C))->_ensure_assertion/*36*/)));
}
/*FI*/}
/*No:RUN_FEATURE_4.fz_open_c_comment*/
int r870attribute_reader(T870* C){
int R=0;
T0* _rf2=NULL;
T0* _c0=NULL;
T0* _e=NULL;
_e=r870body_one_result(C);
/*IF*/if (((_e)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 180: case 990: case 767: case 72: case 487: 
break;
default:
_c0=NULL;
};/*IF*/if ((_c0)!=((void*)(NULL))) {
/*IF*/if (X662is_current(/*X752*/((T0*)(((T180*)((T180*)_c0)))->_target/*12*/))) {
_rf2=X752run_feature(_c0);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 820: 
break;
default:
_rf2=NULL;
};/*IF*/if ((_rf2)!=((void*)(NULL))) {
R=1;
}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.local_vars*/
int r870dca(T870* C){
int R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r870body_one_result_dca(C);
/*IF*/if (((_c)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_rf=X295run_feature(_c);
/*IF*/if ((_rf)!=((void*)(NULL))) {
/*IF*/if ((_rf)!=((void*)(C))) {
_args=X295arguments(_c);
/*IF*/if ((_args)==((void*)(NULL))) {
R=(r870arg_count(C))==(0);
}
else {
R=X431isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.base_feature*/
void r870define_opening(T870* C){
T0* _t=NULL;
int _i=0;
/*IF*/if (((((T870*)C))->_result_type/*24*/)!=((void*)(NULL))) {
_t=X291run_type((((T870*)C))->_result_type/*24*/);
/*[IRF3.3clear*/((((T7*)(((T7*)(oBC496c_code)))))->_count)=(0);
/*]*/
X291c_type_for_result_in(_t,oBC496c_code);
r7extend(((T7*)(oBC496c_code)),'\40');
r7extend(((T7*)(oBC496c_code)),'R');
r7extend(((T7*)(oBC496c_code)),'\75');
X291c_initialize_in(_t,oBC496c_code);
r7append(((T7*)(oBC496c_code)),((T0*)ms134_470));
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),oBC496c_code);
/*]*/
}
/*FI*//*IF*/if (((((T870*)C))->_local_vars/*52*/)!=((void*)(NULL))) {
r620compile_to_c(((T620*)((((T870*)C))->_local_vars/*52*/)));
}
/*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
/*IF*/if (((((T870*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
r633compile_to_c_old(((T633*)((((T870*)C))->_ensure_assertion/*36*/)));
}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_local_vars/*52*/)!=((void*)(NULL))) {
r620initialize_expanded(((T620*)((((T870*)C))->_local_vars/*52*/)));
}
/*FI*//*IF*/if (r590no_check(((T590*)(oBC364run_control)))) {
r324rs_link(((T324*)(oBC364cpp)),(T0*)C);
/*IF*/if (r870use_current(C)) {
/*[IRF3.6rs_push_current*/{T324* C1=((T324*)(oBC364cpp));
T0* b1=(((T870*)C))->_current_type/*4*/;
r324rs_push(C1,((T0*)ms143_473),((T0*)ms157_324),b1);
}/*]*/
}
/*FI*/_i=1;
while (!((_i)>(r870arg_count(C)))) {
_t=X291run_type(r31type(((T31*)((((T870*)C))->_arguments/*20*/)),_i));
r324rs_push_argument(((T324*)(oBC364cpp)),(((T873*)((T873*)(/*(IRF4.6name*/r65item(((T65*)((((T31*)((T31*)((((T870*)C))->_arguments/*20*/))))->_flat_list/*12*/)),_i)/*)*/))))->_to_string/*12*/,_i,_t);
_i=(_i)+(1);
}
/*IF*/if (((((T870*)C))->_result_type/*24*/)!=((void*)(NULL))) {
/*[IRF3.6rs_push_result*/{T324* C1=((T324*)(oBC364cpp));
T0* b1=X291run_type((((T870*)C))->_result_type/*24*/);
r324rs_push(C1,((T0*)ms146_473),((T0*)ms158_324),b1);
}/*]*/
}
/*FI*//*IF*/if (((((T870*)C))->_local_vars/*52*/)!=((void*)(NULL))) {
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T733*)((T733*)((((T620*)((T620*)((((T870*)C))->_local_vars/*52*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/))) {
r39c_trace(((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)((T620*)((((T870*)C))->_local_vars/*52*/))))->_flat_list/*12*/)),_i)/*)*/)));
_i=(_i)+(1);
}
}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_require_assertion/*28*/)!=((void*)(NULL))) {
r567compile_to_c(((T567*)((((T870*)C))->_require_assertion/*28*/)));
}
/*FI*/}
/*No:RUN_FEATURE_4.start_position*/
/*No:RUN_FEATURE_4.fz_close_c_comment*/
/*No:RUN_FEATURE_4.fz_00*/
T0* r870body_one_result(T870* C){
T0* R=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(((T870*)C))->_routine_body/*32*/;
/*IF*/if (((_rb)!=((void*)(NULL)))&&((r592count(((T592*)_rb)))==(1))) {
_a=r592first(((T592*)_rb));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};/*IF*/if ((_a)!=((void*)(NULL))) {
/*IF*/if (X662is_result((((T629*)((T629*)_a)))->_left_side/*8*/)) {
R=(((T629*)((T629*)_a)))->_right_side/*12*/;
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.ensure_assertion*/
int r870is_exported_in(T870* C,T0* a1){
int R=0;
R=r636gives_permission_to(((T636*)(r870clients(C))),a1);
return R;
}
T0* r870is_direct_call_on_attribute(T870* C){
T0* R=NULL;
T0* _rf=NULL;
T0* _c=NULL;
/*IF*/if (r870isa_in_line(C)) {
{int z1=(((T870*)C))->_in_line_status/*60*/;

if((6==z1)){
_c=r870body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};_c=/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};_rf=X295run_feature(_c);
R=/*X496*/((T0*)(((T832*)((T832*)_rf)))->_name/*16*/);
}
}
}
/*FI*/return R;
}
void r870compute_use_current(T870* C){
/*IF*/if ((X291is_reference((((T870*)C))->_current_type/*4*/))&&(r590no_check(((T590*)(oBC364run_control))))) {
C->_use_current_state=1004;
}
else {
r870std_compute_use_current(C);
}
/*FI*/}
/*No:RUN_FEATURE_4.result_type*/
/*No:RUN_FEATURE_4.in_line_status*/
/*No:RUN_FEATURE_4.fz_13*/
/*No:RUN_FEATURE_4.C_a_eq_neq*/
int r870a_eq_neq(T870* C){
int R=0;
T0* _e=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r870body_one_result_dca(C);
/*IF*/if (((_c)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_rf=X295run_feature(_c);
/*IF*/if (((_rf)==((void*)(NULL)))&&((X295arg_count(_c))==(1))) {
_e=X431expression(X295arguments(_c),1);
{int z1=X662isa_dca_inline_argument(_e);

if((0==z1)){
}
 else 
if((-1==z1)){
R=(r870arg_count(C))==(0);
}
 else{R=(r870arg_count(C))==(1);
}}
}
/*FI*/}
/*FI*/return R;
}
int r870is_static(T870* C){
int R=0;
/*IF*/if (r870isa_in_line(C)) {
R=(((T870*)C))->_is_static_flag/*64*/;
}
/*FI*/return R;
}
int r870value_reader(T870* C){
int R=0;
T0* _c0=NULL;
T0* _e=NULL;
_e=r870body_one_result(C);
/*IF*/if (((_e)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 180: case 990: case 767: case 72: case 487: 
break;
default:
_c0=NULL;
};/*IF*/if ((((_c0)!=((void*)(NULL)))&&(X662is_current(/*X752*/((T0*)(((T180*)((T180*)_c0)))->_target/*12*/))))&&((X752run_feature(_c0))==((void*)(C)))) {
r683add_position(X662start_position(_e));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_870);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
 else if (X662is_static(_e)) {
R=1;
C->_static_value_mem=X662static_value(_e);
C->_is_static_flag=1;
}
/*FI*/}
/*FI*/return R;
}
void r870add_client(T870* C,T0* a1){
int _i=0;
/*IF*/if (((((T870*)C))->_actuals_clients/*12*/)==((void*)(NULL))) {
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r187add_last(((T187*)((((T870*)C))->_actuals_clients/*12*/)),a1);
}
else {
_i=r187fast_index_of(((T187*)((((T870*)C))->_actuals_clients/*12*/)),a1);
/*IF*/if ((_i)>((((T187*)((T187*)((((T870*)C))->_actuals_clients/*12*/))))->_upper/*8*/)) {
r187add_last(((T187*)((((T870*)C))->_actuals_clients/*12*/)),a1);
}
/*FI*/}
/*FI*/r355add_client(((T355*)(r870run_class(C))),a1);
}
/*No:RUN_FEATURE_4.fz_15*/
T0*oBC870tmp_string=NULL;
/*No:RUN_FEATURE_4.require_assertion*/
/*No:RUN_FEATURE_4.use_current_state*/
int r870isa_in_line(T870* C){
int R=0;
/*IF*/if (r590boost(((T590*)(oBC364run_control)))) {
{int z1=(((T870*)C))->_in_line_status/*60*/;

if((-1==z1)){
}
 else 
if((0==z1)){
R=1;
/*IF*/if (r870empty_or_null_body(C)) {
C->_in_line_status=1;
}
 else if (r870value_reader(C)) {
C->_in_line_status=2;
}
 else if (r870attribute_reader(C)) {
C->_in_line_status=3;
}
 else if (r870result_is_current(C)) {
C->_in_line_status=4;
}
 else if (r870direct_call(C)) {
C->_in_line_status=5;
}
 else if (r870dca(C)) {
C->_in_line_status=6;
}
 else if (r870a_eq_neq(C)) {
C->_in_line_status=7;
}
 else if (r870dc_pco1(C)) {
C->_in_line_status=8;
}
 else if (r870dc_pco2(C)) {
C->_in_line_status=9;
}
 else if (r870direct_cse_call(C)) {
C->_in_line_status=10;
}
else {
C->_in_line_status=-(1);
R=0;
}
/*FI*/}
 else{R=1;
}}
}
/*FI*/return R;
}
T0* r870body_one_dc_pco(T870* C){
T0* R=NULL;
T0* _args=NULL;
T0* _c=NULL;
_c=r870body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};/*IF*/if ((((_c)!=((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL))))&&(((((T870*)C))->_arguments/*20*/)==((void*)(NULL)))) {
_args=X295arguments(_c);
/*IF*/if (((_args)==((void*)(NULL)))||(X431is_static(_args))) {
R=_c;
}
/*FI*/}
/*FI*/return R;
}
int r870can_be_dropped(T870* C){
int R=0;
R=((((((((T870*)C))->_arguments/*20*/)==((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL))))&&(((((T870*)C))->_require_assertion/*28*/)==((void*)(NULL))))&&(((((T870*)C))->_ensure_assertion/*36*/)==((void*)(NULL))))&&(((((T870*)C))->_rescue_compound/*40*/)==((void*)(NULL)));
/*IF*/if (R) {
/*IF*/if (((((T870*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
R=0;
}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.C_dca*/
/*No:RUN_FEATURE_4.current_type*/
T0* r870run_class(T870* C){
T0* R=NULL;
R=X291run_class((((T870*)C))->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_4.C_empty_or_null_body*/
/*No:RUN_FEATURE_4.static_value_mem*/
void r870define_prototype(T870* C){
int _mem_id=0;
_mem_id=r870id(C);
/*[IRF3.3clear*/((((T7*)(((T7*)(oBC496c_code)))))->_count)=(0);
/*]*/
/*IF*/if (((((T870*)C))->_result_type/*24*/)==((void*)(NULL))) {
r7append(((T7*)(oBC496c_code)),((T0*)ms133_470));
}
else {
X291c_type_for_result_in(X291run_type((((T870*)C))->_result_type/*24*/),oBC496c_code);
}
/*FI*/r7extend(((T7*)(oBC496c_code)),'\40');
r7extend(((T7*)(oBC496c_code)),'r');
r2append_in(_mem_id,oBC496c_code);
X776mapping_c_in((((T870*)C))->_name/*16*/,oBC496c_code);
r7extend(((T7*)(oBC496c_code)),'\50');
/*IF*/if (r870use_current(C)) {
X291c_type_for_target_in((((T870*)C))->_current_type/*4*/,oBC496c_code);
r7extend(((T7*)(oBC496c_code)),'\40');
r7extend(((T7*)(oBC496c_code)),'C');
/*IF*/if (((((T870*)C))->_arguments/*20*/)!=((void*)(NULL))) {
r7extend(((T7*)(oBC496c_code)),'\54');
}
/*FI*/}
/*FI*//*IF*/if (((((T870*)C))->_arguments/*20*/)==((void*)(NULL))) {
/*IF*/if (!(r870use_current(C))) {
r7append(((T7*)(oBC496c_code)),((T0*)ms133_470));
}
/*FI*/}
else {
r31compile_to_c_in(((T31*)((((T870*)C))->_arguments/*20*/)),oBC496c_code);
}
/*FI*/r7extend(((T7*)(oBC496c_code)),'\51');
r324put_c_heading(((T324*)(oBC364cpp)),oBC496c_code);
/*[IRF3.3swap_on_c*/((((T324*)(((T324*)(oBC364cpp)))))->_current_out)=(oBC324out_c);
/*]*/
}
/*No:RUN_FEATURE_4.is_static_flag*/
/*No:RUN_FEATURE_4.ucs_not_computed*/
void r870in_line(T870* C){
T0* _cien=NULL;
T0* _rf=NULL;
T0* _c=NULL;
int _flag=0;
T0* _e=NULL;
T0* _a=NULL;
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms2_870));
/*]*/
/*[IRF3.5put_integer*/r544put_integer(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),(((T870*)C))->_in_line_status/*60*/);
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),X776to_string((((T870*)C))->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms81_470));
/*]*/
{int z1=(((T870*)C))->_in_line_status/*60*/;

if((1==z1)){
_flag=r324cannot_drop_all(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/X291c_initialize(X291run_type((((T870*)C))->_result_type/*24*/));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
 else 
if((2==z1)){
_flag=r324cannot_drop_all(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_e=(((T629*)((T629*)_a)))->_right_side/*12*/;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
X662compile_to_c(_e);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
 else 
if((3==z1)){
_flag=r324arguments_cannot_be_dropped(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_c=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};X496mapping_c(X295run_feature(_c));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
 else 
if((4==z1)){
_flag=r324arguments_cannot_be_dropped(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC870tmp_string)))))->_count)=(0);
/*]*/
r7extend(((T7*)(oBC870tmp_string)),'\50');
r7extend(((T7*)(oBC870tmp_string)),'\50');
X291c_type_for_result_in(X291run_type((((T870*)C))->_result_type/*24*/),oBC870tmp_string);
r7extend(((T7*)(oBC870tmp_string)),'\51');
r7extend(((T7*)(oBC870tmp_string)),'\50');
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),oBC870tmp_string);
/*]*/
r324put_target_as_value(((T324*)(oBC364cpp)));
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms147_470));
/*]*/
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
 else 
if((5==z1)){
_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_c=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};_rf=X295run_feature(_c);
r324push_same_target(((T324*)(oBC364cpp)),_rf,X295arguments(_c));
X496mapping_c(_rf);
r324pop(((T324*)(oBC364cpp)));
}
 else 
if((6==z1)){
_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_c=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};X295finalize(_c);
r324push_inline_dca(((T324*)(oBC364cpp)),(T0*)C,_c);
X496mapping_c(X295run_feature(_c));
r324pop(((T324*)(oBC364cpp)));
}
 else 
if((7==z1)){
_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_cien=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_cien))switch(((T0*)_cien)->id) {
case 999: case 517: 
break;
default:
_cien=NULL;
};r324push_inline_dca(((T324*)(oBC364cpp)),(T0*)C,_cien);
X841dca_inline(_cien,X662result_type(X841arg1(_cien)));
r324pop(((T324*)(oBC364cpp)));
}
 else 
if(((8<=z1)&&(z1<=9))){
_flag=r324target_cannot_be_dropped(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_c=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};_rf=X295run_feature(_c);
r324push_direct(((T324*)(oBC364cpp)),_rf,/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/),X295arguments(_c));
X496mapping_c(_rf);
r324pop(((T324*)(oBC364cpp)));
/*IF*/if (_flag) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
 else {_a=r592first(((T592*)((((T870*)C))->_routine_body/*32*/)));
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 629: 
break;
default:
_a=NULL;
};_c=(((T629*)((T629*)_a)))->_right_side/*12*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};_rf=X295run_feature(_c);
r324push_same_target(((T324*)(oBC364cpp)),_rf,X295arguments(_c));
X496mapping_c(_rf);
r324pop(((T324*)(oBC364cpp)));
}}
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms3_870));
/*]*/
}
void r870fall_down(T870* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
int _i=0;
T0* _running=NULL;
_current_rc=X291run_class((((T870*)C))->_current_type/*4*/);
_running=(((T355*)((T355*)_current_rc)))->_running/*12*/;
/*IF*/if ((_running)!=((void*)(NULL))) {
_current_bc=X291base_class((((T870*)C))->_current_type/*4*/);
_i=(((T396*)((T396*)_running)))->_lower/*12*/;
while (!((_i)>((((T396*)((T396*)_running)))->_upper/*8*/))) {
_sub_rc=r396item(((T396*)_running),_i);
/*IF*/if ((_sub_rc)!=((void*)(_current_rc))) {
_sub_bc=X291base_class((((T355*)((T355*)_sub_rc)))->_current_type/*0*/);
_sub_name=r605new_name_of(((T605*)_sub_bc),_current_bc,(((T870*)C))->_name/*16*/);
_rf=r355get_feature(((T355*)_sub_rc),_sub_name);
}
/*FI*/_i=(_i)+(1);
}
}
/*FI*/}
/*No:RUN_FEATURE_4.routine_body*/
/*No:RUN_FEATURE_4.fz_void*/
/*No:RUN_FEATURE_4.C_attribute_reader*/
/*No:RUN_FEATURE_4.C_direct_call*/
/*No:RUN_FEATURE_4.ucs_false*/
/*No:RUN_FEATURE_4.is_pre_computable*/
T0* r870clients(T870* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*IF*/if (((((T870*)C))->_clients_memory/*8*/)==((void*)(NULL))) {
_bc=X291base_class((((T870*)C))->_current_type/*4*/);
_bfbc=(((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_base_class/*4*/;
/*IF*/if ((_bc)==((void*)(_bfbc))) {
R=(((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_clients/*24*/;
}
else {
R=r605clients_for(((T605*)_bc),(((T870*)C))->_name/*16*/);
}
/*FI*/C->_clients_memory=R;
}
else {
R=(((T870*)C))->_clients_memory/*8*/;
}
/*FI*/return R;
}
int r870use_current(T870* C){
int R=0;
{int z1=(((T870*)C))->_use_current_state/*44*/;

if((1004==z1)){
R=1;
}
 else 
if((1003==z1)){
}
 else 
if((1005==z1)){
C->_use_current_state=1006;
r870compute_use_current(C);
R=r870use_current(C);
}
 else {R=1;
}}
return R;
}
void r870mapping_c(T870* C){
int _tcbd=0;
/*IF*/if (r870isa_in_line(C)) {
r870in_line(C);
}
 else if (r870use_current(C)) {
r870default_mapping_function(C);
}
else {
_tcbd=r324target_cannot_be_dropped(((T324*)(oBC364cpp)));
/*IF*/if (_tcbd) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\54';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/r870mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\50';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if (((((T870*)C))->_arguments/*20*/)!=((void*)(NULL))) {
r324put_arguments(((T324*)(oBC364cpp)));
}
/*FI*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*IF*/if (_tcbd) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*/}
/*FI*/}
/*No:RUN_FEATURE_4.us_to_pointer*/
int r870direct_cse_call(T870* C){
int R=0;
T0* _rf8=NULL;
T0* _c=NULL;
/*IF*/if ((((((T870*)C))->_arguments/*20*/)==((void*)(NULL)))&&(((((T870*)C))->_local_vars/*52*/)==((void*)(NULL)))) {
_c=r870body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};/*IF*/if (((_c)!=((void*)(NULL)))&&((X295arguments(_c))==((void*)(NULL)))) {
_c=/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 121: case 890: case 414: case 453: case 460: case 180: case 932: case 990: case 253: case 278: case 767: case 760: case 534: case 915: case 999: case 517: case 520: case 557: case 72: case 574: case 90: case 313: case 57: case 487: case 492: case 655: case 112: 
break;
default:
_c=NULL;
};/*IF*/if (((_c)!=((void*)(NULL)))&&(X662is_current(/*X295*/((T0*)(((T121*)((T121*)_c)))->_target/*12*/)))) {
/*IF*/if ((X295arguments(_c))==((void*)(NULL))) {
_rf8=X295run_feature(_c);
if(NULL!=(_rf8))switch(((T0*)_rf8)->id) {
case 892: 
break;
default:
_rf8=NULL;
};/*IF*/if ((_rf8)!=((void*)(NULL))) {
R=(X776to_string((((T892*)((T892*)_rf8)))->_name/*16*/))==((void*)(((T0*)ms135_473)));
}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.fatal_error*/
int r870is_empty_or_null_body(T870* C){
int R=0;
/*IF*/if (r870isa_in_line(C)) {
R=((((T870*)C))->_in_line_status/*60*/)==(1);
}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.address_of*/
void r870put_tag(T870* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\42';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/;
X776cpp_put_infix_or_prefix(_fn);
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),X776to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms1_496));
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),(((T451*)((T451*)(/*(IRF4.6base_class_name*/(((T605*)((T605*)((((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_base_class/*4*/))))->_base_class_name/*24*//*)*/))))->_to_string/*0*/);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\42';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_4.clients_memory*/
void r870initialize(T870* C){
C->_arguments=(((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_arguments/*28*/;
/*IF*/if ((((((T870*)C))->_arguments/*20*/)!=((void*)(NULL)))&&((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T870*)C))->_arguments/*20*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)>(0))) {
C->_arguments=r31to_runnable(((T31*)((((T870*)C))->_arguments/*20*/)),(((T870*)C))->_current_type/*4*/);
}
/*FI*/C->_result_type=X291to_runnable((((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_result_type/*12*/,(((T870*)C))->_current_type/*4*/);
C->_local_vars=(((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_local_vars/*20*/;
/*IF*/if ((((((T870*)C))->_local_vars/*52*/)!=((void*)(NULL)))&&((/*(IRF4.6count*/(((T733*)((T733*)((((T620*)((T620*)((((T870*)C))->_local_vars/*52*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)>(0))) {
C->_local_vars=r620to_runnable(((T620*)((((T870*)C))->_local_vars/*52*/)),(((T870*)C))->_current_type/*4*/);
}
/*FI*/C->_routine_body=(((T696*)((T696*)((((T870*)C))->_base_feature/*48*/))))->_routine_body/*52*/;
/*IF*/if (((((T870*)C))->_routine_body/*32*/)!=((void*)(NULL))) {
C->_routine_body=r592to_runnable(((T592*)((((T870*)C))->_routine_body/*32*/)),(((T870*)C))->_current_type/*4*/);
}
/*FI*//*IF*/if (r590require_check(((T590*)(oBC364run_control)))) {
C->_require_assertion=r696run_require((T0*)C);
}
/*FI*//*IF*/if (r590ensure_check(((T590*)(oBC364run_control)))) {
C->_ensure_assertion=r696run_ensure((T0*)C);
}
/*FI*/}
/*No:RUN_FEATURE_4.C_direct_cse_call*/
T0* r870is_attribute_reader(T870* C){
T0* R=NULL;
T0* _rf=NULL;
T0* _c0=NULL;
/*IF*/if (r870isa_in_line(C)) {
/*IF*/if (((((T870*)C))->_in_line_status/*60*/)==(3)) {
_c0=r870body_one_result(C);
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 180: case 990: case 767: case 72: case 487: 
break;
default:
_c0=NULL;
};_rf=X752run_feature(_c0);
R=/*X496*/((T0*)(((T832*)((T832*)_rf)))->_name/*16*/);
}
/*FI*/}
/*FI*/return R;
}
/*No:RUN_FEATURE_4.C_dc_pco1*/
/*No:RUN_FEATURE_4.afd_check*/
/*No:TYPE_NONE.id*/
int r284has_creation(T284* C,T0* a1){
int R=0;
r683add_position(X776start_position(a1));
r284error(/*(IRF4.6start_position*/(((T451*)((T451*)((((T284*)C))->_base_class_name/*4*/))))->_start_position/*4*//*)*/,((T0*)ms1_284));
return R;
}
/*No:TYPE_NONE.us_none*/
/*No:TYPE_NONE.is_anchored*/
/*No:TYPE_NONE.is_array*/
/*No:TYPE_NONE.is_a*/
/*No:TYPE_NONE.c_initialize_in*/
/*No:TYPE_NONE.c_type_for_argument_in*/
void r284gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms115_470));
r2append_in(-1,a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
int r284space_for_pointer(void){
int R=0;
void* _p=0;
R=sizeof(T8);
return R;
}
/*No:TYPE_NONE.run_type*/
/*No:TYPE_NONE.is_pointer*/
/*No:TYPE_NONE.is_dummy_expanded*/
/*No:TYPE_NONE.is_string*/
/*No:TYPE_NONE.space_for_variable*/
/*No:TYPE_NONE.is_like_feature*/
/*No:TYPE_NONE.fz_t0_star*/
/*No:TYPE_NONE.is_like_current*/
void r284make(T284* C,T0* a1){
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make(n,((T0*)ms19_473),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_NONE.mapping_cast*/
/*No:TYPE_NONE.start_position*/
/*No:TYPE_NONE.c_type_for_target_in*/
/*No:TYPE_NONE.fz_gc_mark*/
/*No:TYPE_NONE.gc_initialize*/
/*No:TYPE_NONE.is_character*/
/*No:TYPE_NONE.is_user_expanded*/
T0* r284written_mark(void){
T0* R=NULL;
R=((T0*)ms19_473);
return R;
}
/*No:TYPE_NONE.is_run_type*/
/*No:TYPE_NONE.to_runnable*/
void r284c_type_for_external_in(T0* a1){
/*IF*/{/*AT*/r7append(((T7*)a1),((T0*)ms133_470));
r7extend(((T7*)a1),'\52');
}
/*FI*/}
T0* r284generic_list(T284* C){
T0* R=NULL;
r284fatal_error_generic_list(C);
return R;
}
/*No:TYPE_NONE.is_formal_generic*/
/*No:TYPE_NONE.fz_null*/
void r284demangling_in(T0* a1){
/*IF*/{/*AT*/r7extend(((T7*)a1),'R');
}
/*FI*/r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r284run_time_mark());
}
/*No:TYPE_NONE.is_real*/
/*No:TYPE_NONE.is_bit*/
void r284fatal_error_generic_list(T284* C){
r683add_type((T0*)C,((T0*)ms12_291));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*No:TYPE_NONE.fz_new*/
T0* r284smallest_ancestor(T0* a1){
T0* R=NULL;
R=a1;
return R;
}
/*No:TYPE_NONE.is_boolean*/
/*No:TYPE_NONE.is_double*/
/*No:TYPE_NONE.run_class*/
T0* r284run_time_mark(void){
T0* R=NULL;
R=((T0*)ms19_473);
return R;
}
/*No:TYPE_NONE.c_initialize*/
void r284cast_to_ref(T284* C){
X291cast_to_ref(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
}
void r284gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms107_470));
r2append_in(-1,a1);
}
int r284is_a_in(T284* C,T0* a1,T0* a2){
int R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*IF*/if ((r284written_mark())==((void*)(X291written_mark(a1)))) {
R=1;
}
else {
_ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_t2=X291to_runnable(a1,_ct);
/*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
R=1;
}
else {
R=X291is_a(_t1,_t2);
}
/*FI*/}
/*FI*/return R;
}
T0* r284look_up_for(T284* C,T0* a1,T0* a2){
T0* R=NULL;
R=r605look_up_for(((T605*)(r284base_class(C))),a1,a2);
return R;
}
/*No:TYPE_NONE.c_header_pass1*/
/*No:TYPE_NONE.c_type_for_result_in*/
/*No:TYPE_NONE.expanded_initializer*/
/*No:TYPE_NONE.fz_void*/
/*No:TYPE_NONE.fz_dot*/
/*No:TYPE_NONE.is_generic*/
/*No:TYPE_NONE.used_as_reference*/
/*No:TYPE_NONE.c_header_pass2*/
/*No:TYPE_NONE.gc_define1*/
/*No:TYPE_NONE.need_c_struct*/
/*No:TYPE_NONE.is_reference*/
/*No:TYPE_NONE.gc_info_in*/
void r284error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
T0* r284base_class(T284* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(((T284*)C))->_base_class_name/*4*/;
/*IF*/if ((_bcn)!=((void*)(NULL))) {
R=r451base_class(((T451*)_bcn));
}
else {
/*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type((T0*)C,((T0*)ms67_470));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/return R;
}
/*No:TYPE_NONE.call_gc_sweep_in*/
/*No:TYPE_NONE.gc_define2*/
/*No:TYPE_NONE.need_gc_mark_function*/
/*No:TYPE_NONE.is_any*/
/*No:TYPE_NONE.to_reference*/
/*No:TYPE_NONE.c_header_pass3*/
/*No:TYPE_NONE.base_class_name*/
/*No:TYPE_NONE.is_expanded*/
/*No:TYPE_NONE.is_basic_eiffel_expanded*/
/*No:TYPE_NONE.is_none*/
/*No:TYPE_NONE.to_expanded*/
/*No:TYPE_NONE.is_integer*/
/*No:TYPE_NONE.c_header_pass4*/
/*No:PROCEDURE.us_put*/
/*No:PROCEDURE.arguments*/
T0* r297try_to_undefine(T297* C,T0* a1,T0* a2){
T0* R=NULL;
X776undefine_in(a1,a2);
R=r297try_to_undefine_aux(C,a1,a2);
/*IF*/if ((R)!=((void*)(NULL))) {
/*X249*//*[IRF3.3set_clients*/((((T853*)(((T853*)R))))->_clients)=((((T297*)C))->_clients/*24*/);
/*]*/
}
else {
r605fatal_undefine(((T605*)a2),a1);
}
/*FI*/return R;
}
/*No:PROCEDURE.is_deferred*/
/*No:PROCEDURE.fz_bad_assertion*/
T0* r297runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
int _i=0;
/*IF*/if (!(r608empty(((T608*)a1)))) {
R=r608twin(((T608*)a1));
_i=(((T608*)((T608*)R)))->_upper/*8*/;
while (!((_i)==(0))) {
r604push(((T604*)(oBC364small_eiffel)),a3);
_a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
/*IF*/if ((_a)==((void*)(NULL))) {
r297error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
}
else {
/*[IRF3.6put*/{T608* C1=((T608*)R);
T0* b1=_a;
int b2=_i;
((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI*/r604pop(((T604*)(oBC364small_eiffel)));
_i=(_i)-(1);
}
}
/*FI*/return R;
}
/*No:PROCEDURE.rescue_compound*/
void r297add_into(T297* C,T0* a1){
T0* _fn=NULL;
int _i=0;
C->_base_class=r627base_class(((T627*)(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T297*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*/))));
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T297*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T297*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (r237has(((T237*)a1),X776to_key(_fn))) {
_fn=/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r237at(((T237*)a1),X776to_key(_fn))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
r683add_position(X776start_position(_fn));
r683add_position(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T297*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/));
r683error(((T683*)(oBC364eh)),((T0*)ms11_359));
/*[IRF3.6append*/{T0* b1=X776to_string(_fn);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
else {
r237put(((T237*)a1),(T0*)C,X776to_key(_fn));
}
/*FI*/_i=(_i)+(1);
}
}
/*No:PROCEDURE.end_comment*/
T0* r297try_to_undefine_aux(T297* C,T0* a1,T0* a2){
T0* R=NULL;
{T853*n=malloc(sizeof(*n));
*n=M853;
r853from_effective(n,a1,(((T297*)C))->_arguments/*28*/,(((T297*)C))->_require_assertion/*36*/,(((T297*)C))->_ensure_assertion/*40*/,a2);
R=(T0*)n;
}
return R;
}
/*No:PROCEDURE.us_array*/
void r297make(T297* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r297make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=1024;
}
/*No:PROCEDURE.not_computed*/
/*No:PROCEDURE.nb_errors*/
void r297make_routine(T297* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
r297make_e_feature(C,a1,NULL);
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}
/*No:PROCEDURE.local_vars*/
void r297set_header_comment(T297* C,T0* a1){
/*IF*/if (((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)>(1))) {
C->_end_comment=a1;
}
/*FI*/}
T0* r297start_position(T297* C){
T0* R=NULL;
R=X776start_position(/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T297*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
return R;
}
T0* r297to_run_feature(T297* C,T0* a1,T0* a2){
T0* R=NULL;
r297check_obsolete(C);
{T832*n=malloc(sizeof(*n));
*n=M832;
r832make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}
/*No:PROCEDURE.ensure_assertion*/
/*No:PROCEDURE.code_require*/
T0* r297run_ensure(T0* a1){
T0* R=NULL;
T0* _r=NULL;
r608clear(((T608*)(oBC359assertion_collector)));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T56*)(((T56*)(oBC359header_comment_memory)))))->_item)=(_default_item);
}/*]*/
r605collect_for(((T605*)(X291base_class(/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/)))),1002,/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/));
_r=r297runnable(oBC359assertion_collector,/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/),a1);
/*IF*/if ((_r)!=((void*)(NULL))) {
{T633*n=malloc(sizeof(*n));
*n=M633;
r633from_runnable(n,_r);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T633*)(((T633*)R))))->_header_comment)=((((T56*)((T56*)(oBC359header_comment_memory))))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T56*)(((T56*)(oBC359header_comment_memory)))))->_item)=(_default_item);
}/*]*/
}
/*FI*/return R;
}
T0* r297run_require(T0* a1){
T0* R=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
int _i=0;
r522clear(((T522*)(oBC359require_collector)));
r605collect_for(((T605*)(X291base_class(/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/)))),1001,/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/));
/*IF*/if (!(r522empty(((T522*)(oBC359require_collector))))) {
_i=1;
while (!((_i)>((((T522*)((T522*)(oBC359require_collector))))->_upper/*8*/))) {
_er=r522item(((T522*)(oBC359require_collector)),_i);
_hc=(((T343*)((T343*)_er)))->_header_comment/*4*/;
/*IF*/if (!(/*(IRF4.7empty*/((((T343*)((T343*)_er)))->_list/*8*/)==(NULL)/*)*/)) {
_r=r297runnable((((T343*)((T343*)_er)))->_list/*8*/,/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/),a1);
/*IF*/if ((_r)!=((void*)(NULL))) {
{T343*n=malloc(sizeof(*n));
*n=M343;
r343from_runnable(n,_r);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T343*)(((T343*)_er))))->_header_comment)=(_hc);
/*]*/
/*IF*/if ((_ar)==((void*)(NULL))) {
_ar=se_ma522(1,_er);
}
else {
r522add_last(((T522*)_ar),_er);
}
/*FI*/}
/*FI*/}
/*FI*/_i=(_i)+(1);
}
/*IF*/if ((_ar)!=((void*)(NULL))) {
{T567*n=malloc(sizeof(*n));
*n=M567;
/*[IRF3.3make*/((((T567*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI*/}
/*FI*/return R;
}
/*No:PROCEDURE.result_type*/
/*No:PROCEDURE.fz_03*/
/*No:PROCEDURE.em1*/
int r297stupid_switch_put(T0* a1,T0* a2){
int R=0;
T0* _rf=NULL;
int _i=0;
T0* _bcn=NULL;
T0* _f=NULL;
_f=X496base_feature(a1);
/*IF*/if ((((T0*)ms104_473))==((void*)(X776to_string(/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)_f)))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/))))) {
_bcn=(((T451*)((T451*)((((T605*)((T605*)(/*X359*/((T0*)(((T398*)((T398*)_f)))->_base_class/*4*/)))))->_base_class_name/*24*/))))->_to_string/*0*/;
/*IF*/if (((((T0*)ms2_473))==((void*)(_bcn)))||((((T0*)ms13_473))==((void*)(_bcn)))) {
_i=(((T396*)((T396*)a2)))->_upper/*8*/;
R=1;
while (!((!(R))||((_i)==(0)))) {
_rf=r355dynamic(((T355*)(r396item(((T396*)a2),_i))),a1);
/*IF*/if (X291is_expanded(r31type(((T31*)(/*X496*/((T0*)(((T832*)((T832*)_rf)))->_arguments/*20*/))),1))) {
R=0;
}
/*FI*/_i=(_i)-(1);
}
}
/*FI*/}
/*FI*/return R;
}
/*No:PROCEDURE.obsolete_mark*/
/*No:PROCEDURE.set_clients*/
/*No:PROCEDURE.em2*/
/*No:PROCEDURE.names*/
/*No:PROCEDURE.require_assertion*/
/*No:PROCEDURE.use_current_state*/
/*No:PROCEDURE.code_ensure*/
int r297stupid_switch(T0* a1,T0* a2){
int R=0;
T0* _sfn=NULL;
T0* _rf3=NULL;
_rf3=r355dynamic(((T355*)(r396first(((T396*)a2)))),a1);
if(NULL!=(_rf3))switch(((T0*)_rf3)->id) {
case 832: 
break;
default:
_rf3=NULL;
};/*IF*/if (r832is_empty_or_null_body(((T832*)_rf3))) {
R=1;
}
else {
_sfn=r832is_attribute_writer(((T832*)_rf3));
/*IF*/if ((_sfn)!=((void*)(NULL))) {
R=r324stupid_switch(r355get_feature(((T355*)(X496run_class(a1))),_sfn));
}
else {
R=r297stupid_switch_put(a1,a2);
}
/*FI*/}
/*FI*/return R;
}
void r297set_rescue_compound(T297* C,T0* a1){
/*IF*/if (((a1)!=((void*)(NULL)))&&(/*(IRF4.1is_deferred*/0/*)*/)) {
r297error(r297start_position(C),((T0*)ms6_368));
}
/*FI*/C->_rescue_compound=a1;
}
int r297can_hide(T297* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T297*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T297*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms5_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T297*)C))->_arguments/*28*/)!=((void*)(X359arguments(a1)))) {
/*IF*/if ((((((T297*)C))->_arguments/*28*/)==((void*)(NULL)))||((X359arguments(a1))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms6_359));
}
 else if ((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T297*)C))->_arguments/*28*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)(X359arguments(a1)))))->_flat_list/*12*/))))->_upper/*12*//*)*/)) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms7_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T297*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T297*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T297*)C))->_arguments/*28*/)!=((void*)(NULL))) {
/*IF*/if (!(r31is_a_in(((T31*)((((T297*)C))->_arguments/*28*/)),X359arguments(a1),a2))) {
r683add_position(X359start_position(a1));
r683add_position(r297start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:PROCEDURE.header_comment*/
/*No:PROCEDURE.routine_body*/
int r297is_merge_with(T297* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T297*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T297*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms2_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T297*)C))->_arguments/*28*/)!=((void*)(X359arguments(a1)))) {
/*IF*/if ((((((T297*)C))->_arguments/*28*/)==((void*)(NULL)))||((X359arguments(a1))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms3_359));
}
 else if ((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T297*)C))->_arguments/*28*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)(X359arguments(a1)))))->_flat_list/*12*/))))->_upper/*12*//*)*/)) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms4_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T297*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T297*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
r683error(((T683*)(oBC364eh)),((T0*)ms12_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T297*)C))->_arguments/*28*/)!=((void*)(NULL))) {
/*IF*/if (!(r31is_a_in(((T31*)((((T297*)C))->_arguments/*28*/)),X359arguments(a1),a2))) {
r683add_position(X359start_position(a1));
r297error(r297start_position(C),((T0*)ms12_359));
}
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:PROCEDURE.fz_dot*/
/*No:PROCEDURE.set_ensure_assertion*/
/*No:PROCEDURE.first_name*/
/*No:PROCEDURE.clients*/
void r297collect_for(T297* C,int a1){
/*IF*/if ((a1)==(1001)) {
/*IF*/if (((((T297*)C))->_require_assertion/*36*/)!=((void*)(NULL))) {
/*IF*/if (!(r522fast_has(((T522*)(oBC359require_collector)),(((T297*)C))->_require_assertion/*36*/))) {
r522add_last(((T522*)(oBC359require_collector)),(((T297*)C))->_require_assertion/*36*/);
}
/*FI*/}
/*FI*/}
else {
/*IF*/if (((((T297*)C))->_ensure_assertion/*40*/)!=((void*)(NULL))) {
/*[IRF3.3set_item*/((((T56*)(((T56*)(oBC359header_comment_memory)))))->_item)=((((T633*)((T633*)((((T297*)C))->_ensure_assertion/*40*/))))->_header_comment/*4*/);
/*]*/
r633add_into(((T633*)((((T297*)C))->_ensure_assertion/*40*/)),oBC359assertion_collector);
}
/*FI*/}
/*FI*/}
void r297error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:PROCEDURE.base_class*/
/*No:PROCEDURE.base_class_name*/
/*No:PROCEDURE.us_fixed_array*/
void r297make_e_feature(T297* C,T0* a1,T0* a2){
C->_names=a1;
C->_result_type=a2;
}
void r297check_obsolete(T297* C){
/*IF*/if (!((((T604*)((T604*)(oBC364small_eiffel))))->_short_flag/*4*/)) {
/*IF*/if (((((T297*)C))->_obsolete_mark/*32*/)!=((void*)(NULL))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms7_368);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T805*)((T805*)((((T297*)C))->_obsolete_mark/*32*/))))->_to_string/*16*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r297warning(r297start_position(C),((T0*)ms137_470));
}
/*FI*/}
/*FI*/}
void r297warning(T0* a1,T0* a2){
r683add_position(a1);
r683warning(((T683*)(oBC364eh)),a2);
}
/*No:CST_ATT_REAL.arguments*/
T0* r835try_to_undefine(T835* C,T0* a1,T0* a2){
T0* R=NULL;
X776undefine_in(a1,a2);
R=r835try_to_undefine_aux(C,a1,a2);
/*IF*/if ((R)!=((void*)(NULL))) {
/*X249*//*[IRF3.3set_clients*/((((T853*)(((T853*)R))))->_clients)=((((T835*)C))->_clients/*20*/);
/*]*/
}
else {
r605fatal_undefine(((T605*)a2),a1);
}
/*FI*/return R;
}
/*No:CST_ATT_REAL.is_deferred*/
void r835add_into(T835* C,T0* a1){
T0* _fn=NULL;
int _i=0;
C->_base_class=r627base_class(((T627*)(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T835*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*/))));
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T835*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T835*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (r237has(((T237*)a1),X776to_key(_fn))) {
_fn=/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r237at(((T237*)a1),X776to_key(_fn))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
r683add_position(X776start_position(_fn));
r683add_position(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T835*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/));
r683error(((T683*)(oBC364eh)),((T0*)ms11_359));
/*[IRF3.6append*/{T0* b1=X776to_string(_fn);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
else {
r237put(((T237*)a1),(T0*)C,X776to_key(_fn));
}
/*FI*/_i=(_i)+(1);
}
}
T0* r835try_to_undefine_aux(T835* C,T0* a1,T0* a2){
T0* R=NULL;
r683add_position(r835start_position(C));
r835error(X776start_position(a1),((T0*)ms1_308));
r605fatal_undefine(((T605*)a2),a1);
return R;
}
void r835make(T835* C,T0* a1,T0* a2,T0* a3){
r835make_e_feature(C,a1,a2);
C->_value_mem=a3;
}
/*No:CST_ATT_REAL.nb_errors*/
/*No:CST_ATT_REAL.set_header_comment*/
T0* r835start_position(T835* C){
T0* R=NULL;
R=X776start_position(/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T835*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
return R;
}
T0* r835to_run_feature(T835* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X291run_class(a1);
R=r355at(((T355*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 808: 
break;
default:
R=NULL;
};/*IF*/if ((R)==((void*)(NULL))) {
{T808*n=malloc(sizeof(*n));
*n=M808;
r808make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI*/return R;
}
/*No:CST_ATT_REAL.ensure_assertion*/
/*No:CST_ATT_REAL.code_require*/
/*No:CST_ATT_REAL.result_type*/
/*No:CST_ATT_REAL.em1*/
/*No:CST_ATT_REAL.set_clients*/
/*No:CST_ATT_REAL.em2*/
/*No:CST_ATT_REAL.value*/
/*No:CST_ATT_REAL.require_assertion*/
/*No:CST_ATT_REAL.names*/
/*No:CST_ATT_REAL.value_mem*/
/*No:CST_ATT_REAL.stupid_switch*/
int r835can_hide(T835* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T835*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T835*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r835error(r835start_position(C),((T0*)ms5_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
/*IF*/{/*AT*/r683add_position(X359start_position(a1));
r835error(r835start_position(C),((T0*)ms6_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T835*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T835*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*//*AF*//*AE*/
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:CST_ATT_REAL.header_comment*/
int r835is_merge_with(T835* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T835*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T835*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r835error(r835start_position(C),((T0*)ms2_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
/*IF*/{/*AT*/r683add_position(X359start_position(a1));
r835error(r835start_position(C),((T0*)ms3_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T835*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T835*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
r683error(((T683*)(oBC364eh)),((T0*)ms12_359));
}
/*FI*/}
/*FI*//*IF*//*AF*//*AE*/
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:CST_ATT_REAL.fz_dot*/
/*No:CST_ATT_REAL.first_name*/
/*No:CST_ATT_REAL.clients*/
void r835collect_for(int a1){
/*IF*/if ((a1)==(1001)) {
/*IF*//*AF*//*AE*/
/*FI*/}
else {
/*IF*//*AF*//*AE*/
/*FI*/}
/*FI*/}
void r835error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CST_ATT_REAL.base_class*/
/*No:CST_ATT_REAL.base_class_name*/
void r835make_e_feature(T835* C,T0* a1,T0* a2){
C->_names=a1;
C->_result_type=a2;
}
/*No:PROC_CALL_N.arguments*/
T0* r568add_comment(T568* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
/*AF*/else {
{T46*n=malloc(sizeof(*n));
*n=M46;
r46make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
/*No:PROC_CALL_N.fz_bad_arguments*/
void r568make(T568* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:PROC_CALL_N.nb_errors*/
/*No:PROC_CALL_N.feature_name*/
int r568arg_count(T568* C){
int R=0;
R=X431count((((T568*)C))->_arguments/*20*/);
return R;
}
/*No:PROC_CALL_N.run_feature*/
/*No:PROC_CALL_N.set_run_compound*/
/*No:PROC_CALL_N.call_proc_call_c2c*/
T0* r568start_position(T568* C){
T0* R=NULL;
R=X776start_position((((T568*)C))->_feature_name/*12*/);
return R;
}
/*No:PROC_CALL_N.target*/
void r568compile_to_c(T568* C){
r324rs_push_position(((T324*)(oBC364cpp)),'3',r568start_position(C));
/*[IRF3.6call_proc_call_c2c*/{T568* C1=C;
r324put_cpc(((T324*)(oBC364cpp)),(T0*)C1);
}/*]*/
r324rs_pop_position(((T324*)(oBC364cpp)));
}
/*No:PROC_CALL_N.set_run_feature*/
T0* r568to_runnable(T568* C,T0* a1){
T0* R=NULL;
T0* _a=NULL;
/*IF*/if (((((T568*)C))->_run_compound/*4*/)==((void*)(NULL))) {
r568to_runnable_0(C,a1);
/*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_a=X431to_runnable((((T568*)C))->_arguments/*20*/,r568current_type(C));
/*IF*/if ((_a)==((void*)(NULL))) {
r568error(X431start_position((((T568*)C))->_arguments/*20*/),((T0*)ms56_470));
}
else {
C->_arguments=_a;
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
X431match_with((((T568*)C))->_arguments/*20*/,(((T568*)C))->_run_feature/*16*/);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
{T568*n=malloc(sizeof(*n));
*n=M568;
r568make(n,(((T568*)C))->_target/*8*/,(((T568*)C))->_feature_name/*12*/,(((T568*)C))->_arguments/*20*/);
R=(T0*)n;
}
R=r568to_runnable(((T568*)R),a1);
}
/*FI*/return R;
}
/*No:PROC_CALL_N.fz_07*/
T0* r568current_type(T568* C){
T0* R=NULL;
/*IF*/if (((((T568*)C))->_run_compound/*4*/)!=((void*)(NULL))) {
R=(((T592*)((T592*)((((T568*)C))->_run_compound/*4*/))))->_current_type/*4*/;
}
/*FI*/return R;
}
/*No:PROC_CALL_N.run_compound*/
void r568to_runnable_0(T568* C,T0* a1){
C->_run_compound=a1;
r568cpc_to_runnable(C,r568current_type(C));
/*IF*/if ((/*X496*/((T0*)(((T832*)((T832*)((((T568*)C))->_run_feature/*16*/))))->_result_type/*24*/))!=((void*)(NULL))) {
r683add_position(X496start_position((((T568*)C))->_run_feature/*16*/));
r568error(X776start_position((((T568*)C))->_feature_name/*12*/),((T0*)ms1_173));
}
/*FI*/}
/*No:PROC_CALL_N.is_pre_computable*/
void r568cpc_to_runnable(T568* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T568*)C))->_target/*8*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T568*)C))->_target/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T568*)C))->_target/*8*/));
C->_run_feature=r355get_rf(((T355*)_rc),(T0*)C);
r576update((((T568*)C))->_target/*8*/,(((T568*)C))->_run_feature/*16*/);
}
int r568use_current(T568* C){
int R=0;
/*IF*/if ((r568arg_count(C))>(0)) {
R=X431use_current((((T568*)C))->_arguments/*20*/);
}
/*FI*//*IF*/if (R) {
}
 else if (X662is_current((((T568*)C))->_target/*8*/)) {
R=X496use_current((((T568*)C))->_run_feature/*16*/);
}
else {
R=X662use_current((((T568*)C))->_target/*8*/);
}
/*FI*/return R;
}
void r568finalize(T568* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(((T568*)C))->_run_feature/*16*/;
_rc=X291run_class(/*X496*/((T0*)(((T832*)((T832*)_rf)))->_current_type/*4*/));
/*IF*/if (!((((T355*)((T355*)_rc)))->_at_run_time/*8*/)) {
_rf=r355dynamic(((T355*)(r396first(((T396*)((((T355*)((T355*)_rc)))->_running/*12*/))))),_rf);
C->_run_feature=_rf;
}
/*FI*/}
void r568error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:PROC_CALL_N.fatal_error*/
/*No:PROC_CALL_N.end_mark_comment*/
void r568afd_check(T568* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X291run_class(X662result_type((((T568*)C))->_target/*8*/));
_running=(((T355*)((T355*)_rc)))->_running/*12*/;
/*IF*/if ((_running)==((void*)(NULL))) {
r683add_position(X662start_position((((T568*)C))->_target/*8*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms1_135);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)_rc)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms141_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_warning(((T683*)(oBC364eh)));
r355set_at_run_time(((T355*)_rc));
}
 else if ((r396count(((T396*)_running)))>(0)) {
r576update((((T568*)C))->_target/*8*/,(((T568*)C))->_run_feature/*16*/);
}
/*FI*/X662afd_check((((T568*)C))->_target/*8*/);
/*IF*/if ((r568arg_count(C))>(0)) {
X431afd_check((((T568*)C))->_arguments/*20*/);
}
/*FI*/}
T0* r568make_runnable(T568* C,T0* a1,T0* a2,T0* a3,T0* a4){
T0* R=NULL;
/*IF*/if (((((T568*)C))->_run_compound/*4*/)==((void*)(NULL))) {
R=(T0*)C;
r568make(((T568*)R),a2,(((T568*)C))->_feature_name/*12*/,a3);
C->_run_compound=a1;
C->_run_feature=a4;
}
else {
{T568*n=malloc(sizeof(*n));
*n=M568;
r568make(n,a2,(((T568*)C))->_feature_name/*12*/,a3);
R=(T0*)n;
}
/*[IRF3.3set_run_compound*/((((T568*)(((T568*)R))))->_run_compound)=(a1);
/*]*/
/*[IRF3.3set_run_feature*/((((T568*)(((T568*)R))))->_run_feature)=(a4);
/*]*/
}
/*FI*/return R;
}
void r362check_creation_clause(T362* C,T0* a1){
/*IF*/if (/*(IRF4.7has_creation_clause*/((((T605*)((T605*)(X291base_class(a1)))))->_creation_clause_list/*44*/)!=(NULL)/*)*/) {
/*[IRF3.6append*/{T0* b1=((T0*)ms1_334);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type(a1,((T0*)ms2_334));
r362error((((T362*)C))->_start_position/*8*/,((T0*)ms3_334));
}
/*FI*/}
T0* r362add_comment(T362* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
/*AF*/else {
{T46*n=malloc(sizeof(*n));
*n=M46;
r46make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
void r362check_created_type(T362* C,T0* a1){
T0* _rt=NULL;
_rt=X291run_type(a1);
/*IF*/if ((((T604*)((T604*)(oBC364small_eiffel))))->_short_flag/*4*/) {
}
 else if ((((T605*)((T605*)(X291base_class(_rt)))))->_is_deferred/*16*/) {
r683add_type(_rt,((T0*)ms2_747));
r683add_position((((T362*)C))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms3_747);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*//*IF*/if (X291is_formal_generic(a1)) {
r683add_position((((T362*)C))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms4_747);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type(a1,((T0*)ms5_747));
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/r355set_at_run_time(((T355*)(X291run_class(_rt))));
}
/*No:CREATION_CALL_1.writable*/
void r362make(T362* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_writable=a2;
}
void r362c2c_closing(T362* C,T0* a1){
X662compile_to_c((((T362*)C))->_writable/*12*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\75';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms85_470));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='n';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms134_470));
/*]*/
/*IF*/if (r324call_invariant_start(a1)) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='n';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T544* C1=((T544*)(oBC324out_c));
char b1='\51';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\73';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\175';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\n';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r324rs_pop_position(((T324*)(oBC364cpp)));
}
void r362c2c_clear_expanded(T362* C,int a1){
X662compile_to_c((((T362*)C))->_writable/*12*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\75';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='M';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r544put_integer(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),a1);
/*]*/
/*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms134_470));
/*]*/
}
/*No:CREATION_CALL_1.start_position*/
void r362compile_to_c(T362* C){
T0* _t=NULL;
_t=X291run_type(X662result_type((((T362*)C))->_writable/*12*/));
/*IF*/if (X291is_reference(_t)) {
r362c2c_opening(C,_t);
r362c2c_closing(C,_t);
}
else {
r362c2c_clear_expanded(C,X291id(_t));
}
/*FI*/}
/*No:CREATION_CALL_1.fz_00*/
T0* r362to_runnable(T362* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*IF*/if (((((T362*)C))->_run_compound/*4*/)==((void*)(NULL))) {
r362check_writable(C,a1);
_t=X662result_type((((T362*)C))->_writable/*12*/);
r362check_created_type(C,_t);
r362check_creation_clause(C,_t);
R=(T0*)C;
}
else {
{T362*n=malloc(sizeof(*n));
*n=M362;
r362make(n,(((T362*)C))->_start_position/*8*/,(((T362*)C))->_writable/*12*/);
R=(T0*)n;
}
R=r362to_runnable(((T362*)R),a1);
}
/*FI*/return R;
}
T0* r362current_type(T362* C){
T0* R=NULL;
/*IF*/if (((((T362*)C))->_run_compound/*4*/)!=((void*)(NULL))) {
R=(((T592*)((T592*)((((T362*)C))->_run_compound/*4*/))))->_current_type/*4*/;
}
/*FI*/return R;
}
void r362c2c_opening(T362* C,T0* a1){
T0* _rc=NULL;
_rc=X291run_class(a1);
r324rs_push_position(((T324*)(oBC364cpp)),'5',(((T362*)C))->_start_position/*8*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
char b1='\173';
putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
}/*]*/
/*]*/
r548put_new(((T548*)(oBC364gc_handler)),_rc);
r324expanded_attributes(((T324*)(oBC364cpp)),a1);
}
/*No:CREATION_CALL_1.run_compound*/
int r362is_pre_computable(T362* C){
int R=0;
R=X662is_result((((T362*)C))->_writable/*12*/);
return R;
}
/*No:CREATION_CALL_1.fz_cast_t0_star*/
int r362use_current(T362* C){
int R=0;
R=X662use_current((((T362*)C))->_writable/*12*/);
return R;
}
void r362check_writable(T362* C,T0* a1){
T0* _w=NULL;
C->_run_compound=a1;
_w=X662to_runnable((((T362*)C))->_writable/*12*/,r362current_type(C));
/*IF*/if ((_w)==((void*)(NULL))) {
r683add_position(X662start_position((((T362*)C))->_writable/*12*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_747);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
else {
C->_writable=_w;
}
/*FI*/}
void r362error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CREATION_CALL_1.fatal_error*/
/*No:CREATION_CALL_1.end_mark_comment*/
/*No:CREATION_CALL_1.afd_check*/
void r970fe_c2c(T0* a1){
r683add_position(X496start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_845);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*No:NATIVE_JVM_INVOKEVIRTUAL.c_define_function*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.c_define_procedure*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.stupid_switch*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.c_mapping_procedure*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.c_mapping_function*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.use_current*/
/*No:NATIVE_JVM_INVOKEVIRTUAL.fatal_error*/
void r620make(T620* C,T0* a1,T0* a2){
int _actual_count=0;
int _il=0;
C->_start_position=a1;
C->_list=a2;
_il=1;
while (!((_il)>((((T382*)((T382*)((((T620*)C))->_list/*8*/))))->_upper/*8*/))) {
_actual_count=(_actual_count)+(X411count(r382item(((T382*)((((T620*)C))->_list/*8*/)),_il)));
_il=(_il)+(1);
}
{T733*n=malloc(sizeof(*n));
*n=M733;
r733make(n,1,_actual_count);
C->_flat_list=(T0*)n;
}
_il=1;
while (!((_il)>((((T382*)((T382*)((((T620*)C))->_list/*8*/))))->_upper/*8*/))) {
X411append_in(r382item(((T382*)((((T620*)C))->_list/*8*/)),_il),(T0*)C);
_il=(_il)+(1);
}
}
/*No:LOCAL_VAR_LIST.name*/
/*No:LOCAL_VAR_LIST.nb_errors*/
T0* r620type(T620* C,int a1){
T0* R=NULL;
R=(((T39*)((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),a1)/*)*/))))->_result_type/*24*/;
return R;
}
/*No:LOCAL_VAR_LIST.start_position*/
void r620inline_one_pc(T620* C){
int _i=0;
_i=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
while (!((_i)==(0))) {
r324inline_level_incr(((T324*)(oBC364cpp)));
r39c_declare(((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i)/*)*/)));
r324inline_level_decr(((T324*)(oBC364cpp)));
_i=(_i)-(1);
}
}
void r620compile_to_c(T620* C){
int _i=0;
_i=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
while (!((_i)==(0))) {
r39c_declare(((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i)/*)*/)));
_i=(_i)-(1);
}
}
T0* r620to_runnable(T620* C,T0* a1){
T0* R=NULL;
T0* _n2=NULL;
T0* _n1=NULL;
int _i=0;
/*IF*/if (((((T620*)C))->_current_type/*16*/)==((void*)(NULL))) {
C->_current_type=a1;
R=(T0*)C;
_i=(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*/;
while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)>(0)))) {
_n1=r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i);
_n2=r39to_runnable(((T39*)_n1),a1);
/*IF*/if ((_n2)==((void*)(NULL))) {
r620error((((T39*)((T39*)_n1)))->_start_position/*16*/,((T0*)ms3_535));
}
 else if ((_n1)!=((void*)(_n2))) {
/*[IRF3.6put*/{T733* C1=((T733*)((((T620*)C))->_flat_list/*12*/));
T0* b1=_n2;
int b2=_i;
((((T733*)C1))->_storage/*4*/)[(b2)-((((T733*)C1))->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI*/r39name_clash(((T39*)_n2));
_i=(_i)-(1);
}
}
else {
{T620*n=malloc(sizeof(*n));
*n=M620;
r620runnable_from_current(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r620produce_c(T620* C){
int R=0;
int _i=0;
_i=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
while (!((R)||((_i)==(0)))) {
R=r39produce_c(((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),_i)/*)*/)));
_i=(_i)-(1);
}
return R;
}
/*No:LOCAL_VAR_LIST.em1*/
/*No:LOCAL_VAR_LIST.list*/
int r620rank_of(T620* C,T0* a1){
int R=0;
R=/*(IRF4.6count*/(((T733*)((T733*)((((T620*)C))->_flat_list/*12*/))))->_upper/*12*//*)*/;
while (!(((R)==(0))||((a1)==((void*)((((T39*)((T39*)(/*(IRF4.6name*/r733item(((T733*)((((T620*)C))->_flat_list/*12*/)),R)/*)*/))))->_to_string/*12*/))))) {
R=(R)-(1);
}
return R;
}
/*No:LOCAL_VAR_LIST.current_type*/

