/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.76Beta#1)--
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                  http://SmallEiffel.loria.fr/                --
*/
#include "compile_to_c.h"


void r121run_feature_has_result(T121* C){
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
r121fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


void r121run_feature_match(T121* C,T0* a1){
r121run_feature_has_result(C);
X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r121add_comment(T121* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r121with(T121* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_arguments)=a3;
(/*SFN*/C->_run_feature)=a4;
r121run_feature_match(C,a5);
}


void r121mapping_c_target(T121* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r121result_type(C));
/*[IF*/
if(X52is_reference(_actual_type)){
/*[IF*/
if(X52is_reference(a1)){
X52mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X52need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T121* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r121afd_check(T121* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r53count(((T53*)_running)))>(1)){
r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X104afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r121c_declare_for_old(T121* C){
X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r121collect_c_tmp(T121* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T0* r121operator(void){
T0* R=NULL;
R=((T0*)ms15_10680);
return R;
}


T6 r121use_current(T121* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X104use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T0* r121runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X139to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
}
r121fatal_error(((T0*)ms14_12870));
}
/*FI]*/
return R;
}


T0* r121to_runnable(T121* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r121runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r121runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X104result_type(_t);
_argument_type=X104result_type(r121arg1(C));
/*[IF*/
if(X52is_real(_argument_type)){
/*[IF*/
if(X52is_integer(_target_type)){
_t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X52is_double(_argument_type)){
/*[IF*/
if((X52is_integer(_target_type))||(X52is_real(_target_type))){
_t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r121run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r121run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T121*n=((T121*)malloc(sizeof(*n))/*24*/);
*n=M121;
r121with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r121to_integer(T121* C){
T2 R=0;
r121error(/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/,((T0*)ms14_45441));
return R;
}


T6 r121is_static(T121* C){
T6 R=0;
/*[IF*/
if(X52is_boolean(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if(X104is_static((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if((X104static_value((/*RF2*/(C)->_target/*4*/)))==(0)){
R=1;
}
else{
R=X104is_static(r121arg1(C));
/*[IF*/
if(R){
(/*SFN*/C->_static_value_mem)=X104static_value(r121arg1(C));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r121finalize(T121* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
}


void r121error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r121result_type(T121* C){
T0* R=NULL;
T0* _tla=NULL;
R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X52is_like_current(R)){
R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 257:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X52run_type(X104result_type(r121arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r121arg1(T121* C){
T0* R=NULL;
R=/*SSFRF4*//*X139first*//*(IRF4.3first*/(/*RF2*/((T139*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


T6 r121call_proc_call_stupid_switch(T121* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*8*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X104is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r121run_feature_for(T121* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X104result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X52run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=r50base_class(((T50*)_rc));
R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}


T0* r121static_result_base_class(T121* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X90result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X52static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r61base_class(((T61*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r121make(T121* C,T0* a1,T68 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T129*n=((T129*)malloc(sizeof(*n))/*20*/);
*n=M129;
r129make(n,r121operator(),a2);
(/*SFN*/C->_feature_name)=((T0*)n);
}
{T139*n=((T139*)malloc(sizeof(*n))/*16*/);
*n=M139;
/*[IRF3.3make_1*/((((T139*)(n)))->_first_one)=(a3);
/*]*/
(/*SFN*/C->_arguments)=((T0*)n);
}
}


void r121fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r121assertion_check(T121* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
/*FI]*/
X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X104assertion_check(r121arg1(C),a1);
}


T6 r121stupid_switch(T121* C,T0* a1){
T6 R=0;
R=r121call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r121result_type(C)));
}
/*FI]*/
return R;
}


void r251warning(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_warning((T66*)(oBC13eh));
}


void r251c2c_clear_expanded(T251* C,T2 a1){
X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
}


void r251c2c_closing(T251* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 145:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213));
/*]*/
}
/*FI]*/
/*[IF*/
if(r325call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\73');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r251add_comment(T251* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
/*AF*/else{
{T224*n=((T224*)malloc(sizeof(*n))/*12*/);
*n=M224;
r224make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r251check_created_type(T251* C,T0* a1){
T0* _rt=NULL;
_rt=X52run_type(a1);
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T51*)(X52base_class(_rt)))->_is_deferred/*16*/)){
r66add_type(_rt,((T0*)ms248_11648));
r251warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms248_30681));
}
/*FI]*/
/*[IF*/
if(X52is_formal_generic(a1)){
r66add_position((/*RF2*/(C)->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms248_76570);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(a1,((T0*)ms248_174));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r50set_at_run_time((T50*)(X52run_class(_rt)));
}


void r251afd_check(T251* C){
/*[IF*/
if((r251arg_count(C))>(0)){
/*SSPRF3*//*X139afd_check*/r139afd_check((T139*)(r251run_args(C)));
}
/*FI]*/
}


void r251collect_c_tmp(T251* C){
T0* _arguments=NULL;
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
_arguments=r251run_args(C);
/*[IF*/
if((_arguments)!=((void*)(NULL))){
/*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp(((T139*)_arguments));
}
/*FI]*/
}


void r251check_writable(T251* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X104to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r251fatal_error(((T0*)ms248_63756));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


T6 r251use_current(T251* C){
T6 R=0;
/*[IF*/
if((r251run_args(C))!=((void*)(NULL))){
R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)(r251run_args(C)));
}
/*FI]*/
R=(R)||(X104use_current((/*RF2*/(C)->_writable/*12*/)));
return R;
}


T0* r251to_runnable(T251* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
r251check_writable(C,a1);
_t=X104result_type((/*RF2*/(C)->_writable/*12*/));
r251check_created_type(C,_t);
r251check_creation_clause(C,_t);
R=((T0*)(C));
}
else{
{T251*n=((T251*)malloc(sizeof(*n))/*28*/);
*n=M251;
r251make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*24*/));
R=((T0*)n);
}
R=r251to_runnable(((T251*)R),a1);
}
/*FI]*/
return R;
}


void r251error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


void r251c2c_expanded_initializer(T251* C,T0* a1){
T0* _rf3=NULL;
_rf3=X52expanded_initializer(a1);
/*[IF*/
if((_rf3)!=((void*)(NULL))){
r325expanded_writable((T325*)(oBC13cpp),_rf3,(/*RF2*/(C)->_writable/*12*/));
}
/*FI]*/
}


T0* r251run_args(T251* C){
T0* R=NULL;
R=X152arguments((/*RF2*/(C)->_call/*24*/));
return R;
}


void r251make(T251* C,T68 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_writable)=a2;
(/*SFN*/C->_call)=a3;
}


void r251fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r251compile_to_c(T251* C){
T0* _t=NULL;
_t=X52run_type(X104result_type((/*RF2*/(C)->_writable/*12*/)));
/*[IF*/
if(X52is_reference(_t)){
r251c2c_opening(C,_t);
r325push_new((T325*)(oBC13cpp),(/*RF2*/(C)->_run_feature/*16*/),r251run_args(C));
X334mapping_c((/*RF2*/(C)->_run_feature/*16*/));
r325pop((T325*)(oBC13cpp));
r251c2c_closing(C,_t);
}
else{
r251c2c_clear_expanded(C,X52id(_t));
r251c2c_expanded_initializer(C,_t);
}
/*FI]*/
}


T2 r251arg_count(T251* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_call/*24*/))!=((void*)(NULL))){
R=X152arg_count((/*RF2*/(C)->_call/*24*/));
}
/*FI]*/
return R;
}


void r251check_creation_clause(T251* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
{T68 se_tmp0;
_top=(/*RF2*/((*(se_tmp0=X82start_position(_fn),&se_tmp0)))._base_class/*0*/);
}
_bottom=X52base_class(a1);
/*[IF*/
if(X52is_like_current(a1)){
_fn=r51new_name_of(((T51*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
r66feature_not_found(_fn);
/*[IRF3.6append*/{T0* b1=((T0*)ms252_22600);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark(a1);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r251fatal_error(((T0*)ms14_160));
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_run_feature)=r50get_feature((T50*)(X52run_class(a1)),_fn);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
r251cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
}
 else if(!(X52has_creation(a1,_fn))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=X82to_string(_fn);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms252_45376);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(a1,((T0*)ms14_46));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r50add_client((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))),X52run_class((/*RF2*/(C)->_current_type/*20*/)));
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
r251fatal_error(((T0*)ms252_66627));
}
/*FI]*/
/*[IF*/
if(((r251arg_count(C))==(0))&&((X334arguments((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
r66add_position((/*RF2*/(C)->_start_position/*4*/));
r251fatal_error(((T0*)ms252_63264));
}
/*FI]*/
/*[IF*/
if((r251arg_count(C))>(0)){
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
_args=X139to_runnable(X152arguments((/*RF2*/(C)->_call/*24*/)),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
{T68 se_tmp0;
r251error((*(se_tmp0=X139start_position(X152arguments((/*RF2*/(C)->_call/*24*/))),&se_tmp0)),((T0*)ms14_14504));
}
}
else{
X139match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_call)=X152make_runnable((/*RF2*/(C)->_call/*24*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
}


T6 r251stupid_switch(T251* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
_t=X104result_type((/*RF2*/(C)->_writable/*12*/));
/*FI]*/
/*[IF*/
if(X52is_anchored(_t)){
}
 else if(X52is_generic(_t)){
}
else{
/*[IF*/
if(((/*RF2*/(C)->_call/*24*/))==((void*)(NULL))){
R=X104stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
else{
R=X152stupid_switch((/*RF2*/(C)->_call/*24*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r251c2c_opening(T251* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X52run_class(a1);
r325se_trace_ins((T325*)(oBC13cpp),(/*RF2*/(C)->_start_position/*4*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r344allocation((T344*)(oBC13gc_handler),_rc);
r325expanded_attributes((T325*)(oBC13cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 145:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),r145c_variable_name(((T145*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213a));
/*]*/
}
/*FI]*/
}


T6 r251is_pre_computable(T251* C){
T6 R=0;
T0* _rfctbcn=NULL;
T0* _rfn=NULL;
T0* _rfct=NULL;
/*[IF*/
if(X104is_result((/*RF2*/(C)->_writable/*12*/))){
/*[IF*/
if((r251run_args(C))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139is_pre_computable*/r139is_pre_computable((T139*)(r251run_args(C)));
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X334is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
}
else{
_rfct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
_rfctbcn=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
_rfn=X82to_string(/*SSWARF2*//*X334name*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*12*/));
/*[IF*/
if((((T0*)ms15_1656))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_16692))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_19124))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms15_2600))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms15_27456))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r251cp_not_found(T251* C,T0* a1){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
r251fatal_error(((T0*)ms252_53041));
}


T0* r315try_to_undefine_aux(T315* C,T0* a1,T0* a2){
T0* R=NULL;
{T68 se_tmp0;
r66add_position((*(se_tmp0=r315start_position(C),&se_tmp0)));
}
{T68 se_tmp0;
r315error((*(se_tmp0=X82start_position(a1),&se_tmp0)),((T0*)ms200_98784));
}
r51fatal_undefine(((T51*)a2),a1);
return R;
}


T0* r315try_to_undefine(T315* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
_fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X82undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r315try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r315merge_header_comments(C,R);
}
else{
r51fatal_undefine(((T51*)a2),a1);
}
/*FI]*/
return R;
}


void r315check_obsolete(T315* C,T68 a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r315to_run_feature(T315* C,T0* a1,T0* a2){
T0* R=NULL;
{T345*n=((T345*)malloc(sizeof(*n))/*32*/);
*n=M345;
r345make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
return R;
}


void r315error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T6 r315is_not_mergeable_with(T315* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
R=(X90result_type(a1))!=((void*)(NULL));
}
else{
R=(X90result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
else{
/*[IF*/
{/*AT*/R=(X90arguments(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
 else {/*AT*/}
/*FI]*/
}
/*FI]*/
r315merge_header_comments(C,a1);
return R;
}


void r315make(T315* C,T0* a1,T0* a2){
/*[IRF3.3make_e_feature*/((((T315*)(C)))->_names)=(a1);
/*]*/
(/*SFN*/C->_result_type)=a2;
}


void r315add_into(T315* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
{T68 se_tmp0;
(/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
}
_i=1;
while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
{
_fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
/*[IF*/
if(r91has(((T91*)a1),X82to_key(_fn))){
_fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X82to_string(_fn);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
else{
r91put(((T91*)a1),(T0*)C,X82to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r315can_hide(T315* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X90result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X90result_type(a1))==((void*)(NULL)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r315error((*(se_tmp0=r315start_position(C),&se_tmp0)),((T0*)ms90_64152));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X90arguments(a1)))){
/*[IF*/
{/*AT*/{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r315error((*(se_tmp0=r315start_position(C),&se_tmp0)),((T0*)ms90_82612));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(X52is_a_in((/*RF2*/(C)->_result_type/*20*/),X90result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r315merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r315merge_header_comments(T315* C,T0* a1){
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
}
 else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
}
/*FI]*/
}
/*FI]*/
}


T68 r315start_position(T315* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


T0* r290try_to_undefine_aux(T290* C,T0* a1,T0* a2){
T0* R=NULL;
{T285*n=((T285*)malloc(sizeof(*n))/*40*/);
*n=M285;
r285from_effective(n,a1,(/*RF2*/(C)->_arguments/*20*/),(/*RF2*/(C)->_require_assertion/*28*/),(/*RF2*/(C)->_ensure_assertion/*32*/),a2);
R=((T0*)n);
}
return R;
}


T0* r290try_to_undefine(T290* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
_fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X82undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r290try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r290merge_header_comments(C,R);
}
else{
r51fatal_undefine(((T51*)a2),a1);
}
/*FI]*/
return R;
}


void r290check_obsolete(T290* C,T68 a1){
/*[IF*/
if(((/*RF2*/(C)->_obsolete_mark/*24*/))!=((void*)(NULL))){
/*[IF*/
if(!((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/))){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=((T0*)ms90_19170);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T161*)((/*RF2*/(C)->_obsolete_mark/*24*/)))->_to_string/*12*/);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
{T68 se_tmp0;
r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
}
r66print_as_warning((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
}


T6 r290use_current(T290* C){
T6 R=0;
R=X288use_current((/*RF2*/(C)->_native/*40*/),(T0*)C);
return R;
}


T0* r290to_run_feature(T290* C,T0* a1,T0* a2){
T0* R=NULL;
{T337*n=((T337*)malloc(sizeof(*n))/*40*/);
*n=M337;
r337make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
return R;
}


void r290error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r290external_c_name(T290* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_alias_string/*44*/))==((void*)(NULL))){
R=X82to_string(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/);
}
else{
R=(/*RF2*/(C)->_alias_string/*44*/);
}
/*FI]*/
return R;
}


T6 r290is_not_mergeable_with(T290* C,T0* a1){
T6 R=0;
/*[IF*/
{/*AT*/R=(X90result_type(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
else{
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
R=(X90arguments(a1))!=((void*)(NULL));
}
else{
R=(X90arguments(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
 else if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
}
 else if((/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)!=(/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)(X90arguments(a1)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_66660);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
R=1;
}
/*FI]*/
}
/*FI]*/
r290merge_header_comments(C,a1);
return R;
}


void r290set_header_comment(T290* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)>(1))){
(/*SFN*/C->_end_comment)=a1;
}
/*FI]*/
}


void r290set_rescue_compound(T290* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=r215start_position(((T215*)a1)),&se_tmp0)));
}
}
else{
{T68 se_tmp0;
r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
}
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms289_126054);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


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


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);
}


void r290make_external_routine(T290* C,T0* a1,T0* a2){
(/*SFN*/C->_native)=a1;
(/*SFN*/C->_alias_string)=a2;
}


void r290add_into(T290* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
{T68 se_tmp0;
(/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
}
_i=1;
while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
{
_fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
/*[IF*/
if(r91has(((T91*)a1),X82to_key(_fn))){
_fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X82to_string(_fn);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
else{
r91put(((T91*)a1),(T0*)C,X82to_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*)(X90result_type(a1)))){
/*[IF*/
{/*AT*/{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_64152));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(X90arguments(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL)))||((X90arguments(a1))==((void*)(NULL)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_82612));
}
}
 else if((/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)!=(/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/((T178*)(X90arguments(a1)))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r290error((*(se_tmp0=r290start_position(C),&se_tmp0)),((T0*)ms90_66660));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(r178is_a_in((T178*)((/*RF2*/(C)->_arguments/*20*/)),X90arguments(a1),a2))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=r290start_position(C),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r290merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r290merge_header_comments(T290* C,T0* a1){
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
}
 else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
}
/*FI]*/
}
/*FI]*/
}


T68 r290start_position(T290* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


T0* r147add_comment(T147* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r147to_integer(T147* C){
T2 R=0;
r147error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms14_45441));
return R;
}


void r147error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
T0*oBC147result_type=NULL;
int fBC147result_type=0;


T0* r147result_type(void){
if(fBC147result_type==0){fBC147result_type=1;{
T68 _unknown_position={NULL,0};
{T268*n=((T268*)malloc(sizeof(*n))/*8*/);
*n=M268;
oBC147result_type=((T0*)n);
r268make(n,_unknown_position);
}
}}
return oBC147result_type;
}


void r253warning(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_warning((T66*)(oBC13eh));
}


void r253c2c_clear_expanded(T253* C,T2 a1){
X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
}


void r253c2c_closing(T253* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 145:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X104compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213));
/*]*/
}
/*FI]*/
/*[IF*/
if(r325call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\73');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r253add_comment(T253* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
/*AF*/else{
{T224*n=((T224*)malloc(sizeof(*n))/*12*/);
*n=M224;
r224make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r253check_created_type(T253* C,T0* a1){
T0* _rt=NULL;
_rt=X52run_type(a1);
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T51*)(X52base_class(_rt)))->_is_deferred/*16*/)){
r66add_type(_rt,((T0*)ms248_11648));
r253warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms248_30681));
}
/*FI]*/
/*[IF*/
if(X52is_formal_generic(a1)){
r66add_position((/*RF2*/(C)->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms248_76570);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(a1,((T0*)ms248_174));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r50set_at_run_time((T50*)(X52run_class(_rt)));
}


void r253afd_check(T253* C){
/*[IF*/
if((r253arg_count(C))>(0)){
/*SSPRF3*//*X139afd_check*/r139afd_check((T139*)(r253run_args(C)));
}
/*FI]*/
}


void r253collect_c_tmp(T253* C){
T0* _arguments=NULL;
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
_arguments=r253run_args(C);
/*[IF*/
if((_arguments)!=((void*)(NULL))){
/*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp(((T139*)_arguments));
}
/*FI]*/
}


void r253check_writable(T253* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X104to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r253fatal_error(((T0*)ms248_63756));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


T6 r253use_current(T253* C){
T6 R=0;
/*[IF*/
if((r253run_args(C))!=((void*)(NULL))){
R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)(r253run_args(C)));
}
/*FI]*/
R=(R)||(X104use_current((/*RF2*/(C)->_writable/*12*/)));
return R;
}


T0* r253to_runnable(T253* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
r253check_writable(C,a1);
r253check_explicit_type(C);
r253check_created_type(C,(/*RF2*/(C)->_type/*28*/));
r253check_creation_clause(C,(/*RF2*/(C)->_type/*28*/));
R=((T0*)(C));
}
else{
{T253*n=((T253*)malloc(sizeof(*n))/*32*/);
*n=M253;
r253make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_type/*28*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*24*/));
R=((T0*)n);
}
R=r253to_runnable(((T253*)R),a1);
}
/*FI]*/
return R;
}


void r253check_explicit_type(T253* C){
T0* _t=NULL;
T0* _ct=NULL;
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
_t=X52to_runnable((/*RF2*/(C)->_type/*28*/),_ct);
/*[IF*/
if(((_t)==((void*)(NULL)))||(!(X52is_run_type(_t)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X52start_position((/*RF2*/(C)->_type/*28*/)),&se_tmp0)));
}
r253fatal_error(((T0*)ms250_33396));
}
else{
(/*SFN*/C->_type)=_t;
}
/*FI]*/
/*[IF*/
if(!(X52is_a((/*RF2*/(C)->_type/*28*/),X104result_type((/*RF2*/(C)->_writable/*12*/))))){
r253fatal_error(((T0*)ms250_34344));
}
/*FI]*/
}


void r253error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


void r253c2c_expanded_initializer(T253* C,T0* a1){
T0* _rf3=NULL;
_rf3=X52expanded_initializer(a1);
/*[IF*/
if((_rf3)!=((void*)(NULL))){
r325expanded_writable((T325*)(oBC13cpp),_rf3,(/*RF2*/(C)->_writable/*12*/));
}
/*FI]*/
}


T0* r253run_args(T253* C){
T0* R=NULL;
R=X152arguments((/*RF2*/(C)->_call/*24*/));
return R;
}


void r253make(T253* C,T68 a1,T0* a2,T0* a3,T0* a4){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_type)=a2;
(/*SFN*/C->_writable)=a3;
(/*SFN*/C->_call)=a4;
}


void r253fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r253compile_to_c(T253* C){
/*[IF*/
if(X52is_reference((/*RF2*/(C)->_type/*28*/))){
r253c2c_opening(C,(/*RF2*/(C)->_type/*28*/));
r325push_new((T325*)(oBC13cpp),(/*RF2*/(C)->_run_feature/*16*/),r253run_args(C));
X334mapping_c((/*RF2*/(C)->_run_feature/*16*/));
r325pop((T325*)(oBC13cpp));
r253c2c_closing(C,(/*RF2*/(C)->_type/*28*/));
}
else{
r253c2c_clear_expanded(C,X52id((/*RF2*/(C)->_type/*28*/)));
r253c2c_expanded_initializer(C,(/*RF2*/(C)->_type/*28*/));
}
/*FI]*/
}


T2 r253arg_count(T253* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_call/*24*/))!=((void*)(NULL))){
R=X152arg_count((/*RF2*/(C)->_call/*24*/));
}
/*FI]*/
return R;
}


void r253check_creation_clause(T253* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
{T68 se_tmp0;
_top=(/*RF2*/((*(se_tmp0=X82start_position(_fn),&se_tmp0)))._base_class/*0*/);
}
_bottom=X52base_class(a1);
/*[IF*/
if(X52is_like_current(a1)){
_fn=r51new_name_of(((T51*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
r66feature_not_found(_fn);
/*[IRF3.6append*/{T0* b1=((T0*)ms252_22600);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark(a1);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r253fatal_error(((T0*)ms14_160));
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_run_feature)=r50get_feature((T50*)(X52run_class(a1)),_fn);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
r253cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
}
 else if(!(X52has_creation(a1,_fn))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=X82to_string(_fn);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms252_45376);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(a1,((T0*)ms14_46));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r50add_client((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))),X52run_class((/*RF2*/(C)->_current_type/*20*/)));
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
r253fatal_error(((T0*)ms252_66627));
}
/*FI]*/
/*[IF*/
if(((r253arg_count(C))==(0))&&((X334arguments((/*RF2*/(C)->_run_feature/*16*/)))!=((void*)(NULL)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
r66add_position((/*RF2*/(C)->_start_position/*4*/));
r253fatal_error(((T0*)ms252_63264));
}
/*FI]*/
/*[IF*/
if((r253arg_count(C))>(0)){
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
_args=X139to_runnable(X152arguments((/*RF2*/(C)->_call/*24*/)),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
{T68 se_tmp0;
r253error((*(se_tmp0=X139start_position(X152arguments((/*RF2*/(C)->_call/*24*/))),&se_tmp0)),((T0*)ms14_14504));
}
}
else{
X139match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_call)=X152make_runnable((/*RF2*/(C)->_call/*24*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
}


T6 r253stupid_switch(T253* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_type/*28*/))!=((void*)(NULL))){
_t=(/*RF2*/(C)->_type/*28*/);
}
else{
_t=X104result_type((/*RF2*/(C)->_writable/*12*/));
}
/*FI]*/
/*[IF*/
if(X52is_anchored(_t)){
}
 else if(X52is_generic(_t)){
}
else{
/*[IF*/
if(((/*RF2*/(C)->_call/*24*/))==((void*)(NULL))){
R=X104stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
else{
R=X152stupid_switch((/*RF2*/(C)->_call/*24*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r253c2c_opening(T253* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X52run_class(a1);
r325se_trace_ins((T325*)(oBC13cpp),(/*RF2*/(C)->_start_position/*4*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r344allocation((T344*)(oBC13gc_handler),_rc);
r325expanded_attributes((T325*)(oBC13cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 145:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),r145c_variable_name(((T145*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms248_4213a));
/*]*/
}
/*FI]*/
}


T6 r253is_pre_computable(T253* C){
T6 R=0;
T0* _rfctbcn=NULL;
T0* _rfn=NULL;
T0* _rfct=NULL;
/*[IF*/
if(X104is_result((/*RF2*/(C)->_writable/*12*/))){
/*[IF*/
if((r253run_args(C))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139is_pre_computable*/r139is_pre_computable((T139*)(r253run_args(C)));
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X334is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
}
else{
_rfct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
_rfctbcn=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
_rfn=X82to_string(/*SSWARF2*//*X334name*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*12*/));
/*[IF*/
if((((T0*)ms15_1656))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_16692))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_19124))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms15_2600))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_4956))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms15_27456))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms15_1915))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_14817))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms15_12550))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r253cp_not_found(T253* C,T0* a1){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(/*SSWARF2*//*X152feature_name*/(/*RF2*/((T155*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
r253fatal_error(((T0*)ms252_53041));
}


T0* r158add_comment(T158* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r158to_runnable(T158* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
R=((T0*)(C));
_t=r263to_runnable((T263*)(/*(IRF4.8result_type*/r158type_boolean()/*)*/),a1);
return R;
}


void r158error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r158type_boolean(void){
if(fBC13type_boolean==0){fBC13type_boolean=1;{
T68 _unknown_position={NULL,0};
{T263*n=((T263*)malloc(sizeof(*n))/*8*/);
*n=M263;
oBC13type_boolean=((T0*)n);
r263make(n,_unknown_position);
}
}}
return oBC13type_boolean;
}


T0* r158static_result_base_class(void){
T0* R=NULL;
R=r49get_class(((T0*)ms15_6405));
return R;
}


T2 r158isa_dca_inline_argument(void){
T2 R=0;
/*[IF*/
{/*AT*/R=-(1);
}
/*FI]*/
return R;
}


void r128compile_to_c_old(T128* C){
X104compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X139compile_to_c_old*/r139compile_to_c_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r128call_is_static(T128* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)));
/*[IF*/
if((_rc)!=((void*)(NULL))){
_running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
_rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X334is_static(_rf)){
(/*SFN*/C->_static_value_mem)=X334static_value_mem(_rf);
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r128runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X104to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position(a1),&se_tmp0)));
}
r128fatal_error(((T0*)ms116_16290));
}
/*FI]*/
return R;
}


void r128run_feature_has_result(T128* C){
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
r128fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


void r128run_feature_match(T128* C,T0* a1){
r128run_feature_has_result(C);
X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r128add_comment(T128* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r128with(T128* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_arguments)=a3;
(/*SFN*/C->_run_feature)=a4;
r128run_feature_match(C,a5);
}


void r128mapping_c_target(T128* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r128result_type(C));
/*[IF*/
if(X52is_reference(_actual_type)){
/*[IF*/
if(X52is_reference(a1)){
X52mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X52need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T128* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r128afd_check(T128* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r53count(((T53*)_running)))>(1)){
r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X104afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r128c_declare_for_old(T128* C){
X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r128collect_c_tmp(T128* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r128use_current(T128* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X104use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T0* r128runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X139to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
}
r128fatal_error(((T0*)ms14_12870));
}
/*FI]*/
return R;
}


T0* r128to_runnable(T128* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r128runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r128runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X104result_type(_t);
_argument_type=X104result_type(r128arg1(C));
/*[IF*/
if(X52is_real(_argument_type)){
/*[IF*/
if(X52is_integer(_target_type)){
_t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X52is_double(_argument_type)){
/*[IF*/
if((X52is_integer(_target_type))||(X52is_real(_target_type))){
_t=r341implicit_cast((T341*)(oBC13conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r128run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r128run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T128*n=((T128*)malloc(sizeof(*n))/*24*/);
*n=M128;
r128with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r128to_integer(T128* C){
T2 R=0;
r128error(/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/,((T0*)ms14_45441));
return R;
}


void r128finalize(T128* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
}


void r128error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r128result_type(T128* C){
T0* R=NULL;
T0* _tla=NULL;
R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X52is_like_current(R)){
R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 257:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X52run_type(X104result_type(r128arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r128arg1(T128* C){
T0* R=NULL;
R=/*SSFRF4*//*X139first*//*(IRF4.3first*/(/*RF2*/((T139*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


T6 r128call_proc_call_stupid_switch(T128* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*8*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X104is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r128run_feature_for(T128* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X104result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X52run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=r50base_class(((T50*)_rc));
R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
r66add_position((/*RF2*/((T129*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}


T0* r128static_result_base_class(T128* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X90result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X52static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r61base_class(((T61*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r128make(T128* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
{T139*n=((T139*)malloc(sizeof(*n))/*16*/);
*n=M139;
/*[IRF3.3make_1*/((((T139*)(n)))->_first_one)=(a3);
/*]*/
(/*SFN*/C->_arguments)=((T0*)n);
}
}


void r128fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r128assertion_check(T128* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T129*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
/*FI]*/
X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X104assertion_check(r128arg1(C),a1);
}


T6 r128stupid_switch(T128* C,T0* a1){
T6 R=0;
R=r128call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r128result_type(C)));
}
/*FI]*/
return R;
}


void r225print_else(T6 a1){
/*[IF*/
if(a1){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_3894));
/*]*/
}
/*FI]*/
}


void r225make(T225* C,T0* a1,T0* a2){
(/*SFN*/C->_expression)=a1;
(/*SFN*/C->_then_compound)=a2;
}


T2 r225compile_to_c(T225* C,T6 a1){
T2 R=0;
T6 _trace=0;
/*[IF*/
if(X104is_static((/*RF2*/(C)->_expression/*0*/))){
r325incr_static_expression_count((T325*)(oBC13cpp));
/*[IF*/
if((X104static_value((/*RF2*/(C)->_expression/*0*/)))==(1)){
r225print_else(a1);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_4830));
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
R=1;
}
else{
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms225_3288));
/*]*/
R=2;
}
/*FI]*/
}
else{
R=3;
_trace=(!(X104c_simple((/*RF2*/(C)->_expression/*0*/))))&&(r47no_check((T47*)(oBC13run_control)));
r225print_else(a1);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_414));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_trace){
r325trace_boolean_expression((T325*)(oBC13cpp),(/*RF2*/(C)->_expression/*0*/));
}
else{
X104compile_to_c((/*RF2*/(C)->_expression/*0*/));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_266));
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
}
/*FI]*/
return R;
}


void r225afd_check(T225* C){
X104afd_check((/*RF2*/(C)->_expression/*0*/));
/*[IF*/
if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
}
/*FI]*/
}


void r225collect_c_tmp(T225* C){
X104collect_c_tmp((/*RF2*/(C)->_expression/*0*/));
}


T6 r225use_current(T225* C){
T6 R=0;
R=X104use_current((/*RF2*/(C)->_expression/*0*/));
/*[IF*/
if((!(R))&&(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL)))){
R=r215use_current((T215*)((/*RF2*/(C)->_then_compound/*4*/)));
}
/*FI]*/
return R;
}


T6 r225stupid_switch(T225* C,T0* a1){
T6 R=0;
R=(X104stupid_switch((/*RF2*/(C)->_expression/*0*/),a1))&&((((/*RF2*/(C)->_then_compound/*4*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_then_compound/*4*/)),a1)));
return R;
}


T0* r225to_runnable(T225* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _tc=NULL;
T0* _e=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*8*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_e=X104to_runnable((/*RF2*/(C)->_expression/*0*/),a1);
/*[IF*/
if((_e)==((void*)(NULL))){
{T68 se_tmp0;
r225error((*(se_tmp0=X104start_position((/*RF2*/(C)->_expression/*0*/)),&se_tmp0)),((T0*)ms225_32637));
}
}
else{
(/*SFN*/C->_expression)=_e;
_t=X104result_type((/*RF2*/(C)->_expression/*0*/));
/*[IF*/
if(!(X52is_boolean(_t))){
/*[IRF3.6append*/{T0* b1=((T0*)ms225_74948);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(X104result_type((/*RF2*/(C)->_expression/*0*/)),((T0*)ms14_18080));
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position((/*RF2*/(C)->_expression/*0*/)),&se_tmp0)));
}
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_then_compound/*4*/))!=((void*)(NULL))){
_tc=r215to_runnable((T215*)((/*RF2*/(C)->_then_compound/*4*/)),a1);
/*[IF*/
if((_tc)!=((void*)(NULL))){
(/*SFN*/C->_then_compound)=_tc;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
{T225*n=((T225*)malloc(sizeof(*n))/*12*/);
*n=M225;
r225make(n,(/*RF2*/(C)->_expression/*0*/),(/*RF2*/(C)->_then_compound/*4*/));
R=((T0*)n);
}
R=r225to_runnable(((T225*)R),a1);
}
/*FI]*/
return R;
}


void r225error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r204try_to_undefine_aux(T204* C,T0* a1,T0* a2){
T0* R=NULL;
{T68 se_tmp0;
r66add_position((*(se_tmp0=r204start_position(C),&se_tmp0)));
}
{T68 se_tmp0;
r204error((*(se_tmp0=X82start_position(a1),&se_tmp0)),((T0*)ms200_98784));
}
r51fatal_undefine(((T51*)a2),a1);
return R;
}


T0* r204try_to_undefine(T204* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
_fn2=r83feature_name((T83*)((/*RF2*/(C)->_names/*8*/)),X82to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X82undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r204try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X284set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r204merge_header_comments(C,R);
}
else{
r51fatal_undefine(((T51*)a2),a1);
}
/*FI]*/
return R;
}


void r204check_obsolete(T204* C,T68 a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r204to_run_feature(T204* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X52run_class(a1);
R=r50at(((T50*)_rc),a2);
if(NULL!=(R)){
switch(((T0*)R)->id){
case 388:
break;
default:
R=NULL;
}
}/*[IF*/
if((R)==((void*)(NULL))){
{T388*n=((T388*)malloc(sizeof(*n))/*36*/);
*n=M388;
r388make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r204error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T6 r204is_not_mergeable_with(T204* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
R=(X90result_type(a1))!=((void*)(NULL));
}
else{
R=(X90result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_64152);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
else{
/*[IF*/
{/*AT*/R=(X90arguments(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_82612);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
}
 else {/*AT*/}
/*FI]*/
}
/*FI]*/
r204merge_header_comments(C,a1);
return R;
}


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


void r204add_into(T204* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
{T68 se_tmp0;
(/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
}
_i=1;
while (!((_i)>(r83count((T83*)((/*RF2*/(C)->_names/*8*/))))))
{
_fn=r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i);
/*[IF*/
if(r91has(((T91*)a1),X82to_key(_fn))){
_fn=/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r91at(((T91*)a1),X82to_key(_fn))))->_names/*8*/))))->_first/*0*/)/*)*/;
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(r83item((T83*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms90_41470);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X82to_string(_fn);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
else{
r91put(((T91*)a1),(T0*)C,X82to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r204can_hide(T204* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X90result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X90result_type(a1))==((void*)(NULL)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r204error((*(se_tmp0=r204start_position(C),&se_tmp0)),((T0*)ms90_64152));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X90arguments(a1)))){
/*[IF*/
{/*AT*/{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r204error((*(se_tmp0=r204start_position(C),&se_tmp0)),((T0*)ms90_82612));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(X52is_a_in((/*RF2*/(C)->_result_type/*20*/),X90result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms90_51136);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(((T50*)a2))->_current_type/*0*/));
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_46);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r204merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r204merge_header_comments(T204* C,T0* a1){
/*[IF*/
if((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/)){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/);
}
 else if((/*SSWARF2*//*X90header_comment*/(/*RF2*/(((T198*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X90set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
}
/*FI]*/
}
/*FI]*/
}


T68 r204start_position(T204* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X82start_position(/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


void r143compile_to_c_old(T143* C){
X104compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((r143arg_count(C))>(0)){
/*SSPRF3*//*X139compile_to_c_old*/r139compile_to_c_old((T139*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


T0* r143runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X104to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position(a1),&se_tmp0)));
}
r143fatal_error(((T0*)ms116_16290));
}
/*FI]*/
return R;
}


void r143run_feature_has_result(T143* C){
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r143fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


T2 r143static_value(T143* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))))->_running/*9*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
_rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X334is_static(_rf)){
R=X334static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r143run_feature_match(T143* C,T0* a1){
r143run_feature_has_result(C);
X139match_with((/*RF2*/(C)->_arguments/*12*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r143add_comment(T143* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r143with(T143* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_arguments)=a3;
(/*SFN*/C->_run_feature)=a4;
r143run_feature_match(C,a5);
}


void r143mapping_c_target(T143* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r143result_type(C));
/*[IF*/
if(X52is_reference(_actual_type)){
/*[IF*/
if(X52is_reference(a1)){
X52mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X52need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T143* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r143afd_check(T143* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r53count(((T53*)_running)))>(1)){
r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X104afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((r143arg_count(C))>(0)){
/*SSPRF3*//*X139afd_check*/r139afd_check((T139*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


void r143c_declare_for_old(T143* C){
X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((r143arg_count(C))>(0)){
/*SSPRF3*//*X139c_declare_for_old*/r139c_declare_for_old((T139*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


void r143collect_c_tmp(T143* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*12*/))!=((void*)(NULL))){
/*SSPRF3*//*X139collect_c_tmp*/r139collect_c_tmp((T139*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


T6 r143use_current(T143* C){
T6 R=0;
/*[IF*/
if((r143arg_count(C))>(0)){
R=/*SSFRF4*//*X139use_current*/r139use_current((T139*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
R=X334use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X104use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T0* r143runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X139to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X139start_position(a1),&se_tmp0)));
}
r143fatal_error(((T0*)ms14_12870));
}
/*FI]*/
return R;
}


T0* r143to_runnable(T143* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r143runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r143runnable_args((/*RF2*/(C)->_arguments/*12*/),a1);
_rf=r143run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r143run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*12*/))))){
R=((T0*)(C));
}
else{
{T143*n=((T143*)malloc(sizeof(*n))/*20*/);
*n=M143;
r143with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r143to_integer(T143* C){
T2 R=0;
{T68 se_tmp0;
r143error((*(se_tmp0=r143start_position(C),&se_tmp0)),((T0*)ms14_45441));
}
return R;
}


T6 r143is_static(T143* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)((/*RF2*/(C)->_run_feature/*16*/)))))->_running/*9*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r53count(((T53*)_running)))==(1))){
_rf=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/(((T53*)_running))->_storage/*0*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X334is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r143finalize(T143* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
}


void r143error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r143result_type(T143* C){
T0* R=NULL;
T0* _e=NULL;
T0* _tla=NULL;
R=X334result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X52is_like_current(R)){
R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 257:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
_e=/*SSFRF4*//*X139expression*/r139expression((T139*)((/*RF2*/(C)->_arguments/*12*/)),/*(IRF4.6rank*/(/*RF2*/(((T179*)((/*RF2*/(((T257*)_tla))->_like_what/*12*/))))->_rank/*12*/)/*)*/);
R=X52run_type(X104result_type(_e));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r143call_proc_call_stupid_switch(T143* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*12*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139stupid_switch*/r139stupid_switch((T139*)((/*RF2*/(C)->_arguments/*12*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X104is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r49same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r143run_feature_for(T143* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X104result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X52run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=r50base_class(((T50*)_rc));
R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}


T0* r143static_result_base_class(T143* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*8*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X90result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X52static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r61base_class(((T61*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r143make(T143* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_arguments)=a3;
}


void r143fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r143assertion_check(T143* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T68 se_tmp0;
X334vape_check_from((/*RF2*/(C)->_run_feature/*16*/),(*(se_tmp0=r143start_position(C),&se_tmp0)));
}
}
/*FI]*/
X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
/*SSPRF3*//*X139assertion_check*/r139assertion_check((T139*)((/*RF2*/(C)->_arguments/*12*/)),a1);
}


T2 r143arg_count(T143* C){
T2 R=0;
R=/*SSFRF4*//*X139count*/r139count((T139*)((/*RF2*/(C)->_arguments/*12*/)));
return R;
}


T6 r143stupid_switch(T143* C,T0* a1){
T6 R=0;
R=r143call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r143result_type(C)));
}
/*FI]*/
return R;
}


T68 r143start_position(T143* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0));
}
return R;
}


void r278make(T278* C,T0* a1,T0* a2){
(/*SFN*/C->_name)=a1;
(/*SFN*/C->_constraint)=a2;
}


void r278fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r278check_generic_formal_arguments(T278* C){
/*[IF*/
if(r49is_used((/*RF2*/((T61*)((/*RF2*/(C)->_name/*0*/)))->_to_string/*8*/))){
r66add_position((/*RF2*/((T61*)((/*RF2*/(C)->_name/*0*/)))->_start_position/*0*/));
r278fatal_error(((T0*)ms278_305382));
}
/*FI]*/
}


void r232add_when_item_2(T232* C,T0* a1){
T2 _i=0;
T2 _u=0;
T2 _l=0;
_l=(/*RF2*/(((T240*)a1))->_lower_value/*16*/);
_u=(/*RF2*/(((T240*)a1))->_upper_value/*20*/);
/*[IF*/
if((_l)>=(_u)){
{T68 se_tmp0;
r232error((*(se_tmp0=r240start_position(((T240*)a1)),&se_tmp0)),((T0*)ms232_20672));
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
_i=_l;
while (!((_i)>(_u)))
{
/*[IF*/
if(/*(IRF4.6includes*/r233includes_integer(((T233*)((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_when_list/*16*/))),_i)/*)*/){
{T68 se_tmp0;
r232err_occ(C,_i,(*(se_tmp0=r240start_position(((T240*)a1)),&se_tmp0)));
}
_i=(_u)+(1);
}
else{
_i=(_i)+(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_values/*24*/))==((void*)(NULL))){
{T374*n=((T374*)malloc(sizeof(*n))/*16*/);
*n=M374;
r374make(n,_l,_u);
(/*SFN*/C->_values)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T374* C1=(T374*)((/*RF2*/(C)->_values/*24*/));
T6 b1=1;
r375set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,((/*RF2*/(C1)->_upper/*8*/))-((/*RF2*/(C1)->_lower/*12*/)));
}/*]*/
}
else{
r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_l);
r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_u);
r374set_slice_with((T374*)((/*RF2*/(C)->_values/*24*/)),1,_l,_u);
}
/*FI]*/
}
/*FI]*/
}


void r232add_value(T232* C,T0* a1){
T0* _element=NULL;
{T239*n=((T239*)malloc(sizeof(*n))/*16*/);
*n=M239;
/*[IRF3.3make*/((((T239*)(n)))->_expression)=(a1);
/*]*/
_element=((T0*)n);
}
/*[IF*/
if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
{T237*n=((T237*)malloc(sizeof(*n))/*16*/);
*n=M237;
r237with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
}
/*FI]*/
r237add_last((T237*)((/*RF2*/(C)->_list/*8*/)),_element);
}


T0* r232to_runnable_integer(T232* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_when_list/*20*/))==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/;
(/*SFN*/C->_when_list)=a1;
/*[IF*/
if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_53969));
}
else{
_i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
while (!(((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/)))||(((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)-(_ne))>(0))))
{
_when_item=X236to_runnable_integer(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
}
else{
/*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
T0* b1=_when_item;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
(/*SFN*/C->_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_compound/*16*/)),_ct);
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL))){
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
}
/*FI]*/
}
/*FI]*/
R=((T0*)(C));
}
else{
{T232*n=((T232*)malloc(sizeof(*n))/*28*/);
*n=M232;
r232from_e_when(n,(T0*)C);
R=((T0*)n);
}
R=r232to_runnable_integer(((T232*)R),a1);
}
/*FI]*/
return R;
}


