/*
-- 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"


T0* r240to_runnable_integer(T240* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X51current_type*/((T0*)((T324*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
_e=X56to_runnable((C)->_expression/*8*/,_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X54is_integer(X56result_type(_e)))){
C->_expression=_e;
C->_expression_value=X56to_integer((C)->_expression/*8*/);
r233add_when_item_1((T233*)((C)->_e_when/*4*/),(T0*)C);
}
else{
r240error(X56start_position((C)->_expression/*8*/),((T0*)ms13_21798));
}
/*FI]*/
R=(T0*)C;
}
else{
{T240*n=malloc(sizeof(*n));
*n=M240;
/*[IRF3.3make*/((((T240*)(n)))->_expression)=((C)->_expression/*8*/);
/*]*/
R=(T0*)n;
}
R=r240to_runnable_integer(((T240*)R),a1);
}
/*FI]*/
return R;
}


T0* r240start_position(T240* C){
T0* R=NULL;
R=X56start_position((C)->_expression/*8*/);
return R;
}


T0* r240twin(T240* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T240*)R)=*C;
return R;
}
/*No:WHEN_ITEM_1.expression_value*/
/*No:WHEN_ITEM_1.expression*/
/*No:WHEN_ITEM_1.fz_bcv*/


void r240error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:WHEN_ITEM_1.make*/
/*No:WHEN_ITEM_1.e_when*/
/*No:WHEN_ITEM_1.clear_e_when*/
/*No:WHEN_ITEM_1.fz_biv*/


T0* r240to_runnable_character(T240* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X51current_type*/((T0*)((T324*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
_e=X56to_runnable((C)->_expression/*8*/,_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X54is_character(X56result_type(_e)))){
C->_expression=_e;
C->_expression_value=X56to_integer((C)->_expression/*8*/);
r233add_when_item_1((T233*)((C)->_e_when/*4*/),(T0*)C);
}
else{
r240error(X56start_position((C)->_expression/*8*/),((T0*)ms13_25940));
}
/*FI]*/
R=(T0*)C;
}
else{
{T240*n=malloc(sizeof(*n));
*n=M240;
/*[IRF3.3make*/((((T240*)(n)))->_expression)=((C)->_expression/*8*/);
/*]*/
R=(T0*)n;
}
R=r240to_runnable_character(((T240*)R),a1);
}
/*FI]*/
return R;
}


void r363initialize_runtime(T363* C){
/*[IF*/
if((C)->_used/*0*/){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms363_19584));
/*]*/
}
/*FI]*/
}
/*No:EXCEPTIONS_HANDLER.set_used*/


void r363incorrect_inspect_value(T363* C,T0* a1){
/*[IF*/
if((C)->_used/*0*/){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms363_57823));
/*]*/
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms363_114705));
/*]*/
r25put_position((T25*)(oBC12cpp),a1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_348));
/*]*/
}
/*FI]*/
}
/*No:EXCEPTIONS_HANDLER.used*/


void r363get_started(T363* C){
T6 _no_check=0;
_no_check=r43no_check((T43*)(oBC12run_control));
/*[IF*/
if((C)->_used/*0*/){
r25sys_runtime_h((T25*)(oBC12cpp),((T0*)ms363_16980));
r25sys_runtime_c(((T0*)ms363_16980));
}
/*FI]*/
}
/*No:EXCEPTIONS_HANDLER.fz_exceptions*/
/*No:EXCEPTIONS_HANDLER.fz_14*/
/*No:EXCEPTIONS_HANDLER.make*/


void r363se_evobt(T363* C){
/*[IF*/
if((C)->_used/*0*/){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms363_158804));
/*]*/
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms363_107489));
/*]*/
}
/*FI]*/
}


