/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- 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 r388c_assertion_flag(T388* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r388c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_30510));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}


void r388c_define_opening(T388* C){
T0* _t=NULL;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_21736));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*/if(((C)->_result_type/*40*/)!=((void*)(NULL))){
_t=X54run_type((C)->_result_type/*40*/);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
X54c_type_for_result_in(_t,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_543));
X54c_initialize_in(_t,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r7append((T7*)(oBC12c_frame_descriptor_locals),((T0*)ms51_10703));
r204increment((T204*)(oBC12c_frame_descriptor_local_count));
r7append((T7*)(oBC12c_frame_descriptor_format),((T0*)ms14_7404));
X54c_frame_descriptor(_t);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
r178c_declare((T178*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215c_declare_for_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_21762));
/*[IRF3.5append_in*/r2append_in(((T2)(((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)),((T0*)ms51_3077376));
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\135');
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}
/*FI]*/
r388c_initialize_ds_one_by_one(C);
/*[IRF3.2c_initialize_locals_one_by_one*/{T3 _c=0;
T2 _j=0;
T2 _i=0;
_j=1;
while (!((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)==(_i))) {
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_8225));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_i);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_314));
/*]*/
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
while (!((_c)==('\54'))) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1=_c;
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820a));
/*]*/
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_23488));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_147634));
/*]*/
}
/*FI]*/
r216compile_to_c((T216*)((C)->_rescue_compound/*52*/));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_48457));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
r178initialize_expanded((T178*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_7601));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357compile_to_c((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_58520));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r388c_define_closing(T388* C){
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r388use_current(C)){
r25current_class_invariant((C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_25830));
/*]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_19775));
/*]*/
}
/*FI]*/
}