void r232make(T232* C,T68 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_header_comment)=a2;
}


void r232from_e_when(T232* C,T0* a1){
T0* _when_item=NULL;
T2 _i=0;
(/*SFN*/C->_start_position)=(/*RF2*/(((T232*)a1))->_start_position/*0*/);
(/*SFN*/C->_list)=r237twin((T237*)((/*RF2*/(((T232*)a1))->_list/*8*/)));
_i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
while (!((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/))))
{
_when_item=X236twin(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i));
/*SSPRF3*//*X236clear_e_when*//*[IRF3.3clear_e_when*/((((T239*)(((T239*)_when_item))))->_e_when)=(NULL);
/*]*/
/*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
T0* b1=_when_item;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
_i=(_i)+(1);
}
(/*SFN*/C->_header_comment)=(/*RF2*/(((T232*)a1))->_header_comment/*12*/);
(/*SFN*/C->_compound)=(/*RF2*/(((T232*)a1))->_compound/*16*/);
}


void r232compile_to_c(T232* C){
T2 _bs=0;
T2 _bi=0;
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_1028));
/*]*/
_bi=(/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_lower/*12*/);
while (!((_bi)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/))))
{
_bs=(_bi)+(1);
while (!(((_bs)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/)))||(!(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),_bs)))))
{
_bs=(_bs)+(1);
}
_bs=(_bs)-(1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((_bi)==(_bs)){
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bi);
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_244));
/*]*/
r325put_inspect((T325*)(oBC13cpp));
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bi);
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_242a));
/*]*/
r325put_inspect((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_628));
/*]*/
r325put_inspect((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_242));
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_bs);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_bi=(_bs)+(1);
while (!(((_bi)>((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/)))||(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),_bi))))
{
_bi=(_bi)+(1);
}
/*[IF*/
if((_bi)<=((/*RF2*/((T374*)((/*RF2*/(C)->_values/*24*/)))->_upper/*8*/))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_496));
/*]*/
}
/*FI]*/
}
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms232_522));
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_compound/*16*/)));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
}