T2 r152static_value(T152* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=((T24*)(X51run_class((C)->_run_feature/*16*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X51is_static(_rf)){
R=X51static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.call_proc_call_c2c*/
/*No:CALL_1_C.feature_name*/


void r152finalize(T152* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}


T6 r152is_static(T152* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=((T24*)(X51run_class((C)->_run_feature/*16*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X51is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.is_manifest_string*/


T0* r152start_position(T152* C){
T0* R=NULL;
R=X83start_position((C)->_feature_name/*8*/);
return R;
}
/*No:CALL_1_C.c_simple*/


T0* r152add_comment(T152* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r152to_integer(T152* C){
T2 R=0;
r152error(r152start_position(C),((T0*)ms13_45846));
return R;
}


T6 r152use_current(T152* C){
T6 R=0;
/*[IF*/
{/*AT*/R=X149use_current((C)->_arguments/*12*/);
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*16*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r152to_runnable(T152* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r152runnable_expression((C)->_target/*4*/,a1);
_a=r152runnable_args((C)->_arguments/*12*/,a1);
_rf=r152run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r152run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*12*/)))){
R=(T0*)C;
}
else{
{T152*n=malloc(sizeof(*n));
*n=M152;
r152with(n,_t,(C)->_feature_name/*8*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r152compile_to_c_old(T152* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149compile_to_c_old((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_1_C.is_pre_computable*/
/*No:CALL_1_C.fz_bad_argument*/


void r152collect_c_tmp(T152* C){
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*16*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
if(((C)->_arguments/*12*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_1_C.fz_iinaiv*/


T0* r152result_type(T152* C){
T0* R=NULL;
T0* _tla=NULL;
R=X51result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X54run_type(X56result_type(r152arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.run_feature*/


T0* r152runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X149to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X149start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.fz_07*/
/*No:CALL_1_C.arg_count*/


void r152with(T152* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r152run_feature_match(C,a5);
}
/*No:CALL_1_C.is_result*/
/*No:CALL_1_C.fatal_error*/


void r152mapping_c_target(T152* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r152result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[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*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


void r152run_feature_match(T152* C,T0* a1){
r152run_feature_has_result(C);
X149match_with((C)->_arguments/*12*/,(C)->_run_feature/*16*/,a1);
}
/*No:CALL_1_C.arguments*/


T0* r152runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_1_C.can_be_dropped*/


void r152c_declare_for_old(T152* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149c_declare_for_old((C)->_arguments/*12*/);
}
/*FI]*/
}
/*No:CALL_1_C.dca_inline_argument*/
/*No:CALL_1_C.compile_to_c*/
/*No:CALL_1_C.isa_dca_inline_argument*/


T0* r152arg1(T152* C){
T0* R=NULL;
R=/*X149first*/((T0*)/*(IRF4.3first*/((T149*)((C)->_arguments/*12*/))->_first_one/*4*//*)*/);
return R;
}


void r152run_feature_has_result(T152* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(X83start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r152run_feature_for(T152* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*8*/,a2);
return R;
}
/*No:CALL_1_C.target*/


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


void r152make(T152* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_1_C.is_current*/


void r152mapping_c_arg(T152* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r152result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[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*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T152* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_1_C.is_void*/


void r152afd_check(T152* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149afd_check((C)->_arguments/*12*/);
}
/*FI]*/
}


T2 r150static_value(T150* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _tb=NULL;
T0* _tt=NULL;
T0* _name=NULL;
_tt=X56result_type((C)->_target/*4*/);
_name=X83to_string(/*X51name*/((T0*)((T324*)((C)->_run_feature/*12*/))->_name/*16*/));
/*[IF*/
if((((T0*)ms14_34672))==((void*)(_name))){
/*[IF*/
if(X54is_expanded(_tt)){
R=1;
}
/*FI]*/
}
 else if((((T0*)ms14_60434))==((void*)(_name))){
/*[IF*/
if(X54is_basic_eiffel_expanded(_tt)){
R=1;
}
/*FI]*/
}
 else if(((((T0*)ms14_2840a))==((void*)(_name)))&&(X54is_bit(_tt))){
_tb=_tt;
if(NULL!=(_tb))switch(((T0*)_tb)->id) {
case 276: case 277: 
break;
default:
_tb=NULL;
};R=X53nb(_tb);
}
else{
_running=((T24*)(X51run_class((C)->_run_feature/*12*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*12*/);
/*[IF*/
if(X51is_static(_rf)){
R=X51static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_0_C.call_proc_call_c2c*/
/*No:CALL_0_C.feature_name*/


void r150finalize(T150* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*12*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}


T6 r150is_static(T150* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _tt=NULL;
T0* _name=NULL;
_tt=X56result_type((C)->_target/*4*/);
_name=X83to_string(/*X51name*/((T0*)((T324*)((C)->_run_feature/*12*/))->_name/*16*/));
/*[IF*/
if((((T0*)ms14_34672))==((void*)(_name))){
R=1;
}
 else if((((T0*)ms14_60434))==((void*)(_name))){
R=1;
}
 else if(((((T0*)ms14_2840a))==((void*)(_name)))&&(X54is_bit(_tt))){
R=1;
}
else{
_running=((T24*)(X51run_class((C)->_run_feature/*12*/)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))==(1))){
_rf=r24dynamic((T24*)(r328first(((T328*)_running))),(C)->_run_feature/*12*/);
/*[IF*/
if(X51is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_0_C.is_manifest_string*/


T0* r150start_position(T150* C){
T0* R=NULL;
R=X83start_position((C)->_feature_name/*8*/);
return R;
}
/*No:CALL_0_C.c_simple*/


T0* r150add_comment(T150* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r150to_integer(T150* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(C)->_run_feature/*12*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 376: 
break;
default:
_rf1=NULL;
};/*[IF*/
if((_rf1)==((void*)(NULL))){
r150error(r150start_position(C),((T0*)ms13_45846));
}
else{
R=X56to_integer((((T376*)_rf1))->_value/*36*/);
}
/*FI]*/
return R;
}


T6 r150use_current(T150* C){
T6 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*12*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r150to_runnable(T150* C,T0* a1){
T0* R=NULL;
T0* _path=NULL;
T2 _line=0;
T0* _rf=NULL;
T0* _t=NULL;
_line=/*(IRF4.6line*/(((T70*)(X56start_position((C)->_target/*4*/)))->_mem_line_column/*4*/)/(1000)/*)*/;
_path=r70path((T70*)(X56start_position((C)->_target/*4*/)));
_t=r150runnable_expression((C)->_target/*4*/,a1);
_rf=r150run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*12*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r150run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T150*n=malloc(sizeof(*n));
*n=M150;
r150with(n,_t,(C)->_feature_name/*8*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r150compile_to_c_old(T150* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T6 r150is_pre_computable(T150* C){
T6 R=0;
/*[IF*/
if(X56is_current((C)->_target/*4*/)){
R=X51is_pre_computable((C)->_run_feature/*12*/);
}
/*FI]*/
return R;
}


void r150collect_c_tmp(T150* C){
/*[IF*/
if(((C)->_run_feature/*12*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*12*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:CALL_0_C.fz_iinaiv*/


T0* r150result_type(T150* C){
T0* R=NULL;
R=X51result_type((C)->_run_feature/*12*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*12*/))->_current_type/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_0_C.run_feature*/
/*No:CALL_0_C.fz_07*/
/*No:CALL_0_C.arg_count*/


void r150with(T150* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r150run_feature_match(C);
}
/*No:CALL_0_C.is_result*/
/*No:CALL_0_C.fatal_error*/


void r150mapping_c_target(T150* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r150result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[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*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
r150compile_to_c(C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


void r150run_feature_match(T150* C){
r150run_feature_has_result(C);
/*[IF*/
if((X51arg_count((C)->_run_feature/*12*/))>(0)){
r21add_position(X83start_position((C)->_feature_name/*8*/));
r21add_position(X51start_position((C)->_run_feature/*12*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms141_50512);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_0_C.us_is_expanded_type*/
/*No:CALL_0_C.arguments*/


T0* r150runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


T6 r150can_be_dropped(T150* C){
T6 R=0;
/*[IF*/
if(X56can_be_dropped((C)->_target/*4*/)){
R=X51can_be_dropped((C)->_run_feature/*12*/);
}
/*FI]*/
return R;
}


void r150c_declare_for_old(T150* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:CALL_0_C.us_count*/
/*No:CALL_0_C.dca_inline_argument*/


void r150compile_to_c(T150* C){
T0* _n=NULL;
_n=X83to_string((C)->_feature_name/*8*/);
/*[IF*/
if((((T0*)ms14_34672))==((void*)(_n))){
/*[IF*/
if(X54is_expanded(X54run_type(X56result_type((C)->_target/*4*/)))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='1';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='0';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if((((T0*)ms14_60434))==((void*)(_n))){
/*[IF*/
if(X54is_basic_eiffel_expanded(X56result_type((C)->_target/*4*/))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='1';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='0';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.6call_proc_call_c2c*/{T150* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_0_C.isa_dca_inline_argument*/


void r150run_feature_has_result(T150* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*12*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*12*/));
r21add_position(X83start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r150run_feature_for(T150* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*8*/,a2);
return R;
}
/*No:CALL_0_C.target*/


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


void r150make(T150* C,T0* a1,T0* a2){
C->_target=a1;
C->_feature_name=a2;
}
/*No:CALL_0_C.is_current*/


void r150mapping_c_arg(T150* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r150result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
r150compile_to_c(C);
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[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*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r150compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
r150compile_to_c(C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_0_C.is_void*/


void r150afd_check(T150* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*12*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:CALL_0_C.us_is_basic_expanded_type*/


T0* r74root_procedure_name(T74* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=((T76*)((C)->_list/*0*/))->_upper/*8*/;
while (!(((_i)==(0))||((R)!=((void*)(NULL))))) {
R=r75root_procedure_name((T75*)(r76item((T76*)((C)->_list/*0*/),_i)),a1);
_i=(_i)-(1);
}
return R;
}
/*No:CREATION_CLAUSE_LIST.fz_cbe*/
/*No:CREATION_CLAUSE_LIST.fatal_error_vtec_2*/


T0* r74start_position(T74* C){
T0* R=NULL;
R=((T75*)(r76first((T76*)((C)->_list/*0*/))))->_start_position/*0*/;
return R;
}
/*No:CREATION_CLAUSE_LIST.add_last*/


T0* r74get_clause(T74* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=1;
while (!(((_i)>(((T76*)((C)->_list/*0*/))->_upper/*8*/))||(r75has((T75*)(r76item((T76*)((C)->_list/*0*/),_i)),a1)))) {
_i=(_i)+(1);
}
/*[IF*/
if((_i)<=(((T76*)((C)->_list/*0*/))->_upper/*8*/)){
R=r76item((T76*)((C)->_list/*0*/),_i);
}
/*FI]*/
return R;
}


T0* r74expanded_initializer(T74* C,T0* a1){
T0* R=NULL;
R=r75expanded_initializer((T75*)(r76item((T76*)((C)->_list/*0*/),1)),a1);
return R;
}
/*No:CREATION_CLAUSE_LIST.make*/
/*No:CREATION_CLAUSE_LIST.list*/
/*No:CREATION_CLAUSE_LIST.fatal_error*/


void r74check_expanded_with(T74* C,T0* a1){
/*[IF*/
if((((T76*)((C)->_list/*0*/))->_upper/*8*/)>(1)){
r21add_type(a1,((T0*)ms13_23835));
r21add_position(((T75*)(r76item((T76*)((C)->_list/*0*/),1)))->_start_position/*0*/);
r21add_position(((T75*)(r76item((T76*)((C)->_list/*0*/),2)))->_start_position/*0*/);
/*[IRF3.2fatal_error_vtec_2*//*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_572294);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
/*]*/
}
/*FI]*/
r75check_expanded_with((T75*)(r76item((T76*)((C)->_list/*0*/),1)),a1);
}
T0*oBC24wa_buf=NULL;


void r24used_as_reference(T24* C){
T0* _type_ref_to_exp=NULL;
T0* _rtm=NULL;
_rtm=X54run_time_mark((C)->_current_type/*0*/);
/*[IF*/
if(!(r379has((T379*)(oBC24to_reference_memory),_rtm))){
{T378*n=malloc(sizeof(*n));
*n=M378;
r378make(n,(C)->_current_type/*0*/);
_type_ref_to_exp=(T0*)n;
}
r379put((T379*)(oBC24to_reference_memory),_type_ref_to_exp,_rtm);
}
/*FI]*/
}
/*No:RUN_CLASS.writable_attributes_mem*/


T0* r24get_rf(T24* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bcn=NULL;
T0* _tfg=NULL;
T0* _constraint=NULL;
T0* _target_type=NULL;
T0* _wbc2=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
T6 _is_current=0;
_target_type=X56result_type(a1);
_is_current=X56is_current(a1);
_wbc=r70base_class((T70*)(X83start_position(a2)));
/*[IF*/
if((_is_current)||(X54is_like_current(_target_type))){
_fn2=r63new_name_of((T63*)(X54base_class(_target_type)),_wbc,a2);
/*[IF*/
if((_fn2)!=((void*)(a2))){
r21add_position(X83start_position(a2));
R=r24get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
R=r24get_or_fatal_error(C,a2);
}
/*FI]*/
}
 else if(X54is_formal_generic(_target_type)){
_tfg=_target_type;
if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
case 280: 
break;
default:
_tfg=NULL;
};_constraint=r280constraint(((T280*)_tfg));
/*[IF*/
if((_constraint)==((void*)(NULL))){
R=r24get_or_fatal_error(C,a2);
}
 else if(!(r280is_a(((T280*)_tfg),_constraint))){
r21print_as_error((T21*)(oBC12eh));
r21add_position(X83start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms24_64192);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
_wbc2=r70base_class((T70*)(X54start_position(_constraint)));
/*[IF*/
if(((_wbc2)==((void*)(_wbc)))||(r63is_subclass_of(((T63*)_wbc),_wbc2))){
_fn2=r63new_name_of((T63*)(r280base_class(((T280*)_tfg))),X54base_class(_constraint),a2);
R=r24get_or_fatal_error(C,_fn2);
}
else{
R=r24get_or_fatal_error(C,a2);
}
/*FI]*/
}
/*FI]*/
}
else{
R=r24get_or_fatal_error(C,a2);
}
/*FI]*/
X51add_client(R,(T0*)C);
/*[IF*/
if(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0))&&(!(_is_current))){
_bcn=((T63*)(X54base_class(a3)))->_name/*24*/;
/*[IF*/
if(!(X51is_exported_in(R,_bcn))){
r21add_position(X51start_position(R));
/*[IRF3.6append*/{T0* b1=((T0*)ms24_24045);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X83to_string(a2);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r24error(X83start_position(a2),((T0*)ms24_5054));
r21add_position(X83start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms24_68679);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark(a3);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_47);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC24to_reference_memory=NULL;


T0* r24get_feature(T24* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _fn_key=NULL;
T0* _f=NULL;
_fn_key=X83to_key(a1);
/*[IF*/
if(r325has((T325*)((C)->_feature_dictionary/*24*/),_fn_key)){
R=r325at((T325*)((C)->_feature_dictionary/*24*/),_fn_key);
}
else{
_bc=r24base_class(C);
_f=r63look_up_for(((T63*)_bc),(T0*)C,a1);
/*[IF*/
if((_f)==((void*)(NULL))){
r24efnf(C,_bc,a1);
}
else{
R=X93to_run_feature(_f,(C)->_current_type/*0*/,a1);
/*[IF*/
if((R)!=((void*)(NULL))){
r24store_feature(C,R);
}
else{
r24efnf(C,_bc,a1);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.strip_used*/
/*No:RUN_CLASS.id*/
int fBC12class_general=0;
T0*oBC12class_general=NULL;


T0* r24class_general(void){
if(fBC12class_general==0){
fBC12class_general=1;
oBC12class_general=r24class_with(((T0*)ms14_6412));
}
return oBC12class_general;}


T0* r24writable_attributes(T24* C){
T0* R=NULL;
T2 _i=0;
T0* _rf2=NULL;
/*[IF*/
if(((C)->_writable_attributes_mem/*48*/)==((void*)(NULL))){
_i=1;
while (!((_i)>(((T325*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf2=r325item((T325*)((C)->_feature_dictionary/*24*/),_i);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 356: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)!=((void*)(NULL))){
/*[IF*/
if(((C)->_writable_attributes_mem/*48*/)==((void*)(NULL))){
C->_writable_attributes_mem=se_ma361(1,
_rf2);
}
else{
r361add_last((T361*)((C)->_writable_attributes_mem/*48*/),_rf2);
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((C)->_writable_attributes_mem/*48*/)!=((void*)(NULL))){
r24sort_wam((C)->_writable_attributes_mem/*48*/);
}
/*FI]*/
}
/*FI]*/
R=(C)->_writable_attributes_mem/*48*/;
return R;
}


void r24gc_define1(T24* C){
/*[IF*/
if((C)->_at_run_time/*8*/){
X54gc_define1((C)->_current_type/*0*/);
}
/*FI]*/
}


T0* r24at(T24* C,T0* a1){
T0* R=NULL;
T0* _to_key=NULL;
_to_key=X83to_key(a1);
/*[IF*/
if(r325has((T325*)((C)->_feature_dictionary/*24*/),_to_key)){
R=r325at((T325*)((C)->_feature_dictionary/*24*/),_to_key);
}
/*FI]*/
return R;
}


T0* r24to_reference(T24* C){
T0* R=NULL;
R=r379at((T379*)(oBC24to_reference_memory),X54run_time_mark((C)->_current_type/*0*/));
return R;
}
T0*oBC24ci_collector=NULL;


void r24mark_attribute(T24* C,T0* a1,T0* a2){
r7copy((T7*)(oBC24tmp_string),((T0*)ms24_1292));
r7append((T7*)(oBC24tmp_string),X83to_string((((T356*)a2))->_name/*16*/));
r7append((T7*)(oBC24tmp_string),((T0*)ms13_184a));
r2append_in(r24offset_of(C,a2),oBC24tmp_string);
r7append((T7*)(oBC24tmp_string),((T0*)ms13_184));
r330mark_for(a1,oBC24tmp_string,X54run_class((((T356*)a2))->_result_type/*28*/));
}


void r24c_header_pass2(T24* C){
/*[IF*/
if((C)->_at_run_time/*8*/){
/*[IF*/
if(((C)->_c_header_pass_level_done/*36*/)<(2)){
X54c_header_pass2((C)->_current_type/*0*/);
C->_c_header_pass_level_done=2;
}
/*FI]*/
}
/*FI]*/
}


T6 r24gt(T0* a1,T0* a2){
T6 R=0;
T0* _bcn2=NULL;
T0* _bcn1=NULL;
T0* _bf2=NULL;
T0* _bf1=NULL;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bf1=(((T356*)a1))->_base_feature/*24*/;
_bf2=(((T356*)a2))->_base_feature/*24*/;
_bc1=/*X93base_class*/((T0*)(((T199*)_bf1))->_base_class/*4*/);
_bc2=/*X93base_class*/((T0*)(((T199*)_bf2))->_base_class/*4*/);
_bcn1=(((T63*)_bc1))->_name/*24*/;
_bcn2=(((T63*)_bc2))->_name/*24*/;
/*[IF*/
if(((((T64*)_bcn1))->_to_string/*0*/)==((void*)((((T64*)_bcn2))->_to_string/*0*/))){
R=r70before((T70*)(X93start_position(_bf1)),X93start_position(_bf2));
}
 else if(r64is_subclass_of(((T64*)_bcn2),_bcn1)){
R=1;
}
 else if(r64is_subclass_of(((T64*)_bcn1),_bcn2)){
}
 else if(((((T63*)_bc1))->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(((((T63*)_bc2))->_parent_list/*40*/)==((void*)(NULL))){
R=r7_px_60((T7*)((((T64*)_bcn1))->_to_string/*0*/),(((T64*)_bcn2))->_to_string/*0*/);
}
else{
R=1;
}
/*FI]*/
}
 else if(((((T63*)_bc2))->_parent_list/*40*/)==((void*)(NULL))){
}
else{
R=(/*(IRF4.6count*/(((T80*)(((T78*)((((T63*)_bc2))->_parent_list/*40*/))->_list/*12*/)))->_upper/*8*//*)*/)<(/*(IRF4.6count*/(((T80*)(((T78*)((((T63*)_bc1))->_parent_list/*40*/))->_list/*12*/)))->_upper/*8*//*)*/);
}
/*FI]*/
return R;
}


void r24c_header_pass4(T24* C){
/*[IF*/
if((C)->_at_run_time/*8*/){
/*[IF*/
if(((C)->_c_header_pass_level_done/*36*/)<(4)){
X54c_header_pass4((C)->_current_type/*0*/);
C->_c_header_pass_level_done=4;
}
/*FI]*/
}
/*FI]*/
}


T0* r24get_copy(T24* C){
T0* R=NULL;
R=r24get_rf_with(C,/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r63get_copy((T63*)(r24class_general()))))->_names/*8*/)),1)/*)*/));
return R;
}


void r24runnable_class_invariant(T24* C){
T0* _r=NULL;
/*[IF*/
if(!((C)->_runnable_class_invariant_done/*32*/)){
C->_runnable_class_invariant_done=1;
/*[IF*/
if(r43invariant_check((T43*)(oBC12run_control))){
/*[IF*/
if((C)->_at_run_time/*8*/){
r106clear((T106*)(oBC24ci_collector));
r63collect_invariant((T63*)(r24base_class(C)),(T0*)C);
_r=r24runnable(oBC24ci_collector,(C)->_current_type/*0*/,NULL);
/*[IF*/
if((_r)!=((void*)(NULL))){
r22incr_magic_count((T22*)(oBC12small_eiffel));
{T104*n=malloc(sizeof(*n));
*n=M104;
r104make_runnable(n,_r,(C)->_current_type/*0*/,NULL);
C->_class_invariant=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r24gc_set_fsoh_marked_in(T24* C,T0* a1){
/*[IF*/
if(X54is_reference((C)->_current_type/*0*/)){
r7append(((T7*)a1),((T0*)ms24_1168));
r2append_in((C)->_id/*4*/,a1);
r7append(((T7*)a1),((T0*)ms24_18755));
}
/*FI]*/
}
T0*oBC24wa_cycle=NULL;
/*No:RUN_CLASS.fz_close_c_comment*/


void r24set_at_run_time(T24* C){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
/*[IF*/
if(!((C)->_at_run_time/*8*/)){
C->_at_run_time=1;
C->_compile_to_c_done=0;
C->_runnable_class_invariant_done=0;
r24add_running(C,(T0*)C);
r22incr_magic_count((T22*)(oBC12small_eiffel));
/*[IF*/
if(X54is_reference((C)->_current_type/*0*/)){
_rcd=oBC22run_class_dictionary;
_i=1;
while (!((_i)>((((T59*)_rcd))->_count/*36*/))) {
_rc=r59item(((T59*)_rcd),_i);
/*[IF*/
if(r24is_running_of(C,_rc)){
r24add_running(((T24*)_rc),(T0*)C);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*FI]*/
}
/*No:RUN_CLASS.fatal_error*/
/*No:RUN_CLASS.collect_invariant*/


T2 r24offset_of(T24* C,T0* a1){
T2 R=0;
T2 _i=0;
T0* _t=NULL;
T0* _wa=NULL;
/*[IF*/
if(r24is_tagged(C)){
R=sizeof(T2);
}
/*FI]*/
_wa=r24writable_attributes(C);
_i=(((T361*)_wa))->_upper/*12*/;
while (!((r361item(((T361*)_wa),_i))==((void*)(a1)))) {
_t=((T356*)(r361item(((T361*)_wa),_i)))->_result_type/*28*/;
R=(R)+(X54space_for_variable(_t));
_i=(_i)-(1);
}
return R;
}
/*No:RUN_CLASS.tagged_mem*/
/*No:RUN_CLASS.us_general*/


void r24compile_to_c(T24* C,T2 a1){
T2 _cc2=0;
T2 _cc1=0;
T0* _rc2=NULL;
T0* _rc1=NULL;
T2 _i=0;
/*[IF*/
if((C)->_compile_to_c_done/*20*/){
}
 else if(!((C)->_at_run_time/*8*/)){
C->_compile_to_c_done=1;
}
 else if((a1)==(0)){
r24really_compile_to_c(C);
}
else{
_i=((T60*)((C)->_actuals_clients/*44*/))->_upper/*8*/;
/*[IF*/
if((_i)>=(0)){
_rc1=(T0*)C;
_cc1=(_i)+(1);
while (!((_i)==(0))) {
_rc2=/*(IRF4.6item*/(((T60*)((C)->_actuals_clients/*44*/))->_storage/*0*/)[_i]/*)*/;
/*[IF*/
if(!((((T24*)_rc2))->_compile_to_c_done/*20*/)){
_cc2=/*(IRF4.6count*/(((T60*)((((T24*)_rc2))->_actuals_clients/*44*/))->_upper/*8*/)+(1)/*)*/;
/*[IF*/
if((_cc2)>(_cc1)){
_rc1=_rc2;
_cc1=_cc2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_rc1)==((void*)(C))){
r24really_compile_to_c(C);
}
else{
r24compile_to_c(((T24*)_rc1),(a1)-(1));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:RUN_CLASS.set_strip_used*/


T0* r24get_rf_with(T24* C,T0* a1){
T0* R=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
_wbc=r70base_class((T70*)(X83start_position(a1)));
_fn2=r63new_name_of((T63*)(r24base_class(C)),_wbc,a1);
/*[IF*/
if((_fn2)!=((void*)(a1))){
r21add_position(X83start_position(a1));
R=r24get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
R=r24get_or_fatal_error(C,_fn2);
}
/*FI]*/
return R;
}


void r24gc_info_in(T24* C,T0* a1){
/*[IF*/
if((C)->_at_run_time/*8*/){
X54gc_info_in((C)->_current_type/*0*/,a1);
}
/*FI]*/
}
T0*oBC24wa_cyclic_buf=NULL;
/*No:RUN_CLASS.current_type*/
/*No:RUN_CLASS.fz_bad_assertion*/


T0* r24class_with(T0* a1){
T0* R=NULL;
R=r22get_class(a1);
return R;
}


void r24gc_define2(T24* C){
/*[IF*/
if((C)->_at_run_time/*8*/){
X54gc_define2((C)->_current_type/*0*/);
}
/*FI]*/
}


void r24add_running(T24* C,T0* a1){
/*[IF*/
if(((C)->_running/*12*/)==((void*)(NULL))){
C->_running=se_ma328(1,
a1);
}
else{
/*[IF*/
if(!(r328fast_has((T328*)((C)->_running/*12*/),a1))){
r328add_last((T328*)((C)->_running/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
}


void r24add_client(T24* C,T0* a1){
T2 _i=0;
_i=r60fast_index_of((T60*)((C)->_actuals_clients/*44*/),a1);
/*[IF*/
if((_i)>(((T60*)((C)->_actuals_clients/*44*/))->_upper/*8*/)){
r60add_last((T60*)((C)->_actuals_clients/*44*/),a1);
}
/*FI]*/
}
/*No:RUN_CLASS.fz_dot*/
/*No:RUN_CLASS.compile_to_c_done*/


void r24error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:RUN_CLASS.class_invariant*/


void r24make(T24* C,T0* a1){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
T0* _run_string=NULL;
C->_compile_to_c_done=1;
C->_current_type=a1;
{T60*n=malloc(sizeof(*n));
*n=M60;
r60with_capacity(n,16);
C->_actuals_clients=(T0*)n;
}
_run_string=X54run_time_mark(a1);
C->_id=r102item((T102*)(r24id_provider()),_run_string);
r59put((T59*)(oBC22run_class_dictionary),(T0*)C,_run_string);
{T325*n=malloc(sizeof(*n));
*n=M325;
/*[IRF3.4make*/r325with_capacity(n,32);
/*]*/
C->_feature_dictionary=(T0*)n;
}
r22incr_magic_count((T22*)(oBC12small_eiffel));
/*[IF*/
if(X54is_expanded(a1)){
r24set_at_run_time(C);
r63check_expanded_with((T63*)(X54base_class(a1)),a1);
}
else{
_rcd=oBC22run_class_dictionary;
_i=1;
while (!((_i)>((((T59*)_rcd))->_count/*36*/))) {
_rc=r59item(((T59*)_rcd),_i);
/*[IF*/
if((((((T24*)_rc))->_at_run_time/*8*/)&&(X54is_reference((((T24*)_rc))->_current_type/*0*/)))&&(r24is_running_of(((T24*)_rc),(T0*)C))){
r24add_running(C,_rc);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


T0* r24id_provider(void){
if(fBC12id_provider==0){
fBC12id_provider=1;
{T102*n=malloc(sizeof(*n));
*n=M102;
r102make(n);
oBC12id_provider=(T0*)n;
}
}
return oBC12id_provider;}


void r24efnf(T24* C,T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms24_16640);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((C)->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms24_23892);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X83to_string(a2);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms24_7130);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T64*)((((T63*)a1))->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r24error(X83start_position(a2),((T0*)ms13_47));
}


T0* r24get_result_type(T24* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _f=NULL;
T0* _fn2_key=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
_wbc=r70base_class((T70*)(X83start_position(a1)));
_fn2=r63new_name_of((T63*)(r24base_class(C)),_wbc,a1);
_fn2_key=X83to_key(_fn2);
/*[IF*/
if(r325has((T325*)((C)->_feature_dictionary/*24*/),_fn2_key)){
_rf=r325at((T325*)((C)->_feature_dictionary/*24*/),_fn2_key);
R=X51result_type(_rf);
/*[IF*/
if(X54is_run_type(R)){
R=X54run_type(R);
}
else{
R=X54to_runnable(R,(C)->_current_type/*0*/);
R=X54run_type(R);
}
/*FI]*/
}
else{
_bc=r24base_class(C);
_f=r63look_up_for(((T63*)_bc),(T0*)C,_fn2);
/*[IF*/
if((_f)==((void*)(NULL))){
r24efnf(C,_bc,_fn2);
r21add_position(X83start_position(a1));
r21add_position(X83start_position(_fn2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms24_22554);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=X93result_type(_f);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X93start_position(_f));
r21add_position(X83start_position(a1));
r21add_position(X83start_position(_fn2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms24_51011);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=X54to_runnable(R,(C)->_current_type/*0*/);
R=X54run_type(R);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r24need_gc_mark(T24* C){
T6 R=0;
T0* _t=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
_wa=r24writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(((T361*)_wa))->_upper/*12*/;
while (!((R)||((_i)==(0)))) {
_rf2=r361item(((T361*)_wa),_i);
_t=(((T356*)_rf2))->_result_type/*28*/;
R=X54need_gc_mark_function(_t);
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.c_header_pass_level_done*/
T0*oBC24tmp_string=NULL;


T6 r24is_wa_cycle(T24* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)(a1))){
R=1;
}
/*FI]*/
return R;
}


void r24afd_check(T24* C){
T0* _rt=NULL;
T0* _rc=NULL;
T2 _i=0;
T0* _rf=NULL;
r24runnable_class_invariant(C);
_i=1;
while (!((_i)>(((T325*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r325item((T325*)((C)->_feature_dictionary/*24*/),_i);
X51afd_check(_rf);
_rt=X51result_type(_rf);
/*[IF*/
if((_rt)!=((void*)(NULL))){
/*[IF*/
if(X54is_none(_rt)){
}
else{
_rc=X54run_class(_rt);
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((C)->_class_invariant/*16*/)!=((void*)(NULL))){
r104afd_check((T104*)((C)->_class_invariant/*16*/));
}
/*FI]*/
}


T6 r24gc_mark_to_follow(T24* C){
T6 R=0;
T0* _rc=NULL;
T0* _r=NULL;
T2 _i=0;
_r=(C)->_running/*12*/;
/*[IF*/
if((_r)!=((void*)(NULL))){
_i=(((T328*)_r))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
_rc=r328item(((T328*)_r),_i);
/*[IF*/
if((_rc)==((void*)(C))){
R=r24need_gc_mark(C);
}
else{
R=X54need_gc_mark_function((((T24*)_rc))->_current_type/*0*/);
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r24gc_mark_fixed_size(T24* C,T6 a1,T0* a2){
T2 _i=0;
T0* _rc=NULL;
T0* _t=NULL;
T0* _rf2=NULL;
/*[IRF3.3clear*/((((T385*)((T385*)(oBC24wa_buf))))->_upper)=(-(1));
/*]*/
/*[IRF3.3clear*/((((T385*)((T385*)(oBC24wa_cyclic_buf))))->_upper)=(-(1));
/*]*/
/*[IF*/
if((r24writable_attributes(C))!=((void*)(NULL))){
_i=((T361*)(r24writable_attributes(C)))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r361item((T361*)(r24writable_attributes(C)),_i);
_t=(((T356*)_rf2))->_result_type/*28*/;
/*[IF*/
if(X54need_gc_mark_function(_t)){
_rc=X54run_class(_t);
/*[IRF3.3clear*/((((T385*)((T385*)(oBC24wa_cycle))))->_upper)=(-(1));
/*]*/
r385add_last((T385*)(oBC24wa_cycle),_rf2);
/*[IF*/
if(r24is_wa_cycle(((T24*)_rc),(T0*)C)){
r385add_last((T385*)(oBC24wa_cyclic_buf),_rf2);
}
else{
r385add_last((T385*)(oBC24wa_buf),_rf2);
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if((r385empty((T385*)(oBC24wa_buf)))&&(r385empty((T385*)(oBC24wa_cyclic_buf)))){
r24gc_set_fsoh_marked_in(C,a2);
}
else{
/*[IF*/
if((((T385*)(oBC24wa_cyclic_buf))->_upper/*12*/)>=(0)){
r7append(((T7*)a2),((T0*)ms24_4214));
}
/*FI]*/
/*[IF*/
if(!(a1)){
r7append(((T7*)a2),((T0*)ms24_7245));
r2append_in((C)->_id/*4*/,a2);
r7append(((T7*)a2),((T0*)ms24_22575));
}
/*FI]*/
r24gc_set_fsoh_marked_in(C,a2);
_i=((T385*)(oBC24wa_buf))->_upper/*12*/;
while (!((_i)<(0))) {
_rf2=/*(IRF4.6item*/(((T385*)(oBC24wa_buf))->_storage/*4*/)[_i]/*)*/;
r24mark_attribute(C,a2,_rf2);
_i=(_i)-(1);
}
_i=((T385*)(oBC24wa_cyclic_buf))->_upper/*12*/;
while (!((_i)<(0))) {
_rf2=/*(IRF4.6item*/(((T385*)(oBC24wa_cyclic_buf))->_storage/*4*/)[_i]/*)*/;
_t=(((T356*)_rf2))->_result_type/*28*/;
_rc=X54run_class(_t);
/*[IRF3.3clear*/((((T385*)((T385*)(oBC24wa_cycle))))->_upper)=(-(1));
/*]*/
r385add_last((T385*)(oBC24wa_cycle),_rf2);
/*[IF*/
if(r24is_wa_cycle(((T24*)_rc),(T0*)C)){
}
/*FI]*/
/*[IF*/
if((((((_i)==(0))&&((/*(IRF4.6count*/(((T385*)(oBC24wa_cycle))->_upper/*12*/)+(1)/*)*/)==(1)))&&(((((T24*)_rc))->_running/*12*/)!=((void*)(NULL))))&&((r328count((T328*)((((T24*)_rc))->_running/*12*/)))==(1)))&&((r328first((T328*)((((T24*)_rc))->_running/*12*/)))==((void*)(C)))){
r7append(((T7*)a2),((T0*)ms24_21983));
r7append(((T7*)a2),X83to_string((((T356*)_rf2))->_name/*16*/));
r7append(((T7*)a2),((T0*)ms24_12670));
/*[IF*/
if(a1){
r7append(((T7*)a2),((T0*)ms24_6328));
r2append_in((C)->_id/*4*/,a2);
r7append(((T7*)a2),((T0*)ms24_57426));
}
else{
r7extend(((T7*)a2),'\51');
}
/*FI]*/
r7append(((T7*)a2),((T0*)ms24_7296));
}
else{
r24mark_attribute(C,a2,_rf2);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(!(a1)){
r7extend(((T7*)a2),'\175');
}
/*FI]*/
}
/*FI]*/
}


T0* r24get_feature_with(T24* C,T0* a1){
T0* R=NULL;
T0* _sfn=NULL;
/*[IF*/
if(r325has((T325*)((C)->_feature_dictionary/*24*/),a1)){
R=r325at((T325*)((C)->_feature_dictionary/*24*/),a1);
}
else{
{T148*n=malloc(sizeof(*n));
*n=M148;
r148make(n,a1,NULL);
_sfn=(T0*)n;
}
R=r24get_feature(C,_sfn);
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.actuals_clients*/


T0* r24base_class(T24* C){
T0* R=NULL;
R=X54base_class((C)->_current_type/*0*/);
return R;
}


T0* r24base_class_name(T24* C){
T0* R=NULL;
R=X54base_class_name((C)->_current_type/*0*/);
return R;
}


T0* r24get_or_fatal_error(T24* C,T0* a1){
T0* R=NULL;
R=r24get_feature(C,a1);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X83start_position(a1));
/*[IRF3.6append*/{T0* b1=((T0*)ms24_6176);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X83to_string(a1);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms24_62016);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((C)->_current_type/*0*/,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.running*/


T0* r24runnable(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))){
r24error(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;
}


void r24c_header_pass1(T24* C){
/*[IF*/
if((C)->_at_run_time/*8*/){
/*[IF*/
if(((C)->_c_header_pass_level_done/*36*/)<(1)){
X54c_header_pass1((C)->_current_type/*0*/);
C->_c_header_pass_level_done=1;
}
/*FI]*/
}
/*FI]*/
}


void r24c_header_pass3(T24* C){
T0* _attribute_type=NULL;
T2 _i=0;
/*[IF*/
if((C)->_at_run_time/*8*/){
/*[IF*/
if(((C)->_c_header_pass_level_done/*36*/)<(3)){
/*[IF*/
if((X54is_user_expanded((C)->_current_type/*0*/))&&((r24writable_attributes(C))!=((void*)(NULL)))){
_i=((T361*)(r24writable_attributes(C)))->_upper/*12*/;
while (!((_i)==(0))) {
_attribute_type=((T356*)(r361item((T361*)(r24writable_attributes(C)),_i)))->_result_type/*28*/;
/*[IF*/
if(X54is_expanded(_attribute_type)){
r24c_header_pass3((T24*)(X54run_class(_attribute_type)));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
X54c_header_pass3((C)->_current_type/*0*/);
C->_c_header_pass_level_done=3;
}
/*FI]*/
}
/*FI]*/
}


void r24demangling(T24* C){
T2 _i=0;
T0* _r=NULL;
T0* _str=NULL;
_str=((T0*)ms24_0);
/*[IRF3.3clear*/((((T7*)(((T7*)_str))))->_count)=(0);
/*]*/
/*[IF*/
if((C)->_at_run_time/*8*/){
r7extend(((T7*)_str),'A');
/*[IF*/
if((X54is_reference((C)->_current_type/*0*/))&&(!(r24is_tagged(C)))){
r7extend(((T7*)_str),'\52');
}
else{
r7extend(((T7*)_str),'\40');
}
/*FI]*/
}
else{
r7extend(((T7*)_str),'D');
r7extend(((T7*)_str),'\40');
}
/*FI]*/
_r=(C)->_running/*12*/;
/*[IF*/
if((_r)!=((void*)(NULL))){
r2append_in(r328count(((T328*)_r)),_str);
}
/*FI]*/
while (!(((((T7*)_str))->_count/*4*/)>(4))) {
r7extend(((T7*)_str),'\40');
}
r7extend(((T7*)_str),'T');
r2append_in((C)->_id/*4*/,_str);
while (!(((((T7*)_str))->_count/*4*/)>(10))) {
r7extend(((T7*)_str),'\40');
}
X54demangling_in((C)->_current_type/*0*/,_str);
/*[IF*/
if((_r)!=((void*)(NULL))){
r7extend(((T7*)_str),'\40');
_i=(((T328*)_r))->_upper/*8*/;
while (!((_i)==(0))) {
r2append_in(((T24*)(r328item(((T328*)_r),_i)))->_id/*4*/,_str);
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)_str),'\54');
}
/*FI]*/
}
}
/*FI]*/
r7extend(((T7*)_str),'\n');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_str);
/*]*/
}


T0* r24dynamic(T24* C,T0* a1){
T0* R=NULL;
T0* _up_type=NULL;
T0* _up_fn=NULL;
T0* _fn=NULL;
_up_type=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
/*[IF*/
if((C)==((void*)(X54run_class(_up_type)))){
R=a1;
}
else{
_up_fn=/*X51name*/((T0*)(((T324*)a1))->_name/*16*/);
_fn=r63new_name_of((T63*)(r24base_class(C)),X54base_class(_up_type),_up_fn);
R=r24get_or_fatal_error(C,_fn);
}
/*FI]*/
return R;
}
/*No:RUN_CLASS.at_run_time*/
/*No:RUN_CLASS.add_rf*/
/*No:RUN_CLASS.runnable_class_invariant_done*/
/*No:RUN_CLASS.nb_errors*/
/*No:RUN_CLASS.feature_dictionary*/


void r24gc_align_mark_fixed_size(T24* C,T0* a1){
r7append(((T7*)a1),((T0*)ms24_410));
r2append_in((C)->_id/*4*/,a1);
r7append(((T7*)a1),((T0*)ms24_744072));
r2append_in((C)->_id/*4*/,a1);
r7append(((T7*)a1),((T0*)ms24_1991388));
r2append_in((C)->_id/*4*/,a1);
r7append(((T7*)a1),((T0*)ms24_6721));
r24gc_mark_fixed_size(C,1,a1);
r7append(((T7*)a1),((T0*)ms24_1120));
}


void r24store_feature(T24* C,T0* a1){
T0* _rf_key=NULL;
_rf_key=X83to_key(/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
/*[IF*/
if(r325has((T325*)((C)->_feature_dictionary/*24*/),_rf_key)){
}
else{
r325put((T325*)((C)->_feature_dictionary/*24*/),a1,_rf_key);
r22incr_magic_count((T22*)(oBC12small_eiffel));
}
/*FI]*/
}


T6 r24is_tagged(T24* C){
T6 R=0;
/*[IF*/
if(((C)->_tagged_mem/*28*/)==(0)){
/*[IF*/
if(X54is_expanded((C)->_current_type/*0*/)){
C->_tagged_mem=-(1);
}
 else if((C)->_at_run_time/*8*/){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r22is_tagged((T0*)C)){
C->_tagged_mem=1;
}
else{
C->_tagged_mem=-(1);
}
/*FI]*/
}
else{
C->_tagged_mem=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=((C)->_tagged_mem/*28*/)==(1);
return R;
}


void r24c_print_function(T24* C){
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
T0* _t=NULL;
T0* _ct=NULL;
T0* _body=NULL;
_body=((T0*)ms24_17334);
_ct=(C)->_current_type/*0*/;
r7copy((T7*)(oBC24tmp_string),((T0*)ms24_20449));
r2append_in((C)->_id/*4*/,oBC24tmp_string);
r7append((T7*)(oBC24tmp_string),((T0*)ms24_254));
r2append_in((C)->_id/*4*/,oBC24tmp_string);
/*[IF*/
if(X54is_reference(_ct)){
r7extend((T7*)(oBC24tmp_string),'\52');
}
/*FI]*/
r7append((T7*)(oBC24tmp_string),((T0*)ms24_600));
/*[IRF3.3clear*/((((T7*)(((T7*)_body))))->_count)=(0);
/*]*/
/*[IF*/
if(X54is_reference(_ct)){
r7append(((T7*)_body),((T0*)ms24_42960));
}
/*FI]*/
r7append(((T7*)_body),((T0*)ms24_17632a));
r7append(((T7*)_body),X54run_time_mark(_ct));
r7append(((T7*)_body),((T0*)ms24_616));
/*[IF*/
if((X54is_reference(_ct))||(X54is_native_array(_ct))){
r7append(((T7*)_body),((T0*)ms24_21268aa));
}
/*FI]*/
_wa=r24writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
r7append(((T7*)_body),((T0*)ms24_21268a));
_i=(((T361*)_wa))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r361item(((T361*)_wa),_i);
_t=(((T356*)_rf2))->_result_type/*28*/;
r7append(((T7*)_body),((T0*)ms24_17632));
r7append(((T7*)_body),X83to_string((((T356*)_rf2))->_name/*16*/));
r7append(((T7*)_body),((T0*)ms24_22125));
/*[IF*/
if(X54is_expanded(_t)){
r2append_in(X54id(_t),_body);
}
 else if(X54is_string(_t)){
r7extend(((T7*)_body),'7');
}
else{
r7extend(((T7*)_body),'0');
}
/*FI]*/
r7append(((T7*)_body),((T0*)ms24_15660));
/*[IF*/
if(X54is_reference(_ct)){
r7append(((T7*)_body),((T0*)ms24_220));
}
else{
r7extend(((T7*)_body),'\56');
}
/*FI]*/
r7extend(((T7*)_body),'\137');
r7append(((T7*)_body),X83to_string((((T356*)_rf2))->_name/*16*/));
r7append(((T7*)_body),((T0*)ms24_1035));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7append(((T7*)_body),((T0*)ms24_21268));
}
/*FI]*/
}
r7append(((T7*)_body),((T0*)ms24_20200));
}
/*FI]*/
r25put_c_function((T25*)(oBC12cpp),oBC24tmp_string,_body);
}


T6 r24is_running_of(T24* C,T0* a1){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((a1)==((void*)(C))){
R=1;
}
else{
_t1=(C)->_current_type/*0*/;
_t2=(((T24*)a1))->_current_type/*0*/;
/*[IF*/
if((X54is_basic_eiffel_expanded(_t1))&&(X54is_basic_eiffel_expanded(_t2))){
}
else{
R=X54is_a(_t1,_t2);
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r24really_compile_to_c(T24* C){
T0* _rf=NULL;
T2 _i=0;
C->_compile_to_c_done=1;
r25split_c_start_run_class((T25*)(oBC12cpp));
r28put_character((T28*)(oBC12echo),'\11');
r28put_string((T28*)(oBC12echo),X54run_time_mark((C)->_current_type/*0*/));
r28put_character((T28*)(oBC12echo),'\n');
_i=1;
while (!((_i)>(((T325*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r325item((T325*)((C)->_feature_dictionary/*24*/),_i);
X51c_define(_rf);
_i=(_i)+(1);
}
/*[IF*/
if(r43invariant_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_class_invariant/*16*/)!=((void*)(NULL))){
r104c_define((T104*)((C)->_class_invariant/*16*/));
}
/*FI]*/
}
/*FI]*/
}


void r24prepare_strip(T24* C){
T2 _i=0;
T0* _rf2=NULL;
/*[IF*/
if((C)->_strip_used/*40*/){
_i=1;
while (!((_i)>(((T325*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf2=r325item((T325*)((C)->_feature_dictionary/*24*/),_i);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 356: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)!=((void*)(NULL))){
X54used_as_reference((((T356*)_rf2))->_result_type/*28*/);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r24sort_wam(T0* a1){
T6 _moved=0;
T2 _buble=0;
T2 _max=0;
T2 _min=0;
_max=(((T361*)a1))->_upper/*12*/;
_min=1;
_moved=1;
while (!(!(_moved))) {
_moved=0;
/*[IF*/
if(((_max)-(_min))>(0)){
_buble=(_min)+(1);
while (!((_buble)>(_max))) {
/*[IF*/
if(r24gt(r361item(((T361*)a1),(_buble)-(1)),r361item(((T361*)a1),_buble))){
r361swap(((T361*)a1),(_buble)-(1),_buble);
_moved=1;
}
/*FI]*/
_buble=(_buble)+(1);
}
_max=(_max)-(1);
}
/*FI]*/
/*[IF*/
if((_moved)&&(((_max)-(_min))>(0))){
_moved=0;
_buble=(_max)-(1);
while (!((_buble)<(_min))) {
/*[IF*/
if(r24gt(r361item(((T361*)a1),_buble),r361item(((T361*)a1),(_buble)+(1)))){
r361swap(((T361*)a1),_buble,(_buble)+(1));
_moved=1;
}
/*FI]*/
_buble=(_buble)-(1);
}
_min=(_min)+(1);
}
/*FI]*/
}
}


void r24just_before_gc_mark_in(T24* C,T0* a1){
/*[IF*/
if((C)->_at_run_time/*8*/){
X54just_before_gc_mark_in((C)->_current_type/*0*/,a1);
}
/*FI]*/
}
/*No:RUN_CLASS.fz_open_c_comment*/


void r24falling_down(T24* C){
T2 _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>(((T325*)((C)->_feature_dictionary/*24*/))->_count/*36*/))) {
_rf=r325item((T325*)((C)->_feature_dictionary/*24*/),_i);
X51fall_down(_rf);
_i=(_i)+(1);
}
r24prepare_strip(C);
}
/*No:RUN_CLASS.force_c_recompilation_comment*/


void r24c_object_model_in(T24* C,T0* a1){
T0* _t=NULL;
T0* _rf2=NULL;
T2 _i=0;
T0* _wa=NULL;
_wa=r24writable_attributes(C);
/*[IF*/
if((_wa)==((void*)(NULL))){
/*[IF*/
if(r24is_tagged(C)){
r7extend(((T7*)a1),'\173');
r2append_in((C)->_id/*4*/,a1);
r7extend(((T7*)a1),'\175');
}
else{
X54c_initialize_in((C)->_current_type/*0*/,a1);
}
/*FI]*/
}
else{
r7extend(((T7*)a1),'\173');
/*[IF*/
if(r24is_tagged(C)){
r2append_in((C)->_id/*4*/,a1);
r7extend(((T7*)a1),'\54');
}
/*FI]*/
_i=(((T361*)_wa))->_upper/*12*/;
while (!((_i)==(0))) {
_rf2=r361item(((T361*)_wa),_i);
_t=(((T356*)_rf2))->_result_type/*28*/;
X54c_initialize_in(_t,a1);
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)a1),'\54');
}
/*FI]*/
}
r7extend(((T7*)a1),'\175');
}
/*FI]*/
}
/*No:E_INSPECT.clear_current_type*/
/*No:E_INSPECT.nb_errors*/
/*No:E_INSPECT.else_position*/
/*No:E_INSPECT.fz_else*/
/*No:E_INSPECT.start_position*/


T0* r232twin(T232* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T232*)R)=*C;
return R;
}


void r232add_when(T232* C,T0* a1){
/*[IF*/
if(((C)->_when_list/*12*/)==((void*)(NULL))){
{T234*n=malloc(sizeof(*n));
*n=M234;
/*[IRF3.3make*/((((T234*)(n)))->_list)=(se_ma235(1,
a1));
/*]*/
C->_when_list=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r235add_last(((T235*)(((T234*)((C)->_when_list/*12*/))->_list/*4*/)),a1);
/*]*/
}
/*FI]*/
}
/*No:E_INSPECT.set_when_list*/


T0* r232add_comment(T232* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}


void r232set_else_compound(T232* C,T0* a1,T0* a2){
C->_else_position=a1;
C->_else_compound=a2;
}
/*No:E_INSPECT.expression*/
/*No:E_INSPECT.em1*/


T6 r232use_current(T232* C){
T6 R=0;
R=(R)||(X56use_current((C)->_expression/*8*/));
/*[IF*/
if(((C)->_when_list/*12*/)!=((void*)(NULL))){
R=(R)||(r234use_current((T234*)((C)->_when_list/*12*/)));
}
/*FI]*/
/*[IF*/
if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
R=(R)||(r216use_current((T216*)((C)->_else_compound/*20*/)));
}
/*FI]*/
return R;
}


void r232compile_to_c(T232* C){
T6 _debug_check=0;
T6 _no_check=0;
_no_check=r43no_check((T43*)(oBC12run_control));
_debug_check=r43debug_check((T43*)(oBC12run_control));
r25inspect_incr((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms232_2505));
/*]*/
r25put_inspect((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_debug_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25se_trace_exp((T25*)(oBC12cpp),X56start_position((C)->_expression/*8*/));
/*[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]*/
X56compile_to_c((C)->_expression/*8*/);
/*[IF*/
if(_debug_check){
/*[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]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
/*[IF*/
if(((C)->_when_list/*12*/)==((void*)(NULL))){
/*[IF*/
if(((C)->_else_position/*16*/)==((void*)(NULL))){
/*[IF*/
if(_no_check){
r363incorrect_inspect_value((T363*)(oBC12exceptions_handler),(C)->_start_position/*4*/);
}
/*FI]*/
}
 else if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_else_compound/*20*/));
}
/*FI]*/
}
else{
r234compile_to_c((T234*)((C)->_when_list/*12*/),(C)->_else_position/*16*/);
/*[IF*/
if(((C)->_else_position/*16*/)==((void*)(NULL))){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\40';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1740));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r363incorrect_inspect_value((T363*)(oBC12exceptions_handler),(C)->_start_position/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\40';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1740));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r216compile_to_c((T216*)((C)->_else_compound/*20*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
r25inspect_decr((T25*)(oBC12cpp));
}


T0* r232to_runnable(T232* C,T0* a1){
T0* R=NULL;
T0* _wl=NULL;
T0* _te=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*24*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X56to_runnable((C)->_expression/*8*/,a1);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
C->_expression=_e;
_te=X54run_type(X56result_type(_e));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(X54is_character(_te)){
/*[IF*/
if(((C)->_when_list/*12*/)!=((void*)(NULL))){
C->_when_list=r234to_runnable_character((T234*)((C)->_when_list/*12*/),(T0*)C);
/*[IF*/
if(((C)->_when_list/*12*/)==((void*)(NULL))){
r232error((C)->_start_position/*4*/,((T0*)ms232_11604));
}
/*FI]*/
}
/*FI]*/
}
 else if(X54is_integer(_te)){
/*[IF*/
if(((C)->_when_list/*12*/)!=((void*)(NULL))){
C->_when_list=r234to_runnable_integer((T234*)((C)->_when_list/*12*/),(T0*)C);
/*[IF*/
if(((C)->_when_list/*12*/)==((void*)(NULL))){
r232error((C)->_start_position/*4*/,((T0*)ms232_11604));
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms232_94840);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(_te,((T0*)ms232_18320));
r21add_position((C)->_start_position/*4*/);
r21print_as_error((T21*)(oBC12eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
C->_else_compound=r216to_runnable((T216*)((C)->_else_compound/*20*/),a1);
}
/*FI]*/
R=(T0*)C;
}
else{
R=r232twin(C);
{T234*n=malloc(sizeof(*n));
*n=M234;
r234from_when_list(n,(C)->_when_list/*12*/);
_wl=(T0*)n;
}
/*[IRF3.3set_when_list*/((((T232*)(((T232*)R))))->_when_list)=(_wl);
/*]*/
/*[IRF3.3clear_current_type*/((((T232*)(((T232*)R))))->_current_type)=(NULL);
/*]*/
R=r232to_runnable(((T232*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_INSPECT.fz_00*/
/*No:E_INSPECT.else_compound*/
/*No:E_INSPECT.current_type*/
/*No:E_INSPECT.is_pre_computable*/
/*No:E_INSPECT.fz_12*/
/*No:E_INSPECT.collect_c_tmp*/


void r232error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:E_INSPECT.end_mark_comment*/


void r232make(T232* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_expression=a2;
}
/*No:E_INSPECT.includes*/
/*No:E_INSPECT.when_list*/


void r232afd_check(T232* C){
X56afd_check((C)->_expression/*8*/);
/*[IF*/
if(((C)->_when_list/*12*/)!=((void*)(NULL))){
r234afd_check((T234*)((C)->_when_list/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_else_compound/*20*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_else_compound/*20*/));
}
/*FI]*/
}
/*No:ARGUMENT_NAME1.static_value*/
/*No:ARGUMENT_NAME1.is_static*/
/*No:ARGUMENT_NAME1.is_manifest_string*/
/*No:ARGUMENT_NAME1.start_position*/
/*No:ARGUMENT_NAME1.to_string*/
/*No:ARGUMENT_NAME1.c_simple*/


T0* r190add_comment(T190* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r190to_integer(T190* C){
T2 R=0;
r190error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:ARGUMENT_NAME1.rank*/
/*No:ARGUMENT_NAME1.use_current*/


T0* r190to_runnable(T190* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
_rt=X54to_runnable((C)->_result_type/*12*/,a1);
/*[IF*/
if((_rt)==((void*)(NULL))){
r21add_position(X54start_position((C)->_result_type/*12*/));
r190error((C)->_start_position/*4*/,((T0*)ms190_13065));
}
/*FI]*/
/*[IF*/
if(((C)->_result_type/*12*/)==((void*)(_rt))){
R=(T0*)C;
}
else{
R=r190twin(C);
/*[IRF3.3set_result_type*/((((T190*)(((T190*)R))))->_result_type)=(_rt);
/*]*/
}
/*FI]*/
return R;
}
/*No:ARGUMENT_NAME1.compile_to_c_old*/
/*No:ARGUMENT_NAME1.is_pre_computable*/
/*No:ARGUMENT_NAME1.collect_c_tmp*/
/*No:ARGUMENT_NAME1.fz_iinaiv*/
/*No:ARGUMENT_NAME1.result_type*/