T6 r388empty_or_null_body(T388* C){
T6 R=0;
T0* _rb=NULL;
_rb=(C)->_routine_body/*48*/;
/*[IF*/
if((((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((((T216*)_rb))->_first_one/*8*/)==(NULL)/*)*/))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
C->_static_value_mem=0;
C->_is_static_flag=1;
R=1;
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.use_current_state*/
/*No:RUN_FEATURE_4.fz_void*/


void r388address_of_c_define(T388* C,T0* a1){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r388isa_in_line(C)){
r388address_of_c_define_wrapper(C,a1);
}
 else if(r388use_current(C)){
}
else{
r388address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r388address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
/*No:RUN_FEATURE_4.is_static_flag*/


T6 r388is_static(T388* C){
T6 R=0;
/*[IF*/
if(r388isa_in_line(C)){
R=(C)->_is_static_flag/*64*/;
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_empty_or_null_body*/
/*No:RUN_FEATURE_4.ucs_false*/


T0* r388start_position(T388* C){
T0* R=NULL;
R=r303start_position((T303*)((C)->_base_feature/*32*/));
return R;
}


T0* r388is_attribute_reader(T388* C){
T0* R=NULL;
T0* _rf=NULL;
T0* _c0=NULL;
/*[IF*/
if(r388isa_in_line(C)){
/*[IF*/
if(((C)->_in_line_status/*60*/)==(3)){
_c0=r388body_one_result(C);
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 145: case 139: case 150: case 144: case 143: 
break;
default:
_c0=NULL;
};_rf=X141run_feature(_c0);
R=/*X51name*/((T0*)(((T324*)_rf))->_name/*16*/);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.c_initialize_locals_one_by_one*/


void r388mapping_name(T388* C){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='r';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),r388id(C));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_key((C)->_name/*16*/));
/*]*/
}


T0* r388body_one_result(T388* C){
T0* R=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(C)->_routine_body/*48*/;
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r216count(((T216*)_rb)))==(1))){
_a=/*(IRF4.3first*/(((T216*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};/*[IF*/
if((_a)!=((void*)(NULL))){
/*[IF*/
if(X56is_result((((T282*)_a))->_left_side/*4*/)){
R=(((T282*)_a))->_right_side/*8*/;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r388isa_in_line(T388* C){
T6 R=0;
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
{int z1=(C)->_in_line_status/*60*/;

if((-1==z1)){
}
 else 
if((0==z1)){
R=1;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
C->_in_line_status=-(1);
R=0;
}
 else if(r388empty_or_null_body(C)){
C->_in_line_status=1;
}
 else if(r388value_reader(C)){
C->_in_line_status=2;
}
 else if(r388attribute_reader(C)){
C->_in_line_status=3;
}
 else if(r388result_is_current(C)){
C->_in_line_status=4;
}
 else if(r388direct_call(C)){
C->_in_line_status=5;
}
 else if(r388dca(C)){
C->_in_line_status=6;
}
 else if(r388a_eq_neq(C)){
C->_in_line_status=7;
}
 else if(r388dc_pco1(C)){
C->_in_line_status=8;
}
 else if(r388dc_pco2(C)){
C->_in_line_status=9;
}
 else if(r388direct_cse_call(C)){
C->_in_line_status=10;
}
else{
C->_in_line_status=-(1);
R=0;
}
/*FI]*/
}
 else{R=1;
}}
}
/*FI]*/
return R;
}


T6 r388use_current(T388* C){
T6 R=0;
{int z1=(C)->_use_current_state/*28*/;

if((14==z1)){
R=1;
}
 else 
if((13==z1)){
}
 else 
if((15==z1)){
C->_use_current_state=16;
r388compute_use_current(C);
R=r388use_current(C);
}
 else {R=1;
}}
return R;
}


T2 r388id(T388* C){
T2 R=0;
R=X54id((C)->_current_type/*4*/);
return R;
}


void r388routine_afd_check(T388* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357afd_check((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_routine_body/*48*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_rescue_compound/*52*/));
}
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215afd_check((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}


T6 r388value_reader(T388* C){
T6 R=0;
T0* _c0=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 145: case 139: case 150: case 144: case 143: 
break;
default:
_c0=NULL;
};/*[IF*/
if((((_c0)!=((void*)(NULL)))&&(X56is_current(/*X141target*/((T0*)(((T145*)_c0))->_target/*4*/))))&&((X141run_feature(_c0))==((void*)(C)))){
r21add_position(X56start_position(_e));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms388_38856);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(X56is_static(_e)){
R=1;
C->_static_value_mem=X56static_value(_e);
C->_is_static_flag=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r388body_one_dc_pco(T388* C){
T0* R=NULL;
T0* _args=NULL;
T0* _c=NULL;
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};/*[IF*/
if((((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL))))&&(((C)->_arguments/*36*/)==((void*)(NULL)))){
_args=X117arguments(_c);
/*[IF*/
if(((_args)==((void*)(NULL)))||(X149is_static(_args))){
R=_c;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_result_is_current*/


T6 r388direct_cse_call(T388* C){
T6 R=0;
T0* _rf8=NULL;
T0* _c=NULL;
/*[IF*/
if((((C)->_arguments/*36*/)==((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};/*[IF*/
if(((_c)!=((void*)(NULL)))&&((X117arguments(_c))==((void*)(NULL)))){
_c=/*X117target*/((T0*)(((T132*)_c))->_target/*4*/);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X56is_current(/*X117target*/((T0*)(((T132*)_c))->_target/*4*/)))){
/*[IF*/
if((X117arguments(_c))==((void*)(NULL))){
_rf8=X117run_feature(_c);
if(NULL!=(_rf8))switch(((T0*)_rf8)->id) {
case 384: 
break;
default:
_rf8=NULL;
};/*[IF*/
if((_rf8)!=((void*)(NULL))){
R=(X83to_string((((T384*)_rf8))->_name/*16*/))==((void*)(((T0*)ms14_17000)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388std_compute_use_current(T388* C){
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
/*[IF*/
if(r357use_current((T357*)((C)->_require_assertion/*20*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
/*[IF*/
if(r216use_current((T216*)((C)->_routine_body/*48*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IF*/
if(r216use_current((T216*)((C)->_rescue_compound/*52*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
/*[IF*/
if(r215use_current((T215*)((C)->_ensure_assertion/*24*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
C->_use_current_state=13;
}
/*FI]*/
}


T0* r388run_class(T388* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_4.result_type*/
/*No:RUN_FEATURE_4.base_feature*/
/*No:RUN_FEATURE_4.C_dca*/
/*No:RUN_FEATURE_4.static_value_mem*/
/*No:RUN_FEATURE_4.ensure_assertion*/


void r388address_of_c_mapping_wrapper(T388* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r388address_of_wrapper_name_in(C,((T0*)ms51_3077376));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}


T6 r388is_exported_in(T388* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r388clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_4.fz_close_c_comment*/
/*No:RUN_FEATURE_4.C_direct_cse_call*/
/*No:RUN_FEATURE_4.fatal_error*/


void r388default_mapping_function(T388* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r43no_check((T43*)(oBC12run_control));
_uc=r388use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r25target_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r388mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_777));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25put_target_as_target((T25*)(oBC12cpp));
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25put_arguments((T25*)(oBC12cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_4.arguments*/
/*No:RUN_FEATURE_4.is_once_function*/
/*No:RUN_FEATURE_4.in_line_status*/
/*No:RUN_FEATURE_4.C_direct_call*/


void r388address_of_wrapper_name_in(T388* C,T0* a1){
r7extend(((T7*)a1),'W');
r2append_in(r388id(C),a1);
r7append(((T7*)a1),X83to_key((C)->_name/*16*/));
}


T6 r388direct_call(T388* C){
T6 R=0;
T0* _rf4=NULL;
T0* _args=NULL;
T0* _c=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if((((_e)!=((void*)(NULL)))&&(((C)->_arguments/*36*/)==((void*)(NULL))))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c=_e;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};/*[IF*/
if((_c)!=((void*)(NULL))){
/*[IF*/
if(X56is_current(/*X117target*/((T0*)(((T132*)_c))->_target/*4*/))){
_rf4=X117run_feature(_c);
if(NULL!=(_rf4))switch(((T0*)_rf4)->id) {
case 388: 
break;
default:
_rf4=NULL;
};/*[IF*/
if((_rf4)!=((void*)(NULL))){
_args=X117arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=X149is_static(_args);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r388is_direct_call_on_attribute(T388* C){
T0* R=NULL;
T0* _c=NULL;
/*[IF*/
if(r388isa_in_line(C)){
{int z1=(C)->_in_line_status/*60*/;

if((6==z1)){
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};_c=/*X117target*/((T0*)(((T132*)_c))->_target/*4*/);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};R=X117run_feature(_c);
}
}
}
/*FI]*/
return R;
}


T6 r388dca(T388* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r388body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_rf=X117run_feature(_c);
/*[IF*/
if((_rf)!=((void*)(NULL))){
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X54is_user_expanded(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/))){
}
else{
_args=X117arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=(r388arg_count(C))==(0);
}
else{
R=X149isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.clients_memory*/
/*No:RUN_FEATURE_4.current_type*/
/*No:RUN_FEATURE_4.C_dc_pco1*/


void r388add_client(T388* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T60*n=malloc(sizeof(*n));
*n=M60;
r60with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r60add_last((T60*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r60fast_index_of((T60*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T60*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r60add_last((T60*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r24add_client((T24*)(r388run_class(C)),a1);
}
/*No:RUN_FEATURE_4.ucs_in_computation*/
/*No:RUN_FEATURE_4.C_value_reader*/


void r388make(T388* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r388run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X83to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r388initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_4.us_to_pointer*/
/*No:RUN_FEATURE_4.routine_body*/
/*No:RUN_FEATURE_4.ucs_true*/
/*No:RUN_FEATURE_4.name*/
T0*oBC388tmp_string=NULL;


T6 r388attribute_reader(T388* C){
T6 R=0;
T0* _rf2=NULL;
T0* _c0=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 145: case 139: case 150: case 144: case 143: 
break;
default:
_c0=NULL;
};/*[IF*/
if((_c0)!=((void*)(NULL))){
/*[IF*/
if(X56is_current(/*X141target*/((T0*)(((T145*)_c0))->_target/*4*/))){
_rf2=X141run_feature(_c0);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 356: 
break;
default:
_rf2=NULL;
};R=(_rf2)!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.afd_check*/


void r388address_of_c_define_wrapper(T388* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
/*[IF*/
if(((C)->_result_type/*40*/)==((void*)(NULL))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
else{
X54c_type_for_external_in((C)->_result_type/*40*/,((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r388address_of_wrapper_name_in(C,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
X54c_type_for_external_in((C)->_current_type/*4*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'C');
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
r187external_prototype_in((T187*)((C)->_arguments/*36*/),((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\51');
r25put_c_heading((T25*)(oBC12cpp),((T0*)ms51_3077376));
r364define_body_of((T0*)C);
}


T0* r388clients(T388* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X54base_class((C)->_current_type/*4*/);
_bfbc=((T303*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T303*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T6 r388is_empty_or_null_body(T388* C){
T6 R=0;
/*[IF*/
if(r388isa_in_line(C)){
R=((C)->_in_line_status/*60*/)==(1);
}
/*FI]*/
return R;
}


void r388c_define(T388* C){
/*[IF*/
if(r388isa_in_line(C)){
r25incr_inlined_function_count((T25*)(oBC12cpp));
r388nothing_comment(C);
}
else{
/*[IF*/
if(r388use_current(C)){
r25incr_function_count((T25*)(oBC12cpp));
}
else{
r25incr_real_function_count((T25*)(oBC12cpp));
}
/*FI]*/
r388define_prototype(C);
r388c_define_opening(C);
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_routine_body/*48*/));
}
/*FI]*/
r388c_define_closing(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_8364));
/*]*/
r388c_frame_descriptor(C);
}
/*FI]*/
}


void r388once_result_in(T388* C,T0* a1){
r7extend(((T7*)a1),'o');
r303mapping_c_name_in((T303*)((C)->_base_feature/*32*/),a1);
}


void r388fall_down(T388* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X54run_class((C)->_current_type/*4*/);
_running=(((T24*)_current_rc))->_running/*12*/;
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X54base_class((C)->_current_type/*4*/);
_i=(((T328*)_running))->_lower/*12*/;
while (!((_i)>((((T328*)_running))->_upper/*8*/))) {
_sub_rc=r328item(((T328*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X54base_class((((T24*)_sub_rc))->_current_type/*0*/);
_sub_name=r63new_name_of(((T63*)_sub_bc),_current_bc,(C)->_name/*16*/);
_rf=r24get_feature(((T24*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:RUN_FEATURE_4.rescue_compound*/
/*No:RUN_FEATURE_4.actuals_clients*/
/*No:RUN_FEATURE_4.us_result*/


T6 r388result_is_current(T388* C){
T6 R=0;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
R=X56is_current(_e);
}
/*FI]*/
return R;
}


void r388define_prototype(T388* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r43no_check((T43*)(oBC12run_control));
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.3reset*/((((T204*)((T204*)(oBC12c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC12c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC12c_frame_descriptor_format),'\42');
/*[IRF3.3clear*/((((T7*)((T7*)(oBC12c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r388id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
/*[IF*/
if(((C)->_result_type/*40*/)==((void*)(NULL))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
else{
X54c_type_for_result_in(X54run_type((C)->_result_type/*40*/),((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'r');
r2append_in(_mem_id,((T0*)ms51_3077376));
X83mapping_c_in((C)->_name/*16*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
/*[IF*/
if(_no_check){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_56460));
/*[IF*/
if((r388use_current(C))||(((C)->_arguments/*36*/)!=((void*)(NULL)))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r388use_current(C)){
X54c_type_for_target_in((C)->_current_type/*4*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'C');
X54c_frame_descriptor((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r388use_current(C))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
}
else{
r187compile_to_c_in((T187*)((C)->_arguments/*36*/),((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\51');
r25put_c_heading((T25*)(oBC12cpp),((T0*)ms51_3077376));
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
}


void r388put_tag(T388* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\42';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/r85item(((T85*)(((T303*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/;
X83put_cpp_tag(_fn);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_1148));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T64*)(/*(IRF4.6base_class_name*/(((T63*)(((T303*)((C)->_base_feature/*32*/))->_base_class/*4*/)))->_name/*24*//*)*/))->_to_string/*0*/);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\42';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_4.c_code*/


T6 r388a_eq_neq(T388* C){
T6 R=0;
T0* _e=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r388body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_rf=X117run_feature(_c);
/*[IF*/
if(((_rf)==((void*)(NULL)))&&((X117arg_count(_c))==(1))){
_e=X149expression(X117arguments(_c),1);
{int z1=X56isa_dca_inline_argument(_e);

if((0==z1)){
}
 else 
if((-1==z1)){
R=(r388arg_count(C))==(0);
}
 else{R=(r388arg_count(C))==(1);
}}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_dc_pco2*/
/*No:RUN_FEATURE_4.fz_00*/


void r388c_initialize_ds_one_by_one(T388* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_37325));
r388c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IF*/
if(r388use_current(C)){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_18550));
}
else{
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_11254));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
r25put_position_in_ds(r388start_position(C));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_11736));
/*]*/
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_12150));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_4.ucs_not_computed*/
/*No:RUN_FEATURE_4.is_pre_computable*/


void r388collect_c_tmp(T388* C){
/*[IF*/
if(X54is_user_expanded((C)->_result_type/*40*/)){
/*[IF*/
if(X54is_dummy_expanded((C)->_result_type/*40*/)){
}
 else if(r388isa_in_line(C)){
}
else{
r25se_tmp_add((T0*)C);
}
/*FI]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_4.fz_13*/


void r388c_frame_descriptor(T388* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_23640));
r388c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r25put_extern7((T25*)(oBC12cpp),((T0*)ms51_3077376));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r388put_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
/*[IF*/
if(r388use_current(C)){
r7extend((T7*)(((T0*)ms51_3077376)),'1');
}
else{
r7extend((T7*)(((T0*)ms51_3077376)),'0');
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
/*[IRF3.5append_in*/r2append_in(((T2)(((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)),((T0*)ms51_3077376));
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
r7append((T7*)(((T0*)ms51_3077376)),oBC12c_frame_descriptor_format);
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_2316));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_4.C_a_eq_neq*/
/*No:RUN_FEATURE_4.fz_15*/


void r388in_line(T388* C){
T6 _exp_to_ref_flag=0;
T0* _cien=NULL;
T0* _rf=NULL;
T0* _c=NULL;
T6 _flag=0;
T0* _e=NULL;
T0* _a=NULL;
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms388_5336));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),(C)->_in_line_status/*60*/);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184));
/*]*/
{int z1=(C)->_in_line_status/*60*/;

if((1==z1)){
_flag=r25cannot_drop_all((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
X54c_initialize(X54run_type((C)->_result_type/*40*/));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((2==z1)){
_flag=r25cannot_drop_all((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_e=(((T282*)_a))->_right_side/*8*/;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X56compile_to_c(_e);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((3==z1)){
_flag=r25arguments_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_c=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};_rf=X117run_feature(_c);
/*[IF*/
if((X54is_expanded(X51result_type(_rf)))&&(X54is_reference((C)->_result_type/*40*/))){
_exp_to_ref_flag=1;
X54to_reference(X51result_type(_rf));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
X51mapping_c(_rf);
/*[IF*/
if(_exp_to_ref_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((4==z1)){
_flag=r25arguments_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC388tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC388tmp_string),'\50');
r7extend((T7*)(oBC388tmp_string),'\50');
X54c_type_for_result_in(X54run_type((C)->_result_type/*40*/),oBC388tmp_string);
r7extend((T7*)(oBC388tmp_string),'\51');
r7extend((T7*)(oBC388tmp_string),'\50');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),oBC388tmp_string);
/*]*/
r25put_target_as_value((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_170));
/*]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((5==z1)){
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_c=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};_rf=X117run_feature(_c);
r25push_same_target((T25*)(oBC12cpp),_rf,X117arguments(_c));
X51mapping_c(_rf);
r25pop((T25*)(oBC12cpp));
}
 else 
if((6==z1)){
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_c=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};X117finalize(_c);
r25push_inline_dca((T25*)(oBC12cpp),(T0*)C,_c);
X51mapping_c(X117run_feature(_c));
r25pop((T25*)(oBC12cpp));
}
 else 
if((7==z1)){
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_cien=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_cien))switch(((T0*)_cien)->id) {
case 130: case 128: 
break;
default:
_cien=NULL;
};r25push_inline_dca((T25*)(oBC12cpp),(T0*)C,_cien);
X129dca_inline(_cien,X56result_type(X129arg1(_cien)));
r25pop((T25*)(oBC12cpp));
}
 else 
if(((8<=z1)&&(z1<=9))){
_flag=r25target_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_c=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};_rf=X117run_feature(_c);
r25push_direct((T25*)(oBC12cpp),_rf,/*X117target*/((T0*)(((T132*)_c))->_target/*4*/),X117arguments(_c));
X51mapping_c(_rf);
r25pop((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else {_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*48*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_c=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};_rf=X117run_feature(_c);
r25push_same_target((T25*)(oBC12cpp),_rf,X117arguments(_c));
X51mapping_c(_rf);
r25pop((T25*)(oBC12cpp));
}}
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms388_1170));
/*]*/
}


T2 r388arg_count(T388* C){
T2 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*36*/))->_flat_list/*8*/)))->_upper/*12*//*)*/;
}
/*FI]*/
return R;
}


T6 r388dc_pco1(T388* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c=NULL;
_c=r388body_one_dc_pco(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X56is_current(/*X117target*/((T0*)(((T132*)_c))->_target/*4*/)))){
_rf6=X117run_feature(_c);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 50: 
break;
default:
_rf6=NULL;
};/*[IF*/
if((_rf6)!=((void*)(NULL))){
R=!(r50use_current(((T50*)_rf6)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388address_of_c_mapping(T388* C){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r388isa_in_line(C)){
r388address_of_c_mapping_wrapper(C);
}
 else if(r388use_current(C)){
r388mapping_name(C);
}
else{
r388address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r388address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


void r388mapping_c(T388* C){
T2 _tmp_expanded_idx=0;
/*[IF*/
if(r388isa_in_line(C)){
r388in_line(C);
}
else{
_tmp_expanded_idx=r25se_tmp_open((T0*)C);
r388default_mapping_function(C);
/*[IF*/
if((_tmp_expanded_idx)>=(0)){
r25se_tmp_close(_tmp_expanded_idx);
}
/*FI]*/
}
/*FI]*/
}


T6 r388can_be_dropped(T388* C){
T6 R=0;
R=((((((C)->_arguments/*36*/)==((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL))))&&(((C)->_require_assertion/*20*/)==((void*)(NULL))))&&(((C)->_ensure_assertion/*24*/)==((void*)(NULL))))&&(((C)->_rescue_compound/*52*/)==((void*)(NULL)));
/*[IF*/
if(R){
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
R=0;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388initialize(T388* C){
C->_arguments=((T303*)((C)->_base_feature/*32*/))->_arguments/*24*/;
C->_result_type=((T303*)((C)->_base_feature/*32*/))->_result_type/*56*/;
/*[IF*/
if(X54is_like_argument((C)->_result_type/*40*/)){
/*[IF*/
if(!(r187is_runnable((T187*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
C->_result_type=X54to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
}
else{
C->_result_type=X54to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_runnable((T187*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T303*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
C->_local_vars=r178to_runnable((T178*)((C)->_local_vars/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T303*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
C->_routine_body=r216to_runnable((T216*)((C)->_routine_body/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
C->_require_assertion=r303run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
C->_ensure_assertion=r303run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T303*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T363*)((T363*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r216to_runnable((T216*)((C)->_rescue_compound/*52*/),(C)->_current_type/*4*/);
}
/*FI]*/
}
/*No:RUN_FEATURE_4.require_assertion*/


T6 r388dc_pco2(T388* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c2=NULL;
T0* _c1=NULL;
_c1=r388body_one_dc_pco(C);
/*[IF*/
if((_c1)!=((void*)(NULL))){
_c2=/*X117target*/((T0*)(((T132*)_c1))->_target/*4*/);
if(NULL!=(_c2))switch(((T0*)_c2)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c2=NULL;
};/*[IF*/
if((_c2)!=((void*)(NULL))){
_rf6=X117run_feature(_c2);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 50: 
break;
default:
_rf6=NULL;
};/*[IF*/
if((((_rf6)!=((void*)(NULL)))&&(!(r50use_current(((T50*)_rf6)))))&&(X56is_current(/*X117target*/((T0*)(((T132*)_c2))->_target/*4*/)))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388nothing_comment(T388* C){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184a));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_759));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X54run_time_mark((C)->_current_type/*4*/));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\56';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_4.C_attribute_reader*/


void r388compute_use_current(T388* C){
T0* _ct=NULL;
_ct=(C)->_current_type/*4*/;
/*[IF*/
if(X54is_reference(_ct)){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
C->_use_current_state=14;
}
else{
r388std_compute_use_current(C);
}
/*FI]*/
}
else{
r388std_compute_use_current(C);
}
/*FI]*/
}


T0* r388body_one_result_dca(T388* C){
T0* R=NULL;
T0* _bf=NULL;
T0* _r=NULL;
T0* _rf=NULL;
T0* _writable_attribute=NULL;
T0* _c0c=NULL;
T0* _c=NULL;
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_c=NULL;
};/*[IF*/
if((_c)!=((void*)(NULL))){
_c0c=/*X117target*/((T0*)(((T132*)_c))->_target/*4*/);
if(NULL!=(_c0c))switch(((T0*)_c0c)->id) {
case 150: 
break;
default:
_c0c=NULL;
};/*[IF*/
if((_c0c)!=((void*)(NULL))){
/*[IF*/
if(X56is_current((((T150*)_c0c))->_target/*4*/)){
_writable_attribute=(((T150*)_c0c))->_run_feature/*12*/;
if(NULL!=(_writable_attribute))switch(((T0*)_writable_attribute)->id) {
case 356: 
break;
default:
_writable_attribute=NULL;
};/*[IF*/
if((_writable_attribute)!=((void*)(NULL))){
_r=((T24*)(r356run_class(((T356*)_writable_attribute))))->_running/*12*/;
_rf=X117run_feature(_c);
/*[IF*/
if((_rf)==((void*)(NULL))){
R=_c;
}
 else if(((_r)!=((void*)(NULL)))&&((r328count(((T328*)_r)))==(1))){
_r=((T24*)(X51run_class(_rf)))->_running/*12*/;
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r328count(((T328*)_r)))==(1))){
_bf=(((T356*)_writable_attribute))->_base_feature/*24*/;
/*[IF*/
if(!((((T314*)_bf))->_isa_redefinition/*24*/)){
R=_c;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.local_vars*/
/*No:RUN_FEATURE_4.fz_open_c_comment*/


void r388c_frame_descriptor_name_in(T388* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r388id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}
/*No:CST_ATT_REAL.base_class*/
/*No:CST_ATT_REAL.value_mem*/


T0* r211start_position(T211* C){
T0* R=NULL;
R=X83start_position(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r211is_merge_with(T211* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(/*(IRF4.1arguments*/NULL/*)*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r211merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.first_name*/
/*No:CST_ATT_REAL.em1*/
/*No:CST_ATT_REAL.header_comment*/
/*No:CST_ATT_REAL.names*/
/*No:CST_ATT_REAL.result_type*/
/*No:CST_ATT_REAL.code_require*/
/*No:CST_ATT_REAL.make_e_feature*/


void r211add_into(T211* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r70base_class((T70*)(X83start_position(r85item((T85*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r85count((T85*)((C)->_names/*8*/))))) {
_fn=r85item((T85*)((C)->_names/*8*/),_i);
/*[IF*/
if(r92has(((T92*)a1),X83to_key(_fn))){
_fn=/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r92at(((T92*)a1),X83to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X83start_position(_fn));
r21add_position(X83start_position(r85item((T85*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms93_41905));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r92put(((T92*)a1),(T0*)C,X83to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r211can_hide(T211* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r211error(r211start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X93start_position(a1));
r211error(r211start_position(C),((T0*)ms93_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r211merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.ensure_assertion*/


T0* r211try_to_undefine(T211* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X83start_position(a1));
_fn2=r85feature_name((T85*)((C)->_names/*8*/),X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X83undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r211try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X284set_clients*//*[IRF3.3set_clients*/((((T287*)(((T287*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r211merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.is_deferred*/
/*No:CST_ATT_REAL.set_clients*/
/*No:CST_ATT_REAL.value*/
/*No:CST_ATT_REAL.nb_errors*/


T0* r211to_run_feature(T211* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(a1);
R=r24at(((T24*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 376: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T376*n=malloc(sizeof(*n));
*n=M376;
r376make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r211merge_header_comments(T211* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/);
}
 else if((/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X93set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_REAL.arguments*/
/*No:CST_ATT_REAL.require_assertion*/


T0* r211try_to_undefine_aux(T211* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r211start_position(C));
r211error(X83start_position(a1),((T0*)ms201_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_REAL.fz_dot*/
/*No:CST_ATT_REAL.stupid_switch*/


void r211error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r211make(T211* C,T0* a1,T0* a2,T0* a3){
/*[IRF3.3make_e_feature*/((((T211*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
C->_value_mem=a3;
}


void r211collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_REAL.set_header_comment*/
/*No:CST_ATT_REAL.clients*/


T0* r290run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r358clear((T358*)(oBC93require_collector));
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),1,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
/*[IF*/
if(!(r358empty((T358*)(oBC93require_collector)))){
_i=1;
while (!((_i)>(((T358*)(oBC93require_collector))->_upper/*8*/))) {
_er=r358item((T358*)(oBC93require_collector),_i);
_hc=(((T286*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T286*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r290runnable((((T286*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T286*n=malloc(sizeof(*n));
*n=M286;
r286make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T286*)(((T286*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma358(1,
_er);
}
else{
r358add_last(((T358*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T357*n=malloc(sizeof(*n));
*n=M357;
/*[IRF3.3make*/((((T357*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.base_class*/


void r290set_rescue_compound(T290* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r21add_position(r216start_position(((T216*)a1)));
}
else{
r21add_position(r290start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms289_126759);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:EXTERNAL_PROCEDURE.base_class_name*/


T0* r290start_position(T290* C){
T0* R=NULL;
R=X83start_position(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r290is_merge_with(T290* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)((C)->_arguments/*20*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r290merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r290runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r106empty(((T106*)a1)))){
R=r106twin(((T106*)a1));
_i=(((T106*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r103to_runnable((T103*)(r106item(((T106*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r290error(r103start_position((T103*)(r106item(((T106*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T106* C1=((T106*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.first_name*/
/*No:EXTERNAL_PROCEDURE.em1*/


T6 r290use_current(T290* C){
T6 R=0;
R=X288use_current((C)->_native/*40*/,(T0*)C);
return R;
}
/*No:EXTERNAL_PROCEDURE.header_comment*/
/*No:EXTERNAL_PROCEDURE.names*/


void r290mapping_c_name_in(T290* C,T0* a1){
r63mapping_c_in((T63*)((C)->_base_class/*4*/),a1);
r7append(((T7*)a1),X83to_key(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/));
}
/*No:EXTERNAL_PROCEDURE.fz_03*/


void r290make_external_routine(T290* C,T0* a1,T0* a2){
C->_native=a1;
C->_alias_string=a2;
}
/*No:EXTERNAL_PROCEDURE.result_type*/
/*No:EXTERNAL_PROCEDURE.code_require*/
/*No:EXTERNAL_PROCEDURE.make_e_feature*/


void r290add_into(T290* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r70base_class((T70*)(X83start_position(r85item((T85*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r85count((T85*)((C)->_names/*8*/))))) {
_fn=r85item((T85*)((C)->_names/*8*/),_i);
/*[IF*/
if(r92has(((T92*)a1),X83to_key(_fn))){
_fn=/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r92at(((T92*)a1),X83to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X83start_position(_fn));
r21add_position(X83start_position(r85item((T85*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms93_41905));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r92put(((T92*)a1),(T0*)C,X83to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r290can_hide(T290* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
{/*AT*/r21add_position(X93start_position(a1));
r290error(r290start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r290error(r290start_position(C),((T0*)ms93_83182));
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r21add_position(X93start_position(a1));
r290error(r290start_position(C),((T0*)ms93_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_a_in((T187*)((C)->_arguments/*20*/),X93arguments(a1),a2))){
r21add_position(X93start_position(a1));
r21add_position(r290start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r290merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.ensure_assertion*/


T0* r290run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r106clear((T106*)(oBC93assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),2,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
_r=r290runnable(oBC93assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T215*n=malloc(sizeof(*n));
*n=M215;
r215make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T215*)(((T215*)R))))->_header_comment)=(((T371*)(oBC93header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r290check_obsolete(T290* C){
/*[IF*/
if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms214_39396);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T171*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r290warning(r290start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r290try_to_undefine(T290* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X83start_position(a1));
_fn2=r85feature_name((T85*)((C)->_names/*8*/),X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X83undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r290try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X284set_clients*//*[IRF3.3set_clients*/((((T287*)(((T287*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r290merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.is_deferred*/
/*No:EXTERNAL_PROCEDURE.set_clients*/
/*No:EXTERNAL_PROCEDURE.native*/
/*No:EXTERNAL_PROCEDURE.code_ensure*/
/*No:EXTERNAL_PROCEDURE.nb_errors*/


void r290make_routine(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
/*[IRF3.3make_e_feature*/((((T290*)(C)))->_names)=(a1);
/*]*/
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}


T0* r290to_run_feature(T290* C,T0* a1,T0* a2){
T0* R=NULL;
r290check_obsolete(C);
{T387*n=malloc(sizeof(*n));
*n=M387;
r387make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r290merge_header_comments(T290* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/);
}
 else if((/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X93set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_PROCEDURE.arguments*/
/*No:EXTERNAL_PROCEDURE.require_assertion*/


T0* r290external_c_name(T290* C){
T0* R=NULL;
/*[IF*/
if(((C)->_alias_string/*44*/)==((void*)(NULL))){
R=X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
}
else{
R=(C)->_alias_string/*44*/;
}
/*FI]*/
return R;
}


void r290warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}


T0* r290try_to_undefine_aux(T290* C,T0* a1,T0* a2){
T0* R=NULL;
{T285*n=malloc(sizeof(*n));
*n=M285;
r285from_effective(n,a1,(C)->_arguments/*20*/,(C)->_require_assertion/*28*/,(C)->_ensure_assertion/*32*/,a2);
R=(T0*)n;
}
return R;
}
/*No:EXTERNAL_PROCEDURE.set_ensure_assertion*/
/*No:EXTERNAL_PROCEDURE.fz_bad_assertion*/
/*No:EXTERNAL_PROCEDURE.fz_dot*/


T6 r290stupid_switch(T290* C,T0* a1,T0* a2){
T6 R=0;
R=X288stupid_switch((C)->_native/*40*/,X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/));
return R;
}
/*No:EXTERNAL_PROCEDURE.alias_string*/


void r290error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r290make(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r290make_routine(C,a1,a2,a3,a4,a5);
r290make_external_routine(C,a6,a7);
}
/*No:EXTERNAL_PROCEDURE.end_comment*/


void r290collect_for(T290* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(((T215*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r215add_into((T215*)((C)->_ensure_assertion/*32*/),oBC93assertion_collector);
}
/*FI]*/
}
/*FI]*/
}


void r290set_header_comment(T290* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:EXTERNAL_PROCEDURE.clients*/
/*No:EXTERNAL_PROCEDURE.obsolete_mark*/
/*No:IFTHEN.nb_errors*/
/*No:IFTHEN.static_false*/
/*No:IFTHEN.non_static*/
/*No:IFTHEN.fz_if*/
/*No:IFTHEN.expression*/
/*No:IFTHEN.fz_is_not_boolean*/
/*No:IFTHEN.then_compound*/


T6 r226use_current(T226* C){
T6 R=0;
R=X56use_current((C)->_expression/*0*/);
/*[IF*/
if((!(R))&&(((C)->_then_compound/*4*/)!=((void*)(NULL)))){
R=r216use_current((T216*)((C)->_then_compound/*4*/));
}
/*FI]*/
return R;
}


T2 r226compile_to_c(T226* C,T6 a1){
T2 R=0;
T6 _trace=0;
/*[IF*/
if(X56is_static((C)->_expression/*0*/)){
r25incr_static_expression_count((T25*)(oBC12cpp));
/*[IF*/
if((X56static_value((C)->_expression/*0*/))==(1)){
r226print_else(a1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms226_4935));
/*]*/
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_then_compound/*4*/));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
R=20;
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms226_3378));
/*]*/
R=21;
}
/*FI]*/
}
else{
R=22;
_trace=(!(X56c_simple((C)->_expression/*0*/)))&&(r43no_check((T43*)(oBC12run_control)));
r226print_else(a1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_420));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_trace){
r25trace_boolean_expression((T25*)(oBC12cpp),(C)->_expression/*0*/);
}
else{
X56compile_to_c((C)->_expression/*0*/);
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_272));
/*]*/
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_then_compound/*4*/));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
}
/*FI]*/
return R;
}


T0* r226to_runnable(T226* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _tc=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X56to_runnable((C)->_expression/*0*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r226error(X56start_position((C)->_expression/*0*/),((T0*)ms226_32982));
}
else{
C->_expression=_e;
_t=X56result_type((C)->_expression/*0*/);
/*[IF*/
if(!(X54is_boolean(_t))){
/*[IRF3.6append*/{T0* b1=((T0*)ms226_75563);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(X56result_type((C)->_expression/*0*/),((T0*)ms13_18320));
r21add_position(X56start_position((C)->_expression/*0*/));
r21print_as_error((T21*)(oBC12eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
_tc=r216to_runnable((T216*)((C)->_then_compound/*4*/),a1);
/*[IF*/
if((_tc)!=((void*)(NULL))){
C->_then_compound=_tc;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
{T226*n=malloc(sizeof(*n));
*n=M226;
r226make(n,(C)->_expression/*0*/,(C)->_then_compound/*4*/);
R=(T0*)n;
}
R=r226to_runnable(((T226*)R),a1);
}
/*FI]*/
return R;
}
/*No:IFTHEN.current_type*/
/*No:IFTHEN.fz_11*/
/*No:IFTHEN.fz_12*/


void r226collect_c_tmp(T226* C){
X56collect_c_tmp((C)->_expression/*0*/);
}


void r226error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r226make(T226* C,T0* a1,T0* a2){
C->_expression=a1;
C->_then_compound=a2;
}


void r226print_else(T6 a1){
/*[IF*/
if(a1){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms226_3984));
/*]*/
}
/*FI]*/
}


void r226afd_check(T226* C){
X56afd_check((C)->_expression/*0*/);
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_then_compound/*4*/));
}
/*FI]*/
}
/*No:IFTHEN.static_true*/
/*No:CLIENT_LIST.start_position*/


T6 r101gives_permission_to_any(T101* C){
T6 R=0;
/*[IF*/
if(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/){
R=1;
}
 else if(((C)->_list/*4*/)==((void*)(NULL))){
}
else{
R=r195gives_permission_to_any((T195*)((C)->_list/*4*/));
}
/*FI]*/
return R;
}


void r101merge(T101* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
{T195*n=malloc(sizeof(*n));
*n=M195;
r195merge(n,a2,a3);
C->_list=(T0*)n;
}
}
/*No:CLIENT_LIST.is_omitted*/


T6 r101gives_permission_to(T101* C,T0* a1){
T6 R=0;
/*[IF*/
if(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/){
R=1;
}
 else if(((C)->_list/*4*/)==((void*)(NULL))){
}
else{
R=r195gives_permission_to((T195*)((C)->_list/*4*/),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
r21add_position((C)->_start_position/*0*/);
/*[IRF3.6append*/{T0* b1=(((T64*)a1))->_to_string/*0*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms101_56885);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r101make(T101* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}


T0* r101append(T101* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)==((void*)(a1)))||(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/)){
R=(T0*)C;
}
else{
/*[IF*/
if(r101gives_permission_to_any(C)){
R=(T0*)C;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(/*(IRF4.7is_omitted*/((((T101*)a1))->_start_position/*0*/)==(NULL)/*)*/){
R=a1;
}
 else if(r101gives_permission_to_any(((T101*)a1))){
R=a1;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
{T101*n=malloc(sizeof(*n));
*n=M101;
r101merge(n,(C)->_start_position/*0*/,(C)->_list/*4*/,(((T101*)a1))->_list/*4*/);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CLIENT_LIST.omitted*/


T0* r101merge_with(T101* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r101gives_permission_to_any(C)){
R=(T0*)C;
}
 else if(r101gives_permission_to_any(((T101*)a1))){
R=a1;
}
else{
{T101*n=malloc(sizeof(*n));
*n=M101;
r101merge(n,(C)->_start_position/*0*/,(C)->_list/*4*/,(((T101*)a1))->_list/*4*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CLIENT_LIST.list*/
/*No:FUNCTION.rescue_compound*/
/*No:FUNCTION.use_current_state*/


T0* r303run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r358clear((T358*)(oBC93require_collector));
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),1,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
/*[IF*/
if(!(r358empty((T358*)(oBC93require_collector)))){
_i=1;
while (!((_i)>(((T358*)(oBC93require_collector))->_upper/*8*/))) {
_er=r358item((T358*)(oBC93require_collector),_i);
_hc=(((T286*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T286*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r303runnable((((T286*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T286*n=malloc(sizeof(*n));
*n=M286;
r286make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T286*)(((T286*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma358(1,
_er);
}
else{
r358add_last(((T358*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T357*n=malloc(sizeof(*n));
*n=M357;
/*[IRF3.3make*/((((T357*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:FUNCTION.base_class*/
/*No:FUNCTION.set_rescue_compound*/
/*No:FUNCTION.base_class_name*/


T0* r303start_position(T303* C){
T0* R=NULL;
R=X83start_position(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r303is_merge_with(T303* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*56*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)((C)->_arguments/*24*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*56*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r303merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r303runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r106empty(((T106*)a1)))){
R=r106twin(((T106*)a1));
_i=(((T106*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r103to_runnable((T103*)(r106item(((T106*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r303error(r103start_position((T103*)(r106item(((T106*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T106* C1=((T106*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:FUNCTION.not_computed*/
/*No:FUNCTION.first_name*/
/*No:FUNCTION.em1*/
/*No:FUNCTION.header_comment*/
/*No:FUNCTION.names*/


void r303mapping_c_name_in(T303* C,T0* a1){
r63mapping_c_in((T63*)((C)->_base_class/*4*/),a1);
r7append(((T7*)a1),X83to_key(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/));
}
/*No:FUNCTION.fz_03*/
/*No:FUNCTION.result_type*/
/*No:FUNCTION.code_require*/
/*No:FUNCTION.make_e_feature*/


void r303add_into(T303* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r70base_class((T70*)(X83start_position(r85item((T85*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r85count((T85*)((C)->_names/*8*/))))) {
_fn=r85item((T85*)((C)->_names/*8*/),_i);
/*[IF*/
if(r92has(((T92*)a1),X83to_key(_fn))){
_fn=/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r92at(((T92*)a1),X83to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X83start_position(_fn));
r21add_position(X83start_position(r85item((T85*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms93_41905));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r92put(((T92*)a1),(T0*)C,X83to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r303can_hide(T303* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r303error(r303start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r303error(r303start_position(C),((T0*)ms93_83182));
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r21add_position(X93start_position(a1));
r303error(r303start_position(C),((T0*)ms93_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*56*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_a_in((T187*)((C)->_arguments/*24*/),X93arguments(a1),a2))){
r21add_position(X93start_position(a1));
r21add_position(r303start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r303merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:FUNCTION.ensure_assertion*/
/*No:FUNCTION.us_item*/


T0* r303run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r106clear((T106*)(oBC93assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),2,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
_r=r303runnable(oBC93assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T215*n=malloc(sizeof(*n));
*n=M215;
r215make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T215*)(((T215*)R))))->_header_comment)=(((T371*)(oBC93header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}
/*No:FUNCTION.us_array*/


void r303check_obsolete(T303* C){
/*[IF*/
if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms214_39396);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T171*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r303warning(r303start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r303try_to_undefine(T303* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X83start_position(a1));
_fn2=r85feature_name((T85*)((C)->_names/*8*/),X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X83undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r303try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X284set_clients*//*[IRF3.3set_clients*/((((T287*)(((T287*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r303merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:FUNCTION.is_deferred*/
/*No:FUNCTION.set_clients*/
/*No:FUNCTION.nb_errors*/
/*No:FUNCTION.code_ensure*/


void r303make_routine(T303* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
/*[IRF3.3make_e_feature*/((((T303*)(C)))->_names)=(a1);
/*]*/
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}


T0* r303to_run_feature(T303* C,T0* a1,T0* a2){
T0* R=NULL;
r303check_obsolete(C);
{T388*n=malloc(sizeof(*n));
*n=M388;
r388make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r303merge_header_comments(T303* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/);
}
 else if((/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X93set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:FUNCTION.arguments*/
/*No:FUNCTION.us_fixed_array*/
/*No:FUNCTION.require_assertion*/


void r303make_effective_routine(T303* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r303make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=25;
}


void r303warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}


T0* r303try_to_undefine_aux(T303* C,T0* a1,T0* a2){
T0* R=NULL;
{T287*n=malloc(sizeof(*n));
*n=M287;
r287from_effective(n,a1,(C)->_arguments/*24*/,(C)->_result_type/*56*/,(C)->_require_assertion/*32*/,(C)->_ensure_assertion/*36*/,a2);
R=(T0*)n;
}
return R;
}
/*No:FUNCTION.set_ensure_assertion*/
/*No:FUNCTION.fz_bad_assertion*/
/*No:FUNCTION.fz_dot*/


T6 r303stupid_switch(T303* C,T0* a1,T0* a2){
T6 R=0;
T2 _i=0;
T0* _bcn=NULL;
T0* _rf=NULL;
T0* _fn=NULL;
T0* _rf4=NULL;
_bcn=((T64*)(((T63*)((C)->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
/*[IF*/
if(((((T0*)ms14_1764))==((void*)(X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/))))&&(((((T0*)ms14_1990))==((void*)(_bcn)))||((((T0*)ms14_14982))==((void*)(_bcn))))){
_i=(((T328*)a2))->_upper/*8*/;
R=1;
while (!((!(R))||((_i)==(0)))) {
_rf=r24dynamic((T24*)(r328item(((T328*)a2),_i)),a1);
/*[IF*/
if(X54is_expanded(X51result_type(_rf))){
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
}
else{
_rf4=r24dynamic((T24*)(r328first(((T328*)a2))),a1);
if(NULL!=(_rf4))switch(((T0*)_rf4)->id) {
case 388: 
break;
default:
_rf4=NULL;
};/*[IF*/
if(r388is_empty_or_null_body(((T388*)_rf4))){
R=1;
}
else{
_fn=r388is_attribute_reader(((T388*)_rf4));
/*[IF*/
if((_fn)!=((void*)(NULL))){
R=r25stupid_switch(r24get_feature((T24*)(X51run_class(a1)),_fn));
}
else{
_rf=r388is_direct_call_on_attribute(((T388*)_rf4));
/*[IF*/
if((_rf)!=((void*)(NULL))){
R=r25stupid_switch(_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r303error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r303make(T303* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r303make_effective_routine(C,a1,a2,a4,a5,a6,a7,a8);
C->_result_type=a3;
}
/*No:FUNCTION.routine_body*/
/*No:FUNCTION.end_comment*/


void r303collect_for(T303* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(((T215*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r215add_into((T215*)((C)->_ensure_assertion/*36*/),oBC93assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:FUNCTION.local_vars*/


void r303set_header_comment(T303* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:FUNCTION.clients*/
/*No:FUNCTION.obsolete_mark*/


T0* r10command_name(void){
T0* R=NULL;
R=((T0*)ms14_20868);
return R;
}
T0*oBC1std_error=NULL;
/*No:COMPILE_TO_C.nb_errors*/
/*No:COMPILE_TO_C.state*/
/*No:COMPILE_TO_C.c_suffix*/
/*No:COMPILE_TO_C.o_suffix*/
/*No:COMPILE_TO_C.us_compile_to_c*/


void r10error_level(T10* C,T0* a1){
C->_state=9;
/*[IRF3.6append*/{T0* b1=r10command_name();
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms11_32864);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(C)->_level/*4*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms11_7788);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_47);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_error((T21*)(oBC12eh));
}
/*No:COMPILE_TO_C.root_class*/


T0* r10system_tools(void){
if(fBC12system_tools==0){
fBC12system_tools=1;
{T36*n=malloc(sizeof(*n));
*n=M36;
r36make(n);
oBC12system_tools=(T0*)n;
}
}
return oBC12system_tools;}


void r10automat(T10* C){
T0* _a=NULL;
T2 _arg=0;
_arg=1;
while (!(((_arg)>(/*(IRF4.9argument_count*/((T62*)(r10command_arguments()))->_upper/*8*//*)*/))||(((C)->_state/*0*/)>(7)))) {
_a=r10argument(_arg);
{int z1=(C)->_state/*0*/;

if((0==z1)){
/*[IF*/
if((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)!=('\55')){
/*[IF*/
if(r7has_suffix(((T7*)_a),/*(IRF4.9o_suffix*/r36o_suffix_memory((T36*)(r10system_tools()))/*)*/)){
r25add_c_object((T25*)(oBC12cpp),_a);
}
 else if(r7has_suffix(((T7*)_a),((T0*)ms12_296))){
r25add_c_object((T25*)(oBC12cpp),_a);
}
 else if(((C)->_root_class/*8*/)==((void*)(NULL))){
C->_root_class=_a;
r43compute_root_class((T43*)(oBC12run_control),_a);
C->_state=2;
}
else{
r25add_c_compiler_option((T25*)(oBC12cpp),_a);
}
/*FI]*/
}
 else if(r7is_equal(ms10_10920,_a)){
/*[IRF3.3set_no_main*/((((T25*)((T25*)(oBC12cpp))))->_no_main)=(1);
/*]*/
}
 else if(r7is_equal(ms10_7146,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_boost*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-6);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_12942,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_no_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-5);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_28042,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_require_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-4);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_24622,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_ensure_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-3);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_35232,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_invariant_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-2);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_18469,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_loop_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-1);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_15380,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_all_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(0);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_21120,_a)){
/*[IF*/
if(((C)->_level/*4*/)!=((void*)(NULL))){
r10error_level(C,_a);
}
else{
/*[IRF3.3set_debug_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(1);
/*]*/
C->_level=_a;
}
/*FI]*/
}
 else if(r7is_equal(ms10_37213,_a)){
/*[IRF3.3set_case_insensitive*/((((T34*)((T34*)(oBC12eiffel_parser))))->_case_insensitive)=(1);
/*]*/
}
 else if(r7is_equal(ms10_17908,_a)){
/*[IRF3.3set_no_warning*/((((T21*)((T21*)(oBC12eh))))->_no_warning)=(1);
/*]*/
}
 else if(r7is_equal((T7*)(((T0*)ms13_10392)),_a)){
}
 else if(r7is_equal(ms10_6438,_a)){
r330no_gc((T330*)(oBC12gc_handler));
}
 else if(r7is_equal(ms10_10800,_a)){
r330set_info_flag((T330*)(oBC12gc_handler));
}
 else if(r7is_equal(ms10_13491,_a)){
/*[IRF3.3set_no_strip*/((((T25*)((T25*)(oBC12cpp))))->_no_strip)=(1);
/*]*/
}
 else if(r7is_equal(ms10_13815,_a)){
/*[IRF3.3set_no_split*/((((T25*)((T25*)(oBC12cpp))))->_no_split)=(1);
/*]*/
}
 else if(r7is_equal(ms10_6552,_a)){
/*[IRF3.3set_trace*/((((T43*)((T43*)(oBC12run_control))))->_trace)=(1);
/*]*/
}
 else if(r7is_equal(ms10_747,_a)){
C->_state=3;
}
 else if(r7is_equal(ms10_6672,_a)){
C->_state=4;
}
 else if(r7has_prefix(((T7*)_a),((T0*)ms10_312))){
r25add_c_library((T25*)(oBC12cpp),_a);
}
 else if(r7is_equal(ms10_318,_a)){
C->_state=1;
}
 else if(((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)==('\55'))&&((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(2)-(1)]/*)*/)==('o'))){
r7remove_first(((T7*)_a),2);
r25set_output_name((T25*)(oBC12cpp),_a);
/*[IRF3.3set_oflag*/((((T25*)((T25*)(oBC12cpp))))->_oflag)=(((T0*)ms10_318a));
/*]*/
}
else{
r25add_c_compiler_option((T25*)(oBC12cpp),_a);
}
/*FI]*/
}
 else 
if((1==z1)){
r25set_output_name((T25*)(oBC12cpp),_a);
C->_state=0;
}
 else 
if((2==z1)){
/*[IF*/
if((((/*(IRF4.6item*/((((T7*)_a))->_storage/*0*/)[(1)-(1)]/*)*/)==('\55'))||(r7has_suffix(((T7*)_a),((T0*)ms12_296))))||(r7has_suffix(((T7*)_a),/*(IRF4.9o_suffix*/r36o_suffix_memory((T36*)(r10system_tools()))/*)*/))){
_arg=(_arg)-(1);
}
else{
C->_start_proc=_a;
}
/*FI]*/
C->_state=0;
}
 else 
if((3==z1)){
/*[IRF3.3clear*/((((T7*)((T7*)(r25c_compiler()))))->_count)=(0);
/*]*/
r7append((T7*)(r25c_compiler()),_a);
C->_state=0;
}
 else {/*[IRF3.3set_cecil_path*/((((T43*)((T43*)(oBC12run_control))))->_cecil_path)=(_a);
/*]*/
C->_state=0;
}}
_arg=(_arg)+(1);
}
/*[IF*/
if(((C)->_root_class/*8*/)==((void*)(NULL))){
r35put_string((T35*)(oBC1std_error),((T0*)ms10_38827));
exit(1);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((T43*)(oBC12run_control))->_trace/*4*/){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IRF3.3set_no_check*/((((T43*)((T43*)(oBC12run_control))))->_level)=(-5);
/*]*/
}
/*FI]*/
}
/*FI]*/
r22compile_to_c((T22*)(oBC12small_eiffel),(C)->_root_class/*8*/,(C)->_start_proc/*12*/);
}
/*FI]*/
}
/*No:COMPILE_TO_C.us_make*/
/*No:COMPILE_TO_C.fz_dot*/


T0* r10argument(T2 a1){
T0* R=NULL;
R=/*(IRF4.6item*/(((T62*)(r10command_arguments()))->_storage/*0*/)[a1]/*)*/;
return R;
}


void r10make(T10* C){
/*[IF*/
if((/*(IRF4.9argument_count*/((T62*)(r10command_arguments()))->_upper/*8*//*)*/)<(1)){
r36bad_use_exit((T36*)(r10system_tools()),((T0*)ms10_20868));
}
/*FI]*/
r28search_for_verbose_flag((T28*)(oBC12echo));
C->_start_proc=((T0*)ms14_1696);
/*[IRF3.3set_drop_comments*/((((T34*)((T34*)(oBC12eiffel_parser))))->_drop_comments)=(1);
/*]*/
r10automat(C);
}
/*No:COMPILE_TO_C.level*/
/*No:COMPILE_TO_C.argument_count*/
/*No:COMPILE_TO_C.exit_failure_code*/
/*No:COMPILE_TO_C.fz_verbose_flag*/
/*No:COMPILE_TO_C.start_proc*/
int fBC1command_arguments=0;
T0*oBC1command_arguments=NULL;