void r232afd_check(T232* C){
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_compound/*16*/)));
}
/*FI]*/
}


void r232err_occ(T232* C,T2 a1,T68 a2){
r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms232_63376);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r232error(a2,((T0*)ms232_29304));
}


T6 r232use_current(T232* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
R=r215use_current((T215*)((/*RF2*/(C)->_compound/*16*/)));
}
/*FI]*/
return R;
}


T6 r232stupid_switch(T232* C,T0* a1){
T6 R=0;
R=(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_compound/*16*/)),a1));
return R;
}


T0* r232to_runnable_character(T232* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_when_list/*20*/))==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/;
(/*SFN*/C->_when_list)=a1;
/*[IF*/
if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
r66add_position((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_start_position/*4*/));
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_53969));
}
else{
_i=(/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/);
while (!(((_i)>((/*RF2*/((T237*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/)))||(((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)-(_ne))>(0))))
{
_when_item=X236to_runnable_character(r237item((T237*)((/*RF2*/(C)->_list/*8*/)),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
}
else{
/*[IRF3.6put*/{T237* C1=(T237*)((/*RF2*/(C)->_list/*8*/));
T0* b1=_when_item;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))!=((void*)(NULL))){
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
(/*SFN*/C->_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_compound/*16*/)),_ct);
/*[IF*/
if(((/*RF2*/(C)->_compound/*16*/))==((void*)(NULL))){
r232error((/*RF2*/(C)->_start_position/*0*/),((T0*)ms232_18400));
}
/*FI]*/
}
/*FI]*/
R=((T0*)(C));
}
else{
{T232*n=((T232*)malloc(sizeof(*n))/*28*/);
*n=M232;
r232from_e_when(n,(T0*)C);
R=((T0*)n);
}
R=r232to_runnable_character(((T232*)R),a1);
}
/*FI]*/
return R;
}


void r232add_when_item_1(T232* C,T0* a1){
T2 _v=0;
_v=(/*RF2*/(((T239*)a1))->_expression_value/*12*/);
/*[IF*/
if(/*(IRF4.6includes*/r233includes_integer(((T233*)((/*RF2*/((T231*)(/*(IRF4.6e_inspect*/(/*RF2*/(((T233*)((/*RF2*/(C)->_when_list/*20*/))))->_e_inspect/*0*/)/*)*/))->_when_list/*16*/))),_v)/*)*/){
{T68 se_tmp0;
r232err_occ(C,_v,(*(se_tmp0=r239start_position(((T239*)a1)),&se_tmp0)));
}
}
 else if(((/*RF2*/(C)->_values/*24*/))==((void*)(NULL))){
{T374*n=((T374*)malloc(sizeof(*n))/*16*/);
*n=M374;
r374make(n,_v,_v);
(/*SFN*/C->_values)=((T0*)n);
}
/*[IRF3.6put*/{T374* C1=(T374*)((/*RF2*/(C)->_values/*24*/));
T6 b1=1;
T2 b2=_v;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
else{
r374force((T374*)((/*RF2*/(C)->_values/*24*/)),1,_v);
}
/*FI]*/
}


void r232add_slice(T232* C,T0* a1,T0* a2){
T0* _element=NULL;
{T240*n=((T240*)malloc(sizeof(*n))/*24*/);
*n=M240;
r240make(n,a1,a2);
_element=((T0*)n);
}
/*[IF*/
if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
{T237*n=((T237*)malloc(sizeof(*n))/*16*/);
*n=M237;
r237with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
}
/*FI]*/
r237add_last((T237*)((/*RF2*/(C)->_list/*8*/)),_element);
}


T6 r232includes_integer(T232* C,T2 a1){
T6 R=0;
R=((((/*RF2*/(C)->_values/*24*/))!=((void*)(NULL)))&&(r374valid_index((T374*)((/*RF2*/(C)->_values/*24*/)),a1)))&&(r374item((T374*)((/*RF2*/(C)->_values/*24*/)),a1));
return R;
}


void r232error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


void r243make(T243* C,T68 a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_initialize)=a2;
(/*SFN*/C->_invariant_clause)=a3;
(/*SFN*/C->_variant_clause)=a4;
(/*SFN*/C->_until_expression)=a5;
(/*SFN*/C->_loop_body)=a6;
}


T0* r243add_comment(T243* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(1)){
R=((T0*)(C));
}
else{
{T224*n=((T224*)malloc(sizeof(*n))/*12*/);
*n=M224;
r224make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
return R;
}


void r243compile_to_c(T243* C){
T6 _invariant_flag=0;
T6 _variant_flag=0;
T6 _loop_check=0;
T6 _need_se_tmp=0;
_loop_check=r47loop_check((T47*)(oBC13run_control));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_11988));
/*]*/
_variant_flag=1;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_initialize/*12*/)));
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
r242compile_to_c((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
_invariant_flag=1;
}
/*FI]*/
X104collect_c_tmp((/*RF2*/(C)->_until_expression/*24*/));
_need_se_tmp=r325se_tmp_open_declaration((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_8073));
/*]*/
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r325trace_boolean_expression((T325*)(oBC13cpp),(/*RF2*/(C)->_until_expression/*24*/));
}
else{
X104compile_to_c((/*RF2*/(C)->_until_expression/*24*/));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_1125));
/*]*/
/*[IF*/
if(_variant_flag){
r325variant_check((T325*)(oBC13cpp),/*SSWARF2*//*X241expression*/(/*RF2*/((T244*)((/*RF2*/(C)->_variant_clause/*20*/)))->_expression/*8*/));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_loop_body/*28*/)));
}
/*FI]*/
/*[IF*/
if(_invariant_flag){
r242compile_to_c((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms243_270));
/*]*/
/*[IF*/
if(_need_se_tmp){
r325se_tmp_close_declaration((T325*)(oBC13cpp));
}
/*FI]*/
/*[IF*/
if(_variant_flag){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
}
/*FI]*/
}


void r243afd_check(T243* C){
/*[IF*/
if(r47loop_check((T47*)(oBC13run_control))){
/*[IF*/
if(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X241afd_check*/r244afd_check((T244*)((/*RF2*/(C)->_variant_clause/*20*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL))){
r242afd_check((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_initialize/*12*/)));
}
/*FI]*/
X104afd_check((/*RF2*/(C)->_until_expression/*24*/));
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_loop_body/*28*/)));
}
/*FI]*/
}


T6 r243use_current(T243* C){
T6 R=0;
T6 _loop_check=0;
_loop_check=r47loop_check((T47*)(oBC13run_control));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
R=(R)||(/*SSFRF4*//*X241use_current*/r244use_current((T244*)((/*RF2*/(C)->_variant_clause/*20*/))));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
R=(R)||(r215use_current((T215*)((/*RF2*/(C)->_initialize/*12*/))));
}
/*FI]*/
R=(R)||(X104use_current((/*RF2*/(C)->_until_expression/*24*/)));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
R=(R)||(r242use_current((T242*)((/*RF2*/(C)->_invariant_clause/*16*/))));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
R=(R)||(r215use_current((T215*)((/*RF2*/(C)->_loop_body/*28*/))));
}
/*FI]*/
return R;
}


T6 r243stupid_switch(T243* C,T0* a1){
T6 R=0;
R=(((((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_initialize/*12*/)),a1)))&&(X104stupid_switch((/*RF2*/(C)->_until_expression/*24*/),a1)))&&((((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_loop_body/*28*/)),a1)));
return R;
}


T0* r243to_runnable(T243* C,T0* a1){
T0* R=NULL;
T6 _loop_check=0;
T0* _ue=NULL;
_loop_check=r47loop_check((T47*)(oBC13run_control));
/*[IF*/
if(((/*RF2*/(C)->_current_type/*32*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
(/*SFN*/C->_initialize)=r215to_runnable((T215*)((/*RF2*/(C)->_initialize/*12*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL))){
r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_36096));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
(/*SFN*/C->_invariant_clause)=r242to_runnable((T242*)((/*RF2*/(C)->_invariant_clause/*16*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_invariant_clause/*16*/))==((void*)(NULL))){
r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_14616));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
(/*SFN*/C->_variant_clause)=X241to_runnable((/*RF2*/(C)->_variant_clause/*20*/),a1);
/*[IF*/
if(((/*RF2*/(C)->_variant_clause/*20*/))==((void*)(NULL))){
r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_41834));
}
/*FI]*/
}
/*FI]*/
_ue=X104to_runnable((/*RF2*/(C)->_until_expression/*24*/),a1);
/*[IF*/
if((_ue)!=((void*)(NULL))){
/*[IF*/
if(!(X52is_boolean(X104result_type(_ue)))){
{T68 se_tmp0;
r243error((*(se_tmp0=X104start_position(_ue),&se_tmp0)),((T0*)ms243_78192));
}
r66add_type(X104result_type(_ue),((T0*)ms14_18080));
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
(/*SFN*/C->_until_expression)=_ue;
}
else{
r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_75456));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
(/*SFN*/C->_loop_body)=r215to_runnable((T215*)((/*RF2*/(C)->_loop_body/*28*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL))){
r243error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms243_24012));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
{T243*n=((T243*)malloc(sizeof(*n))/*36*/);
*n=M243;
r243make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_initialize/*12*/),(/*RF2*/(C)->_invariant_clause/*16*/),(/*RF2*/(C)->_variant_clause/*20*/),(/*RF2*/(C)->_until_expression/*24*/),(/*RF2*/(C)->_loop_body/*28*/));
R=((T0*)n);
}
R=r243to_runnable(((T243*)R),a1);
}
/*FI]*/
return R;
}


void r243error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r58going_down(T58* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _previous=NULL;
/*[IF*/
if(((/*RF2*/(C)->_rename_list/*12*/))==((void*)(NULL))){
R=a2;
}
else{
R=r85name_in_child((T85*)((/*RF2*/(C)->_rename_list/*12*/)),a2);
}
/*FI]*/
/*[IF*/
if(!(/*(IRF4.6is_empty*/((/*RF2*/(((T360*)a1))->_upper/*8*/))<(0)/*)*/)){
_previous=r360last(((T360*)a1));
r360remove_last(((T360*)a1));
R=r58going_down(((T58*)_previous),a1,R);
}
/*FI]*/
return R;
}


T0* r58runnable_type(T58* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(X52is_generic((/*RF2*/(C)->_type/*4*/))){
R=X52to_runnable((/*RF2*/(C)->_type/*4*/),a1);
}
else{
R=(/*RF2*/(C)->_type/*4*/);
}
/*FI]*/
return R;
}

