/*
-- 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 r246warning(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_warning((T66*)(oBC13eh));
}


void r246c2c_clear_expanded(T246* 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 r246c2c_closing(T246* 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* r246add_comment(T246* 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 r246check_created_type(T246* 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));
r246warning((/*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 r246compile_to_c(T246* C){
T0* _t=NULL;
_t=X52run_type(X104result_type((/*RF2*/(C)->_writable/*12*/)));
/*[IF*/
if(X52is_reference(_t)){
r246c2c_opening(C,_t);
r246c2c_closing(C,_t);
}
else{
r246c2c_clear_expanded(C,X52id(_t));
}
/*FI]*/
}


void r246check_creation_clause(T246* C,T0* a1){
/*[IF*/
if(/*(IRF4.7has_creation_clause*/((/*RF2*/((T51*)(X52base_class(a1)))->_creation_clause_list/*38*/))!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=((T0*)ms247_36693);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(a1,((T0*)ms247_156));
r246error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms247_45900));
}
/*FI]*/
}


void r246check_writable(T246* 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)));
}
r246fatal_error(((T0*)ms248_63756));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


T6 r246use_current(T246* C){
T6 R=0;
R=X104use_current((/*RF2*/(C)->_writable/*12*/));
return R;
}


T6 r246stupid_switch(T246* 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*/
{/*AT*/R=X104stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r246to_runnable(T246* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*16*/))==((void*)(NULL))){
r246check_writable(C,a1);
_t=X104result_type((/*RF2*/(C)->_writable/*12*/));
r246check_created_type(C,_t);
r246check_creation_clause(C,_t);
R=((T0*)(C));
}
else{
{T246*n=((T246*)malloc(sizeof(*n))/*20*/);
*n=M246;
r246make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_writable/*12*/));
R=((T0*)n);
}
R=r246to_runnable(((T246*)R),a1);
}
/*FI]*/
return R;
}


void r246c2c_opening(T246* 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 r246is_pre_computable(T246* C){
T6 R=0;
R=X104is_result((/*RF2*/(C)->_writable/*12*/));
return R;
}


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


T0* r231add_comment(T231* 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 r231afd_check(T231* C){
X104afd_check((/*RF2*/(C)->_expression/*12*/));
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))!=((void*)(NULL))){
r233afd_check((T233*)((/*RF2*/(C)->_when_list/*16*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_else_compound/*28*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_else_compound/*28*/)));
}
/*FI]*/
}


void r231set_else_compound(T231* C,T68 a1,T0* a2){
(/*SFN*/C->_else_position)=a1;
(/*SFN*/C->_else_compound)=a2;
}


T6 r231use_current(T231* C){
T6 R=0;
R=(R)||(X104use_current((/*RF2*/(C)->_expression/*12*/)));
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))!=((void*)(NULL))){
R=(R)||(r233use_current((T233*)((/*RF2*/(C)->_when_list/*16*/))));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_else_compound/*28*/))!=((void*)(NULL))){
R=(R)||(r215use_current((T215*)((/*RF2*/(C)->_else_compound/*28*/))));
}
/*FI]*/
return R;
}


T0* r231to_runnable(T231* C,T0* a1){
T0* R=NULL;
T0* _wl=NULL;
T0* _te=NULL;
T0* _e=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*32*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_e=X104to_runnable((/*RF2*/(C)->_expression/*12*/),a1);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
(/*SFN*/C->_expression)=_e;
_te=X52run_type(X104result_type(_e));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(X52is_character(_te)){
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))!=((void*)(NULL))){
(/*SFN*/C->_when_list)=r233to_runnable_character((T233*)((/*RF2*/(C)->_when_list/*16*/)),(T0*)C);
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))==((void*)(NULL))){
r231error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms231_11424));
}
/*FI]*/
}
/*FI]*/
}
 else if(X52is_integer(_te)){
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))!=((void*)(NULL))){
(/*SFN*/C->_when_list)=r233to_runnable_integer((T233*)((/*RF2*/(C)->_when_list/*16*/)),(T0*)C);
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))==((void*)(NULL))){
r231error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms231_11424));
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms231_94240);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type(_te,((T0*)ms231_18080));
r66add_position((/*RF2*/(C)->_start_position/*4*/));
r66print_as_error((T66*)(oBC13eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_else_compound/*28*/))!=((void*)(NULL))){
(/*SFN*/C->_else_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_else_compound/*28*/)),a1);
}
/*FI]*/
R=((T0*)(C));
}
else{
R=r231twin(C);
{T233*n=((T233*)malloc(sizeof(*n))/*8*/);
*n=M233;
r233from_when_list(n,(/*RF2*/(C)->_when_list/*16*/));
_wl=((T0*)n);
}
/*[IRF3.3set_when_list*/((((T231*)(((T231*)R))))->_when_list)=(_wl);
/*]*/
/*[IRF3.3clear_current_type*/((((T231*)(((T231*)R))))->_current_type)=(NULL);
/*]*/
R=r231to_runnable(((T231*)R),a1);
}
/*FI]*/
return R;
}


T0* r231twin(T231* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T231*)R)=*C;
return R;
}


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


void r231make(T231* C,T68 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_expression)=a2;
}


void r231compile_to_c(T231* C){
T6 _debug_check=0;
T6 _no_check=0;
_no_check=r47no_check((T47*)(oBC13run_control));
_debug_check=r47debug_check((T47*)(oBC13run_control));
r325inspect_incr((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms231_2430));
/*]*/
r325put_inspect((T325*)(oBC13cpp));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if(_debug_check){
/*[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*/))));
}/*]*/
/*]*/
{T68 se_tmp0;
r325se_trace_exp((T325*)(oBC13cpp),(*(se_tmp0=X104start_position((/*RF2*/(C)->_expression/*12*/)),&se_tmp0)));
}
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X104compile_to_c((/*RF2*/(C)->_expression/*12*/));
/*[IF*/
if(_debug_check){
/*[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_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))==((void*)(NULL))){
/*[IF*/
if(r68is_unknown(&((/*RF2*/(C)->_else_position/*20*/)))){
/*[IF*/
if(_no_check){
r380incorrect_inspect_value((T380*)(oBC13exceptions_handler),(/*RF2*/(C)->_start_position/*4*/));
}
/*FI]*/
}
 else if(((/*RF2*/(C)->_else_compound/*28*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_else_compound/*28*/)));
}
/*FI]*/
}
else{
r233compile_to_c((T233*)((/*RF2*/(C)->_when_list/*16*/)),(/*RF2*/(C)->_else_position/*20*/));
/*[IF*/
if(r68is_unknown(&((/*RF2*/(C)->_else_position/*20*/)))){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_1700));
/*]*/
/*[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*/))));
}/*]*/
/*]*/
r380incorrect_inspect_value((T380*)(oBC13exceptions_handler),(/*RF2*/(C)->_start_position/*4*/));
/*[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*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if(((/*RF2*/(C)->_else_compound/*28*/))!=((void*)(NULL))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_1700));
/*]*/
/*[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*/))));
}/*]*/
/*]*/
r215compile_to_c((T215*)((/*RF2*/(C)->_else_compound/*28*/)));
/*[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*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
r325inspect_decr((T325*)(oBC13cpp));
}


T6 r231stupid_switch(T231* C,T0* a1){
T6 R=0;
R=((X104stupid_switch((/*RF2*/(C)->_expression/*12*/),a1))&&((((/*RF2*/(C)->_when_list/*16*/))==((void*)(NULL)))||(r233stupid_switch((T233*)((/*RF2*/(C)->_when_list/*16*/)),a1))))&&((((/*RF2*/(C)->_else_compound/*28*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_else_compound/*28*/)),a1)));
return R;
}


void r231add_when(T231* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_when_list/*16*/))==((void*)(NULL))){
{T233*n=((T233*)malloc(sizeof(*n))/*8*/);
*n=M233;
r233make(n,a1);
(/*SFN*/C->_when_list)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r234add_last(((T234*)((/*RF2*/((T233*)((/*RF2*/(C)->_when_list/*16*/)))->_list/*4*/))),a1);
/*]*/
}
/*FI]*/
}


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


void r50shared_attributes(T50* C,T0* a1){
T2 _i=0;
T0* _rf2=NULL;
_i=1;
while (!((_i)>((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))))
{
_rf2=r348item((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_i);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 345:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
_rf2=r50get_feature(((T50*)a1),(/*RF2*/(((T345*)_rf2))->_name/*12*/));
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 345:
break;
default:
_rf2=NULL;
}
}}
/*FI]*/
_i=(_i)+(1);
}
}
T0*oBC50tmp_string=NULL;


void r50c_header_pass1(T50* C){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
/*[IF*/
if(((/*RF2*/(C)->_c_header_pass_level_done/*35*/))<(1)){
X52c_header_pass1((/*RF2*/(C)->_current_type/*0*/));
(/*SFN*/C->_c_header_pass_level_done)=1;
}
/*FI]*/
}
/*FI]*/
}


void r50just_before_gc_mark_in(T50* C,T0* a1){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
X52just_before_gc_mark_in((/*RF2*/(C)->_current_type/*0*/),a1);
}
/*FI]*/
}


T0* r50at(T50* C,T0* a1){
T0* R=NULL;
T0* _to_key=NULL;
_to_key=X82to_key(a1);
/*[IF*/
if(r348has((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_to_key)){
R=r348at((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_to_key);
}
/*FI]*/
return R;
}


void r50c_header_pass3(T50* C){
T0* _attribute_type=NULL;
T2 _i=0;
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
/*[IF*/
if(((/*RF2*/(C)->_c_header_pass_level_done/*35*/))<(3)){
/*[IF*/
if((X52is_user_expanded((/*RF2*/(C)->_current_type/*0*/)))&&((r50writable_attributes(C))!=((void*)(NULL)))){
_i=(/*RF2*/((T346*)(r50writable_attributes(C)))->_upper/*12*/);
while (!((_i)==(0)))
{
_attribute_type=(/*RF2*/((T345*)(r346item((T346*)(r50writable_attributes(C)),_i)))->_result_type/*28*/);
/*[IF*/
if(X52is_expanded(_attribute_type)){
r50c_header_pass3((T50*)(X52run_class(_attribute_type)));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
X52c_header_pass3((/*RF2*/(C)->_current_type/*0*/));
(/*SFN*/C->_c_header_pass_level_done)=3;
}
/*FI]*/
}
/*FI]*/
}


T0* r50base_class(T50* C){
T0* R=NULL;
R=X52base_class((/*RF2*/(C)->_current_type/*0*/));
return R;
}


void r50afd_check(T50* C){
T0* _rt=NULL;
T0* _rc=NULL;
T2 _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))))
{
_rf=r348item((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_i);
X334afd_check(_rf);
_rt=X334result_type(_rf);
/*[IF*/
if((_rt)!=((void*)(NULL))){
/*[IF*/
if(X52is_none(_rt)){
}
else{
_rc=X52run_class(_rt);
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((/*RF2*/(C)->_class_invariant/*13*/))!=((void*)(NULL))){
r102afd_check((T102*)((/*RF2*/(C)->_class_invariant/*13*/)));
}
/*FI]*/
}


T6 r50gt(T0* a1,T0* a2){
T6 R=0;
T0* _bcn2=NULL;
T0* _bcn1=NULL;
T0* _bf2=NULL;
T0* _bf1=NULL;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bf1=(/*RF2*/(((T345*)a1))->_base_feature/*24*/);
_bf2=(/*RF2*/(((T345*)a2))->_base_feature/*24*/);
_bc1=/*SSWARF2*//*X90base_class*/(/*RF2*/(((T198*)_bf1))->_base_class/*4*/);
_bc2=/*SSWARF2*//*X90base_class*/(/*RF2*/(((T198*)_bf2))->_base_class/*4*/);
_bcn1=(/*RF2*/(((T51*)_bc1))->_name/*18*/);
_bcn2=(/*RF2*/(((T51*)_bc2))->_name/*18*/);
/*[IF*/
if(((/*RF2*/(((T61*)_bcn1))->_to_string/*8*/))==((void*)((/*RF2*/(((T61*)_bcn2))->_to_string/*8*/)))){
{T68 se_tmp1;
T68 se_tmp0;
R=r68before(&((*(se_tmp0=X90start_position(_bf1),&se_tmp0))),(*(se_tmp1=X90start_position(_bf2),&se_tmp1)));
}
}
 else if(r61is_subclass_of(((T61*)_bcn2),_bcn1)){
R=1;
}
 else if(r61is_subclass_of(((T61*)_bcn1),_bcn2)){
}
 else if(((/*RF2*/(((T51*)_bc1))->_parent_list/*34*/))==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(((T51*)_bc2))->_parent_list/*34*/))==((void*)(NULL))){
R=r7_px_60((T7*)((/*RF2*/(((T61*)_bcn1))->_to_string/*8*/)),(/*RF2*/(((T61*)_bcn2))->_to_string/*8*/));
}
else{
R=1;
}
/*FI]*/
}
 else if(((/*RF2*/(((T51*)_bc2))->_parent_list/*34*/))==((void*)(NULL))){
}
else{
R=(/*(IRF4.6count*/(/*RF2*/(((T59*)((/*RF2*/((T57*)((/*RF2*/(((T51*)_bc2))->_parent_list/*34*/)))->_list/*16*/))))->_upper/*8*/)/*)*/)<(/*(IRF4.6count*/(/*RF2*/(((T59*)((/*RF2*/((T57*)((/*RF2*/(((T51*)_bc1))->_parent_list/*34*/)))->_list/*16*/))))->_upper/*8*/)/*)*/);
}
/*FI]*/
return R;
}


void r50deep_twin_in(T50* C,T0* a1){
T0* _name=NULL;
T0* _t=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
/*[IF*/
if(X52is_reference((/*RF2*/(C)->_current_type/*0*/))){
r7append(((T7*)a1),((T0*)ms50_44832));
X52c_type_for_target_in((/*RF2*/(C)->_current_type/*0*/),a1);
r7extend(((T7*)a1),((T3)'\40'));
r344basic_allocation((T344*)(oBC13gc_handler),((T0*)ms50_990),a1,(T0*)C);
r7append(((T7*)a1),((T0*)ms50_65459));
}
else{
r7append(((T7*)a1),((T0*)ms50_118291));
X52c_type_for_target_in((/*RF2*/(C)->_current_type/*0*/),a1);
r7append(((T7*)a1),((T0*)ms50_5863));
}
/*FI]*/
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item(((T346*)_wa),_i);
_name=X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/));
_t=X52run_type((/*RF2*/(((T345*)_rf2))->_result_type/*28*/));
/*[IF*/
if(X52is_reference(_t)){
r7append(((T7*)a1),((T0*)ms50_11817));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_26370));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_12684));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_7137));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_6042));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_1225));
}
 else if(X52is_native_array(_t)){
/*[IF*/
if((r50get_feature_with(C,((T0*)ms15_11776)))==((void*)(NULL))){
r66add_type(_t,((T0*)ms14_4684050));
r66print_as_error((T66*)(oBC13eh));
{T68 se_tmp0;
r66add_position(/*(IRF4.6start_position*/(*(se_tmp0=r315start_position(((T315*)((/*RF2*/(((T345*)_rf2))->_base_feature/*24*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.6append*/{T0* b1=((T0*)ms50_227898);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_6042aa));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_350));
r2append_in(X52id(_t),a1);
r7append(((T7*)a1),((T0*)ms50_16635));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_1188));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_6042a));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_10782));
}
 else if(X52is_user_expanded(_t)){
r7append(((T7*)a1),((T0*)ms50_6042aaa));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_350a));
r2append_in(X52id(_t),a1);
r7append(((T7*)a1),((T0*)ms50_9090));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_1188a));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_9344));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_604));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if(X52is_user_expanded((/*RF2*/(C)->_current_type/*0*/))){
r7append(((T7*)a1),((T0*)ms50_20072));
}
/*FI]*/
r7extend(((T7*)a1),((T3)'\175'));
r7extend(((T7*)a1),((T3)'\n'));
}


T2 r50c_sizeof(T50* C){
T2 R=0;
T2 _i=0;
T0* _a=NULL;
T0* _wa=NULL;
/*[IF*/
if(r50is_tagged(C)){
R=sizeof(T2);
}
/*FI]*/
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_a=r346item(((T346*)_wa),_i);
R=(R)+(X52c_sizeof((/*RF2*/(((T345*)_a))->_result_type/*28*/)));
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if((R)==(0)){
R=1;
}
/*FI]*/
return R;
}


void r50really_compile_to_c(T50* C){
T0* _rf=NULL;
T2 _i=0;
(/*SFN*/C->_compile_to_c_done)=1;
r35put_character((T35*)(oBC13echo),((T3)'\11'));
r35put_string((T35*)(oBC13echo),X52run_time_mark((/*RF2*/(C)->_current_type/*0*/)));
r35put_character((T35*)(oBC13echo),((T3)'\n'));
_i=1;
while (!((_i)>((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))))
{
_rf=r348item((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_i);
X334c_define(_rf);
_i=(_i)+(1);
/*[IF*/
if(((_i)%(30))==(0)){
r325padding_here((T325*)(oBC13cpp));
}
/*FI]*/
}
/*[IF*/
if(r47invariant_check((T47*)(oBC13run_control))){
/*[IF*/
if(((/*RF2*/(C)->_class_invariant/*13*/))!=((void*)(NULL))){
r102c_define((T102*)((/*RF2*/(C)->_class_invariant/*13*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))>(20)){
r325padding_here((T325*)(oBC13cpp));
}
/*FI]*/
}


void r50c_print_function(T50* C){
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
T0* _t=NULL;
T0* _ct=NULL;
T0* _body=NULL;
_body=((T0*)ms50_17064);
_ct=(/*RF2*/(C)->_current_type/*0*/);
r7copy((T7*)(oBC50tmp_string),((T0*)ms50_20254));
r2append_in((/*RF2*/(C)->_id/*4*/),oBC50tmp_string);
r7append((T7*)(oBC50tmp_string),((T0*)ms50_248));
r2append_in((/*RF2*/(C)->_id/*4*/),oBC50tmp_string);
/*[IF*/
if(X52is_reference(_ct)){
r7extend((T7*)(oBC50tmp_string),((T3)'\52'));
}
/*FI]*/
r7append((T7*)(oBC50tmp_string),((T0*)ms50_582));
/*[IRF3.3clear*/((((T7*)(((T7*)_body))))->_count)=(0);
/*]*/
/*[IF*/
if(X52is_reference(_ct)){
r7append(((T7*)_body),((T0*)ms50_42240));
}
/*FI]*/
r7append(((T7*)_body),((T0*)ms50_17392a));
r7append(((T7*)_body),X52run_time_mark(_ct));
r7append(((T7*)_body),((T0*)ms50_576));
/*[IF*/
if((X52is_reference(_ct))||(X52is_native_array(_ct))){
r7append(((T7*)_body),((T0*)ms50_20878aa));
}
/*FI]*/
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
r7append(((T7*)_body),((T0*)ms50_20878a));
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item(((T346*)_wa),_i);
_t=(/*RF2*/(((T345*)_rf2))->_result_type/*28*/);
r7append(((T7*)_body),((T0*)ms50_17392));
r7append(((T7*)_body),X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/)));
r7append(((T7*)_body),((T0*)ms50_21900));
/*[IF*/
if(X52is_expanded(_t)){
r2append_in(X52id(_t),_body);
}
 else if(X52is_string(_t)){
r7extend(((T7*)_body),((T3)'7'));
}
else{
r7extend(((T7*)_body),((T3)'0'));
}
/*FI]*/
r7append(((T7*)_body),((T0*)ms50_15435));
/*[IF*/
if(X52is_reference(_ct)){
r7append(((T7*)_body),((T0*)ms50_214));
}
else{
r7extend(((T7*)_body),((T3)'\56'));
}
/*FI]*/
r7extend(((T7*)_body),((T3)'\137'));
r7append(((T7*)_body),X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/)));
r7append(((T7*)_body),((T0*)ms50_960));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7append(((T7*)_body),((T0*)ms50_20878));
}
/*FI]*/
}
r7append(((T7*)_body),((T0*)ms50_19825));
}
/*FI]*/
r325put_c_function((T325*)(oBC13cpp),oBC50tmp_string,_body);
}


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


void r50runnable_class_invariant(T50* C){
/*[IF*/
if(!((/*RF2*/(C)->_runnable_class_invariant_done/*34*/))){
(/*SFN*/C->_runnable_class_invariant_done)=1;
/*[IF*/
if(r47invariant_check((T47*)(oBC13run_control))){
/*[IF*/
if(((/*RF2*/(C)->_at_run_time/*8*/))||((/*RF2*/((T49*)(oBC13small_eiffel))->_short_flag/*5*/))){
r383invariant_start((T383*)(oBC13assertion_collector));
r51collect_invariant((T51*)(r50base_class(C)),(T0*)C);
(/*SFN*/C->_class_invariant)=r383invariant_end((T383*)(oBC13assertion_collector),(/*RF2*/(C)->_current_type/*0*/));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r50demangling(T50* C){
T2 _i=0;
T0* _r=NULL;
T0* _str=NULL;
_str=((T0*)ms50_146556);
/*[IRF3.3clear*/((((T7*)(((T7*)_str))))->_count)=(0);
/*]*/
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
r7extend(((T7*)_str),((T3)'A'));
/*[IF*/
if((X52is_reference((/*RF2*/(C)->_current_type/*0*/)))&&(!(r50is_tagged(C)))){
r7extend(((T7*)_str),((T3)'\52'));
}
else{
r7extend(((T7*)_str),((T3)'\40'));
}
/*FI]*/
}
else{
r7extend(((T7*)_str),((T3)'D'));
r7extend(((T7*)_str),((T3)'\40'));
}
/*FI]*/
_r=(/*RF2*/(C)->_running/*9*/);
/*[IF*/
if((_r)!=((void*)(NULL))){
r2append_in(r53count(((T53*)_r)),_str);
}
/*FI]*/
while (!(((/*RF2*/(((T7*)_str))->_count/*4*/))>(4)))
{
r7extend(((T7*)_str),((T3)'\40'));
}
r7extend(((T7*)_str),((T3)'T'));
r2append_in((/*RF2*/(C)->_id/*4*/),_str);
while (!(((/*RF2*/(((T7*)_str))->_count/*4*/))>(10)))
{
r7extend(((T7*)_str),((T3)'\40'));
}
X52demangling_in((/*RF2*/(C)->_current_type/*0*/),_str);
/*[IF*/
if((_r)!=((void*)(NULL))){
r7extend(((T7*)_str),((T3)'\40'));
_i=(/*RF2*/(((T53*)_r))->_upper/*8*/);
while (!((_i)==(0)))
{
r2append_in((/*RF2*/((T50*)(r53item(((T53*)_r),_i)))->_id/*4*/),_str);
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)_str),((T3)'\54'));
}
/*FI]*/
}
}
/*FI]*/
r7extend(((T7*)_str),((T3)'\n'));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_str);
/*]*/
}


void r50store_feature(T50* C,T0* a1){
T0* _rf_key=NULL;
_rf_key=X82to_key(/*SSWARF2*//*X334name*/(/*RF2*/(((T368*)a1))->_name/*12*/));
/*[IF*/
if(r348has((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_rf_key)){
}
else{
r348put((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),a1,_rf_key);
r49incr_magic_count((T49*)(oBC13small_eiffel));
}
/*FI]*/
}


void r50make(T50* C,T0* a1){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
T0* _run_string=NULL;
(/*SFN*/C->_compile_to_c_done)=1;
(/*SFN*/C->_current_type)=a1;
{T56*n=((T56*)malloc(sizeof(*n))/*12*/);
*n=M56;
r56with_capacity(n,16);
(/*SFN*/C->_actuals_clients)=((T0*)n);
}
_run_string=X52run_time_mark(a1);
(/*SFN*/C->_id)=r39item((T39*)(r50id_provider()),_run_string);
r55put((T55*)(oBC49run_class_dictionary),(T0*)C,_run_string);
{T348*n=((T348*)malloc(sizeof(*n))/*40*/);
*n=M348;
/*[IRF3.4make*/r348with_capacity(n,32);
/*]*/
(/*SFN*/C->_feature_dictionary)=((T0*)n);
}
r49incr_magic_count((T49*)(oBC13small_eiffel));
/*[IF*/
if(X52is_expanded(a1)){
r50set_at_run_time(C);
r51check_expanded_with((T51*)(X52base_class(a1)),a1);
}
else{
_rcd=oBC49run_class_dictionary;
_i=1;
while (!((_i)>((/*RF2*/(((T55*)_rcd))->_count/*36*/))))
{
_rc=r55item(((T55*)_rcd),_i);
/*[IF*/
if((((/*RF2*/(((T50*)_rc))->_at_run_time/*8*/))&&(X52is_reference((/*RF2*/(((T50*)_rc))->_current_type/*0*/))))&&(r50is_running_of(((T50*)_rc),(T0*)C))){
r50add_running(C,_rc);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r50c_object_model_in(T50* C,T0* a1){
T0* _t=NULL;
T0* _rf2=NULL;
T2 _i=0;
T0* _wa=NULL;
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)==((void*)(NULL))){
/*[IF*/
if(r50is_tagged(C)){
r7extend(((T7*)a1),((T3)'\173'));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7extend(((T7*)a1),((T3)'\175'));
}
else{
X52c_initialize_in((/*RF2*/(C)->_current_type/*0*/),a1);
}
/*FI]*/
}
else{
r7extend(((T7*)a1),((T3)'\173'));
/*[IF*/
if(r50is_tagged(C)){
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7extend(((T7*)a1),((T3)'\54'));
}
/*FI]*/
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item(((T346*)_wa),_i);
_t=(/*RF2*/(((T345*)_rf2))->_result_type/*28*/);
X52c_initialize_in(_t,a1);
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)a1),((T3)'\54'));
}
/*FI]*/
}
r7extend(((T7*)a1),((T3)'\175'));
}
/*FI]*/
}


void r50efnf(T50* C,T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms50_16400);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((/*RF2*/(C)->_current_type/*0*/));
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms50_23562);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X82to_string(a2);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms50_6980);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T61*)((/*RF2*/(((T51*)a1))->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
{T68 se_tmp0;
r50error((*(se_tmp0=X82start_position(a2),&se_tmp0)),((T0*)ms14_46));
}
}


T0* r50get_default_rescue(T50* C,T0* a1){
T0* R=NULL;
T0* _call_to_default_rescue=NULL;
T0* _target=NULL;
T0* _a_rescue=NULL;
_a_rescue=r51get_default_rescue((T51*)(r50base_class(C)),(T0*)C,a1);
/*[IF*/
if((_a_rescue)!=((void*)(NULL))){
{T68 se_tmp0;
{T184*n=((T184*)malloc(sizeof(*n))/*16*/);
*n=M184;
/*[IRF3.3make*/((((T184*)(n)))->_start_position)=((*(se_tmp0=X82start_position(a1),&se_tmp0)));
/*]*/
_target=((T0*)n);
}
}
{T153*n=((T153*)malloc(sizeof(*n))/*16*/);
*n=M153;
r153make(n,_target,(/*RF2*/(((T368*)_a_rescue))->_name/*12*/));
_call_to_default_rescue=((T0*)n);
}
{T215*n=((T215*)malloc(sizeof(*n))/*16*/);
*n=M215;
r215make(n,NULL,_call_to_default_rescue,NULL);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r50writable_attributes(T50* C){
T0* R=NULL;
T2 _i=0;
T0* _rf2=NULL;
/*[IF*/
if(((/*RF2*/(C)->_writable_attributes_mem/*30*/))==((void*)(NULL))){
_i=1;
while (!((_i)>((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))))
{
_rf2=r348item((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_i);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 345:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_writable_attributes_mem/*30*/))==((void*)(NULL))){
{T346*n=((T346*)malloc(sizeof(*n))/*20*/);
*n=M346;
r346with_capacity(n,4,1);
(/*SFN*/C->_writable_attributes_mem)=((T0*)n);
}
}
/*FI]*/
r346add_last((T346*)((/*RF2*/(C)->_writable_attributes_mem/*30*/)),_rf2);
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((/*RF2*/(C)->_writable_attributes_mem/*30*/))!=((void*)(NULL))){
r50sort_wam((/*RF2*/(C)->_writable_attributes_mem/*30*/));
}
/*FI]*/
}
/*FI]*/
R=(/*RF2*/(C)->_writable_attributes_mem/*30*/);
return R;
}


T6 r50is_running_of(T50* C,T0* a1){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((a1)==((void*)(C))){
R=1;
}
else{
_t1=(/*RF2*/(C)->_current_type/*0*/);
_t2=(/*RF2*/(((T50*)a1))->_current_type/*0*/);
/*[IF*/
if((X52is_basic_eiffel_expanded(_t1))&&(X52is_basic_eiffel_expanded(_t2))){
}
else{
R=X52is_a(_t1,_t2);
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r50gc_set_fsoh_marked_in(T50* C,T0* a1){
/*[IF*/
if(X52is_reference((/*RF2*/(C)->_current_type/*0*/))){
r7append(((T7*)a1),((T0*)ms50_1128));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7append(((T7*)a1),((T0*)ms50_18290));
}
/*FI]*/
}


T0* r50dynamic(T50* C,T0* a1){
T0* R=NULL;
T0* _up_type=NULL;
T0* _up_fn=NULL;
T0* _fn=NULL;
_up_type=/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)a1))->_current_type/*8*/);
/*[IF*/
if((C)==((void*)(X52run_class(_up_type)))){
R=a1;
}
else{
_up_fn=/*SSWARF2*//*X334name*/(/*RF2*/(((T368*)a1))->_name/*12*/);
_fn=r51new_name_of((T51*)(r50base_class(C)),X52base_class(_up_type),_up_fn);
R=r50get_or_fatal_error(C,_fn);
}
/*FI]*/
return R;
}


void r50add_rf(T50* C,T0* a1,T0* a2){
r348put((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),a1,a2);
}


T6 r50is_tagged(T50* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_tagged_mem/*22*/))==(0)){
/*[IF*/
if(X52is_expanded((/*RF2*/(C)->_current_type/*0*/))){
(/*SFN*/C->_tagged_mem)=-(1);
}
 else if((/*RF2*/(C)->_at_run_time/*8*/)){
/*[IF*/
if(r47boost((T47*)(oBC13run_control))){
/*[IF*/
if(r49is_tagged((T0*)C)){
(/*SFN*/C->_tagged_mem)=1;
}
else{
(/*SFN*/C->_tagged_mem)=-(1);
}
/*FI]*/
}
else{
(/*SFN*/C->_tagged_mem)=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=((/*RF2*/(C)->_tagged_mem/*22*/))==(1);
return R;
}


void r50falling_down(T50* C){
T2 _i=0;
T0* _rf=NULL;
_i=1;
while (!((_i)>((/*RF2*/((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)))->_count/*36*/))))
{
_rf=r348item((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_i);
X334fall_down(_rf);
_i=(_i)+(1);
}
r344falling_down((T344*)(oBC13gc_handler),(T0*)C);
r50runnable_class_invariant(C);
/*[IF*/
if((/*RF2*/((T47*)(oBC13run_control))->_deep_twin_used/*11*/)){
/*[IF*/
if(X52is_native_array((/*RF2*/(C)->_current_type/*0*/))){
_rf=r50get_feature_with(C,((T0*)ms15_28490));
}
else{
_rf=r50get_feature_with(C,((T0*)ms15_13491));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*RF2*/((T47*)(oBC13run_control))->_is_deep_equal_used/*12*/)){
/*[IF*/
if(X52is_native_array((/*RF2*/(C)->_current_type/*0*/))){
_rf=r50get_feature_with(C,((T0*)ms15_19151));
}
else{
_rf=r50get_feature_with(C,((T0*)ms15_15890));
_rf=r50get_feature_with(C,((T0*)ms15_24960));
}
/*FI]*/
}
/*FI]*/
}


void r50mark_attribute(T50* C,T0* a1,T0* a2){
r7copy((T7*)(oBC50tmp_string),((T0*)ms50_1252));
r7append((T7*)(oBC50tmp_string),X82to_string((/*RF2*/(((T345*)a2))->_name/*12*/)));
r7append((T7*)(oBC50tmp_string),((T0*)ms14_178a));
r2append_in(r50offset_of(C,a2),oBC50tmp_string);
r7append((T7*)(oBC50tmp_string),((T0*)ms14_178));
r344mark_for(a1,oBC50tmp_string,X52run_class((/*RF2*/(((T345*)a2))->_result_type/*28*/)));
}


void r50c_header_pass2(T50* C){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
/*[IF*/
if(((/*RF2*/(C)->_c_header_pass_level_done/*35*/))<(2)){
X52c_header_pass2((/*RF2*/(C)->_current_type/*0*/));
(/*SFN*/C->_c_header_pass_level_done)=2;
}
/*FI]*/
}
/*FI]*/
}
T0*oBC13class_general=NULL;
int fBC13class_general=0;


T0* r50class_general(void){
if(fBC13class_general==0){fBC13class_general=1;{
oBC13class_general=r49get_class(((T0*)ms15_6307));
}}
return oBC13class_general;
}


void r50c_header_pass4(T50* C){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
/*[IF*/
if(((/*RF2*/(C)->_c_header_pass_level_done/*35*/))<(4)){
X52c_header_pass4((/*RF2*/(C)->_current_type/*0*/));
(/*SFN*/C->_c_header_pass_level_done)=4;
}
/*FI]*/
}
/*FI]*/
}


T0* r50get_feature(T50* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _fn_key=NULL;
T0* _f=NULL;
_fn_key=X82to_key(a1);
/*[IF*/
if(r348has((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_fn_key)){
R=r348at((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_fn_key);
}
else{
_bc=r50base_class(C);
_f=r51look_up_for(((T51*)_bc),(T0*)C,a1);
/*[IF*/
if((_f)==((void*)(NULL))){
r50efnf(C,_bc,a1);
}
else{
R=X90to_run_feature(_f,(/*RF2*/(C)->_current_type/*0*/),a1);
/*[IF*/
if((R)!=((void*)(NULL))){
r50store_feature(C,R);
}
else{
r50efnf(C,_bc,a1);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r50sort_wam(T0* a1){
T6 _moved=0;
T2 _buble=0;
T2 _max=0;
T2 _min=0;
_max=(/*RF2*/(((T346*)a1))->_upper/*12*/);
_min=1;
_moved=1;
while (!(!(_moved)))
{
_moved=0;
/*[IF*/
if(((_max)-(_min))>(0)){
_buble=(_min)+(1);
while (!((_buble)>(_max)))
{
/*[IF*/
if(r50gt(r346item(((T346*)a1),(_buble)-(1)),r346item(((T346*)a1),_buble))){
r346swap(((T346*)a1),(_buble)-(1),_buble);
_moved=1;
}
/*FI]*/
_buble=(_buble)+(1);
}
_max=(_max)-(1);
}
/*FI]*/
/*[IF*/
if((_moved)&&(((_max)-(_min))>(0))){
_moved=0;
_buble=(_max)-(1);
while (!((_buble)<(_min)))
{
/*[IF*/
if(r50gt(r346item(((T346*)a1),_buble),r346item(((T346*)a1),(_buble)+(1)))){
r346swap(((T346*)a1),_buble,(_buble)+(1));
_moved=1;
}
/*FI]*/
_buble=(_buble)-(1);
}
_min=(_min)+(1);
}
/*FI]*/
}
}


void r50set_at_run_time(T50* C){
T2 _i=0;
T0* _rc=NULL;
T0* _rcd=NULL;
/*[IF*/
if(!((/*RF2*/(C)->_at_run_time/*8*/))){
(/*SFN*/C->_at_run_time)=1;
(/*SFN*/C->_compile_to_c_done)=0;
r50add_running(C,(T0*)C);
r49incr_magic_count((T49*)(oBC13small_eiffel));
/*[IF*/
if(X52is_reference((/*RF2*/(C)->_current_type/*0*/))){
_rcd=oBC49run_class_dictionary;
_i=1;
while (!((_i)>((/*RF2*/(((T55*)_rcd))->_count/*36*/))))
{
_rc=r55item(((T55*)_rcd),_i);
/*[IF*/
if(r50is_running_of(C,_rc)){
r50add_running(((T50*)_rc),(T0*)C);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*FI]*/
}


void r50id_extra_information(T50* C,T0* a1){
T0* _ct=NULL;
T2 _i=0;
T0* _r=NULL;
_ct=(/*RF2*/(C)->_current_type/*0*/);
r48put_string(((T48*)a1),((T0*)ms50_11241));
r48put_integer(((T48*)a1),(/*RF2*/(C)->_id/*4*/));
/*[IRF3.6put_character*/{T48* C1=((T48*)a1);
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
X52id_extra_information(_ct,a1);
/*[IF*/
if(X52is_reference(_ct)){
r48put_string(((T48*)a1),((T0*)ms50_10332));
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
r48put_string(((T48*)a1),((T0*)ms50_14160));
/*[IF*/
if((X52is_reference(_ct))&&(!(r50is_tagged(C)))){
r48put_string(((T48*)a1),((T0*)ms50_759));
}
else{
r48put_string(((T48*)a1),((T0*)ms50_1476));
}
/*FI]*/
}
else{
r48put_string(((T48*)a1),((T0*)ms50_2150));
}
/*FI]*/
r48put_string(((T48*)a1),((T0*)ms50_15540));
_r=(/*RF2*/(C)->_running/*9*/);
/*[IF*/
if((_r)!=((void*)(NULL))){
r48put_integer(((T48*)a1),r53count(((T53*)_r)));
}
else{
/*[IRF3.6put_character*/{T48* C1=((T48*)a1);
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
}
/*FI]*/
/*[IRF3.6put_character*/{T48* C1=((T48*)a1);
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*[IF*/
if((_r)!=((void*)(NULL))){
r48put_string(((T48*)a1),((T0*)ms50_7596));
_i=(/*RF2*/(((T53*)_r))->_upper/*8*/);
while (!((_i)==(0)))
{
r48put_integer(((T48*)a1),(/*RF2*/((T50*)(r53item(((T53*)_r),_i)))->_id/*4*/));
/*[IRF3.6put_character*/{T48* C1=((T48*)a1);
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}
/*FI]*/
}


void r50gc_define1(T50* C){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
X52gc_define1((/*RF2*/(C)->_current_type/*0*/));
}
/*FI]*/
}
T0*oBC50wa_buf=NULL;


T0* r50get_memory_dispose(T50* C){
T0* R=NULL;
T0* _bc=NULL;
T0* _memory=NULL;
_memory=r49memory_class_used();
/*[IF*/
if((_memory)!=((void*)(NULL))){
_bc=r50base_class(C);
/*[IF*/
if(((_memory)!=((void*)(_bc)))&&(r51is_subclass_of(((T51*)_bc),_memory))){
/*[IF*/
if(r51has_simple_feature_name(((T51*)_bc),((T0*)ms15_8750))){
R=r50get_feature_with(C,((T0*)ms15_8750));
if(NULL!=(R)){
switch(((T0*)R)->id){
case 368:
break;
default:
R=NULL;
}
}/*[IF*/
if((R)!=((void*)(NULL))){
R=r368memory_dispose(((T368*)R));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r50gc_mark_fixed_size(T50* C,T6 a1,T0* a2){
T2 _i=0;
T0* _rc=NULL;
T0* _t=NULL;
T0* _rf2=NULL;
/*[IRF3.3clear*/((((T391*)((T391*)(oBC50wa_buf))))->_upper)=(-(1));
/*]*/
/*[IRF3.3clear*/((((T391*)((T391*)(oBC50wa_cyclic_buf))))->_upper)=(-(1));
/*]*/
/*[IF*/
if((r50writable_attributes(C))!=((void*)(NULL))){
_i=(/*RF2*/((T346*)(r50writable_attributes(C)))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item((T346*)(r50writable_attributes(C)),_i);
_t=(/*RF2*/(((T345*)_rf2))->_result_type/*28*/);
/*[IF*/
if(X52need_gc_mark_function(_t)){
_rc=X52run_class(_t);
/*[IRF3.3clear*/((((T391*)((T391*)(oBC50wa_cycle))))->_upper)=(-(1));
/*]*/
r391add_last((T391*)(oBC50wa_cycle),_rf2);
/*[IF*/
if(r50is_wa_cycle(((T50*)_rc),(T0*)C)){
r391add_last((T391*)(oBC50wa_cyclic_buf),_rf2);
}
else{
r391add_last((T391*)(oBC50wa_buf),_rf2);
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.6is_empty*/((/*RF2*/((T391*)(oBC50wa_buf))->_upper/*12*/))<(0)/*)*/)&&(/*(IRF4.6is_empty*/((/*RF2*/((T391*)(oBC50wa_cyclic_buf))->_upper/*12*/))<(0)/*)*/)){
r50gc_set_fsoh_marked_in(C,a2);
}
else{
/*[IF*/
if(((/*RF2*/((T391*)(oBC50wa_cyclic_buf))->_upper/*12*/))>=(0)){
r7append(((T7*)a2),((T0*)ms50_4109));
}
/*FI]*/
/*[IF*/
if(!(a1)){
r7append(((T7*)a2),((T0*)ms50_7140));
r2append_in((/*RF2*/(C)->_id/*4*/),a2);
r7append(((T7*)a2),((T0*)ms50_22050));
}
/*FI]*/
r50gc_set_fsoh_marked_in(C,a2);
_i=(/*RF2*/((T391*)(oBC50wa_buf))->_upper/*12*/);
while (!((_i)<(0)))
{
_rf2=/*(IRF4.6item*/((/*RF2*/((T391*)(oBC50wa_buf))->_storage/*4*/))[_i]/*)*/;
r50mark_attribute(C,a2,_rf2);
_i=(_i)-(1);
}
_i=(/*RF2*/((T391*)(oBC50wa_cyclic_buf))->_upper/*12*/);
while (!((_i)<(0)))
{
_rf2=/*(IRF4.6item*/((/*RF2*/((T391*)(oBC50wa_cyclic_buf))->_storage/*4*/))[_i]/*)*/;
_t=(/*RF2*/(((T345*)_rf2))->_result_type/*28*/);
_rc=X52run_class(_t);
/*[IRF3.3clear*/((((T391*)((T391*)(oBC50wa_cycle))))->_upper)=(-(1));
/*]*/
r391add_last((T391*)(oBC50wa_cycle),_rf2);
/*[IF*/
if(r50is_wa_cycle(((T50*)_rc),(T0*)C)){
}
/*FI]*/
/*[IF*/
if((((((_i)==(0))&&((/*(IRF4.6count*/((/*RF2*/((T391*)(oBC50wa_cycle))->_upper/*12*/))+(1)/*)*/)==(1)))&&(((/*RF2*/(((T50*)_rc))->_running/*9*/))!=((void*)(NULL))))&&((r53count((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/))))==(1)))&&((/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/)==((void*)(C)))){
r7append(((T7*)a2),((T0*)ms50_21788));
r7append(((T7*)a2),X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/)));
r7append(((T7*)a2),((T0*)ms50_12460));
/*[IF*/
if(a1){
r7append(((T7*)a2),((T0*)ms50_6223));
r2append_in((/*RF2*/(C)->_id/*4*/),a2);
r7append(((T7*)a2),((T0*)ms50_56916));
}
else{
r7extend(((T7*)a2),((T3)'\51'));
}
/*FI]*/
r7append(((T7*)a2),((T0*)ms50_7116));
}
else{
r50mark_attribute(C,a2,_rf2);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(!(a1)){
r7extend(((T7*)a2),((T3)'\175'));
}
/*FI]*/
}
/*FI]*/
}


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


T6 r50gc_mark_to_follow(T50* C){
T6 R=0;
T0* _rc=NULL;
T0* _r=NULL;
T2 _i=0;
_r=(/*RF2*/(C)->_running/*9*/);
/*[IF*/
if((_r)!=((void*)(NULL))){
_i=(/*RF2*/(((T53*)_r))->_upper/*8*/);
while (!((R)||((_i)==(0))))
{
_rc=r53item(((T53*)_r),_i);
/*[IF*/
if((_rc)==((void*)(C))){
R=r50need_gc_mark(C);
}
else{
R=X52need_gc_mark_function((/*RF2*/(((T50*)_rc))->_current_type/*0*/));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r50is_deep_equal_in(T50* C,T0* a1){
T0* _name=NULL;
T0* _t=NULL;
T0* _ct=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
_ct=(/*RF2*/(C)->_current_type/*0*/);
r7append(((T7*)a1),((T0*)ms50_17066));
/*[IF*/
if(X52is_reference(_ct)){
r7append(((T7*)a1),((T0*)ms50_22620));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_3536));
X52c_type_for_target_in(_ct,a1);
r7append(((T7*)a1),((T0*)ms50_2375));
/*[IF*/
if(X52is_reference(_ct)){
r7append(((T7*)a1),((T0*)ms50_7072));
}
else{
r7append(((T7*)a1),((T0*)ms50_9184));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_1305));
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item(((T346*)_wa),_i);
_name=X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/));
_t=X52run_type((/*RF2*/(((T345*)_rf2))->_result_type/*28*/));
/*[IF*/
if(X52is_basic_eiffel_expanded(_t)){
r7append(((T7*)a1),((T0*)ms50_20865));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_14828));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_604a));
}
/*FI]*/
_i=(_i)-(1);
}
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r346item(((T346*)_wa),_i);
_name=X82to_string((/*RF2*/(((T345*)_rf2))->_name/*12*/));
_t=X52run_type((/*RF2*/(((T345*)_rf2))->_result_type/*28*/));
/*[IF*/
if(X52is_reference(_t)){
r7append(((T7*)a1),((T0*)ms50_10256));
r2append_in(X52id(_ct),a1);
r7append(((T7*)a1),((T0*)ms50_10439));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_1188aa));
/*[IF*/
if(X52is_reference(_ct)){
r7append(((T7*)a1),((T0*)ms50_222));
}
/*FI]*/
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_1076));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_9744));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_330));
}
 else if(X52is_native_array(_t)){
/*[IF*/
if((r50get_feature_with(C,((T0*)ms15_11776)))==((void*)(NULL))){
r66add_type(_t,((T0*)ms14_4684050));
r66print_as_error((T66*)(oBC13eh));
{T68 se_tmp0;
r66add_position(/*(IRF4.6start_position*/(*(se_tmp0=r315start_position(((T315*)((/*RF2*/(((T345*)_rf2))->_base_feature/*24*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.6append*/{T0* b1=((T0*)ms50_227898);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_10256a));
r2append_in(X52id(_t),a1);
r7append(((T7*)a1),((T0*)ms50_11868));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_1188aaa));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_1076a));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_9744a));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_7568));
}
 else if(X52is_user_expanded(_t)){
r7append(((T7*)a1),((T0*)ms50_10256aa));
r2append_in(X52id(_t),a1);
r7append(((T7*)a1),((T0*)ms50_15064));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7append(((T7*)a1),((T0*)ms50_1188aaaa));
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_4932));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_11178));
r7append(((T7*)a1),_name);
r7append(((T7*)a1),((T0*)ms50_330a));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
r7append(((T7*)a1),((T0*)ms50_17400));
}


T0* r50get_result_type(T50* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _f=NULL;
T0* _fn2_key=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
{T68 se_tmp0;
_wbc=(/*RF2*/((*(se_tmp0=X82start_position(a1),&se_tmp0)))._base_class/*0*/);
}
_fn2=r51new_name_of((T51*)(r50base_class(C)),_wbc,a1);
_fn2_key=X82to_key(_fn2);
/*[IF*/
if(r348has((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_fn2_key)){
_rf=r348at((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),_fn2_key);
R=X334result_type(_rf);
/*[IF*/
if(X52is_run_type(R)){
R=X52run_type(R);
}
else{
R=X52to_runnable(R,(/*RF2*/(C)->_current_type/*0*/));
R=X52run_type(R);
}
/*FI]*/
}
else{
_bc=r50base_class(C);
_f=r51look_up_for(((T51*)_bc),(T0*)C,_fn2);
/*[IF*/
if((_f)==((void*)(NULL))){
r50efnf(C,_bc,_fn2);
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn2),&se_tmp0)));
}
r50fatal_error(((T0*)ms50_22284));
}
else{
R=X90result_type(_f);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X90start_position(_f),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(_fn2),&se_tmp0)));
}
r50fatal_error(((T0*)ms50_50576));
}
else{
R=X52to_runnable(R,(/*RF2*/(C)->_current_type/*0*/));
R=X52run_type(R);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r50get_or_fatal_error(T50* C,T0* a1){
T0* R=NULL;
R=r50get_feature(C,a1);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms50_6056);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X82to_string(a1);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms50_61446);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type((/*RF2*/(C)->_current_type/*0*/),((T0*)ms14_46));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}
T0*oBC50wa_cyclic_buf=NULL;


T0* r50get_copy(T50* C){
T0* R=NULL;
R=r50get_rf_with(C,/*SSFRF4*//*X90first_name*//*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T198*)(r51get_copy((T51*)(r50class_general()))))->_names/*8*/))))->_first/*0*/)/*)*/);
return R;
}


void r50gc_align_mark_fixed_size(T50* C,T0* a1){
r7append(((T7*)a1),((T0*)ms14_404));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7append(((T7*)a1),((T0*)ms50_6818));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7append(((T7*)a1),((T0*)ms50_930620));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7append(((T7*)a1),((T0*)ms50_2813102));
r2append_in((/*RF2*/(C)->_id/*4*/),a1);
r7append(((T7*)a1),((T0*)ms50_9158));
r50gc_mark_fixed_size(C,1,a1);
r7append(((T7*)a1),((T0*)ms50_1080));
}


T0* r50get_feature_with(T50* C,T0* a1){
T0* R=NULL;
T0* _sfn=NULL;
/*[IF*/
if(r348has((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),a1)){
R=r348at((T348*)((/*RF2*/(C)->_feature_dictionary/*18*/)),a1);
}
else{
{T138*n=((T138*)malloc(sizeof(*n))/*20*/);
*n=M138;
/*[IRF3.3unknown_position*/((((T138*)(n)))->_to_string)=(a1);
/*]*/
_sfn=((T0*)n);
}
R=r50get_feature(C,_sfn);
}
/*FI]*/
return R;
}


void r50compile_to_c(T50* C,T2 a1){
T2 _cc2=0;
T2 _cc1=0;
T0* _rc2=NULL;
T0* _rc1=NULL;
T2 _i=0;
/*[IF*/
if((/*RF2*/(C)->_compile_to_c_done/*17*/)){
}
 else if(!((/*RF2*/(C)->_at_run_time/*8*/))){
(/*SFN*/C->_compile_to_c_done)=1;
}
 else if((a1)==(0)){
r50really_compile_to_c(C);
}
else{
_i=(/*RF2*/((T56*)((/*RF2*/(C)->_actuals_clients/*26*/)))->_upper/*8*/);
/*[IF*/
if((_i)>=(0)){
_rc1=((T0*)(C));
_cc1=(_i)+(1);
while (!((_i)==(0)))
{
_rc2=/*(IRF4.6item*/((/*RF2*/((T56*)((/*RF2*/(C)->_actuals_clients/*26*/)))->_storage/*0*/))[_i]/*)*/;
/*[IF*/
if(!((/*RF2*/(((T50*)_rc2))->_compile_to_c_done/*17*/))){
_cc2=/*(IRF4.6count*/((/*RF2*/((T56*)((/*RF2*/(((T50*)_rc2))->_actuals_clients/*26*/)))->_upper/*8*/))+(1)/*)*/;
/*[IF*/
if((_cc2)>(_cc1)){
_rc1=_rc2;
_cc1=_cc2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_rc1)==((void*)(C))){
r50really_compile_to_c(C);
}
else{
r50compile_to_c(((T50*)_rc1),(a1)-(1));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
T0*oBC50wa_cycle=NULL;


T0* r50get_rf_with(T50* C,T0* a1){
T0* R=NULL;
T0* _wbc=NULL;
T0* _fn2=NULL;
{T68 se_tmp0;
_wbc=(/*RF2*/((*(se_tmp0=X82start_position(a1),&se_tmp0)))._base_class/*0*/);
}
_fn2=r51new_name_of((T51*)(r50base_class(C)),_wbc,a1);
/*[IF*/
if((_fn2)!=((void*)(a1))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position(a1),&se_tmp0)));
}
R=r50get_or_fatal_error(C,_fn2);
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
R=r50get_or_fatal_error(C,_fn2);
}
/*FI]*/
return R;
}


T0* r50base_class_name(T50* C){
T0* R=NULL;
R=X52base_class_name((/*RF2*/(C)->_current_type/*0*/));
return R;
}


void r50add_running(T50* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_running/*9*/))==((void*)(NULL))){
{T53*n=((T53*)malloc(sizeof(*n))/*16*/);
*n=M53;
r53with_capacity(n,8,1);
(/*SFN*/C->_running)=((T0*)n);
}
r53add_last((T53*)((/*RF2*/(C)->_running/*9*/)),a1);
}
else{
/*[IF*/
if(!(r53fast_has((T53*)((/*RF2*/(C)->_running/*9*/)),a1))){
r53add_last((T53*)((/*RF2*/(C)->_running/*9*/)),a1);
}
/*FI]*/
}
/*FI]*/
}


T2 r50offset_of(T50* C,T0* a1){
T2 R=0;
T2 _i=0;
T0* _t=NULL;
T0* _wa=NULL;
/*[IF*/
if(r50is_tagged(C)){
R=sizeof(T2);
}
/*FI]*/
_wa=r50writable_attributes(C);
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((r346item(((T346*)_wa),_i))==((void*)(a1))))
{
_t=(/*RF2*/((T345*)(r346item(((T346*)_wa),_i)))->_result_type/*28*/);
R=(R)+(X52c_sizeof(_t));
_i=(_i)-(1);
}
return R;
}


T6 r50need_gc_mark(T50* C){
T6 R=0;
T0* _t=NULL;
T0* _rf2=NULL;
T0* _wa=NULL;
T2 _i=0;
_wa=r50writable_attributes(C);
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T346*)_wa))->_upper/*12*/);
while (!((R)||((_i)==(0))))
{
_rf2=r346item(((T346*)_wa),_i);
_t=(/*RF2*/(((T345*)_rf2))->_result_type/*28*/);
R=X52need_gc_mark_function(_t);
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r50gc_info_in(T50* C,T0* a1){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
X52gc_info_in((/*RF2*/(C)->_current_type/*0*/),a1);
}
/*FI]*/
}


void r50gc_define2(T50* C){
/*[IF*/
if((/*RF2*/(C)->_at_run_time/*8*/)){
X52gc_define2((/*RF2*/(C)->_current_type/*0*/));
}
/*FI]*/
}


T0* r50id_provider(void){
if(fBC13id_provider==0){fBC13id_provider=1;{
{T39*n=((T39*)malloc(sizeof(*n))/*4*/);
*n=M39;
oBC13id_provider=((T0*)n);
r39make(n);
}
}}
return oBC13id_provider;
}


void r50add_client(T50* C,T0* a1){
T2 _i=0;
_i=r56fast_index_of((T56*)((/*RF2*/(C)->_actuals_clients/*26*/)),a1);
/*[IF*/
if((_i)>((/*RF2*/((T56*)((/*RF2*/(C)->_actuals_clients/*26*/)))->_upper/*8*/))){
r56add_last((T56*)((/*RF2*/(C)->_actuals_clients/*26*/)),a1);
}
/*FI]*/
}


T0* r233to_runnable_integer(T233* C,T0* a1){
T0* R=NULL;
T0* _e_when=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_e_inspect/*0*/))==((void*)(NULL))){
(/*SFN*/C->_e_inspect)=a1;
_i=1;
while (!(((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e_when=r232to_runnable_integer((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)),(T0*)C);
/*[IF*/
if((_e_when)==((void*)(NULL))){
{T68 se_tmp0;
r233error((*(se_tmp0=r233start_position(C),&se_tmp0)),((T0*)ms233_14812));
}
}
else{
/*[IRF3.6put*/{T234* C1=(T234*)((/*RF2*/(C)->_list/*4*/));
T0* b1=_e_when;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
R=((T0*)(C));
}
else{
{T233*n=((T233*)malloc(sizeof(*n))/*8*/);
*n=M233;
r233from_when_list(n,(T0*)C);
R=((T0*)n);
}
R=r233to_runnable_integer(((T233*)R),a1);
}
/*FI]*/
return R;
}


void r233make(T233* C,T0* a1){
{T234*n=((T234*)malloc(sizeof(*n))/*16*/);
*n=M234;
r234with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
r234add_last((T234*)((/*RF2*/(C)->_list/*4*/)),a1);
}


void r233from_when_list(T233* C,T0* a1){
T0* _e_when=NULL;
T2 _i=0;
(/*SFN*/C->_list)=r234twin((T234*)((/*RF2*/(((T233*)a1))->_list/*4*/)));
_i=1;
while (!((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
{T232*n=((T232*)malloc(sizeof(*n))/*28*/);
*n=M232;
r232from_e_when(n,r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i));
_e_when=((T0*)n);
}
/*[IRF3.6put*/{T234* C1=(T234*)((/*RF2*/(C)->_list/*4*/));
T0* b1=_e_when;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
_i=(_i)+(1);
}
}


void r233compile_to_c(T233* C,T68 a1){
T0* _last_compound=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*4*/))!=((void*)(NULL))){
_i=1;
while (!((_i)==((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
r232compile_to_c((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)));
_i=(_i)+(1);
/*[IF*/
if((_i)<((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_1700));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*[IF*/
if((_i)>(1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_1700));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IF*/
if((r68is_unknown(&a1))&&(r47boost((T47*)(oBC13run_control)))){
/*[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*/))));
}/*]*/
/*]*/
_last_compound=(/*RF2*/((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)))->_compound/*16*/);
/*[IF*/
if((_last_compound)!=((void*)(NULL))){
r215compile_to_c(((T215*)_last_compound));
}
/*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*/))));
}/*]*/
/*]*/
}
else{
r232compile_to_c((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)));
}
/*FI]*/
}
/*FI]*/
}


void r233afd_check(T233* C){
T2 _i=0;
_i=(/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/);
while (!((_i)==(0)))
{
r232afd_check((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)));
_i=(_i)-(1);
}
}


T6 r233use_current(T233* C){
T6 R=0;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*4*/))!=((void*)(NULL))){
_i=1;
while (!(((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))||(R)))
{
R=r232use_current((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)));
_i=(_i)+(1);
}
}
/*FI]*/
return R;
}


T6 r233stupid_switch(T233* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
/*[IF*/
if(((/*RF2*/(C)->_list/*4*/))!=((void*)(NULL))){
_i=1;
while (!((!(R))||((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))))
{
R=r232stupid_switch((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)),a1);
_i=(_i)+(1);
}
}
/*FI]*/
return R;
}


T0* r233to_runnable_character(T233* C,T0* a1){
T0* R=NULL;
T0* _e_when=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_e_inspect/*0*/))==((void*)(NULL))){
(/*SFN*/C->_e_inspect)=a1;
_i=1;
while (!(((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e_when=r232to_runnable_character((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)),(T0*)C);
/*[IF*/
if((_e_when)==((void*)(NULL))){
{T68 se_tmp0;
r233error((*(se_tmp0=r233start_position(C),&se_tmp0)),((T0*)ms233_14812));
}
}
else{
/*[IRF3.6put*/{T234* C1=(T234*)((/*RF2*/(C)->_list/*4*/));
T0* b1=_e_when;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
R=((T0*)(C));
}
else{
{T233*n=((T233*)malloc(sizeof(*n))/*8*/);
*n=M233;
r233from_when_list(n,(T0*)C);
R=((T0*)n);
}
R=r233to_runnable_character(((T233*)R),a1);
}
/*FI]*/
return R;
}


T6 r233includes_integer(T233* C,T2 a1){
T6 R=0;
T2 _i=0;
_i=1;
while (!((R)||((_i)>((/*RF2*/((T234*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))))
{
R=r232includes_integer((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),_i)),a1);
_i=(_i)+(1);
}
return R;
}


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


T68 r233start_position(T233* C){
T68 R={NULL,0};
R=(/*RF2*/((T232*)(r234item((T234*)((/*RF2*/(C)->_list/*4*/)),1)))->_start_position/*0*/);
return R;
}


void r191compile_to_c_old(T191* 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]*/
}


T0* r191runnable_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)));
}
r191fatal_error(((T0*)ms116_16290));
}
/*FI]*/
return R;
}


void r191run_feature_has_result(T191* 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*/));
r191fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


void r191run_feature_match(T191* C,T0* a1){
r191run_feature_has_result(C);
X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r191add_comment(T191* 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 r191with(T191* 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;
r191run_feature_match(C,a5);
}


void r191mapping_c_target(T191* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r191result_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*/))));
}/*]*/
/*]*/
r191compile_to_c(C);
/*[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{
r191compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
r191compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r191compile_to_c(C);
/*[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{
r191compile_to_c(C);
}
/*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 r191afd_check(T191* 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 r191c_declare_for_old(T191* 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 r191collect_c_tmp(T191* 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* r191operator(void){
T0* R=NULL;
R=((T0*)ms15_246);
return R;
}


T6 r191use_current(T191* 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* r191runnable_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)));
}
r191fatal_error(((T0*)ms14_12870));
}
/*FI]*/
return R;
}


T0* r191to_runnable(T191* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r191runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r191runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X104result_type(_t);
_argument_type=X104result_type(r191arg1(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=r191run_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;
r191run_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{
{T191*n=((T191*)malloc(sizeof(*n))/*24*/);
*n=M191;
r191with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


T6 r191is_static(T191* C){
T6 R=0;
/*[IF*/
if(X52is_integer(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X104is_static((/*RF2*/(C)->_target/*4*/)))&&(X104is_static(r191arg1(C)))){
R=1;
/*[IF*/
if((X104static_value((/*RF2*/(C)->_target/*4*/)))>=(X104static_value(r191arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r191finalize(T191* 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 r191error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r191result_type(T191* 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(r191arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


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


T6 r191call_proc_call_stupid_switch(T191* 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* r191run_feature_for(T191* 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* r191static_result_base_class(T191* 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 r191make(T191* C,T0* a1,T68 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T129*n=((T129*)malloc(sizeof(*n))/*20*/);
*n=M129;
r129make(n,r191operator(),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 r191fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r191assertion_check(T191* 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(r191arg1(C),a1);
}


void r191compile_to_c(T191* C){
/*[IF*/
if((r47boost((T47*)(oBC13run_control)))&&(X52is_character(X52run_type(X104result_type((/*RF2*/(C)->_target/*4*/)))))){
r191c2c_cast_op(C,((T0*)ms14_10800),((T0*)ms15_246));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T191* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r191stupid_switch(T191* C,T0* a1){
T6 R=0;
R=r191call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r191result_type(C)));
}
/*FI]*/
return R;
}


void r191c2c_cast_op(T191* C,T0* a1,T0* a2){
/*[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_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_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_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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_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*/))));
}/*]*/
/*]*/
X104compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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_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*/))),a2);
/*]*/
/*[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_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_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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_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*/))));
}/*]*/
/*]*/
X104compile_to_c(r191arg1(C));
/*[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_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_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*/))));
}/*]*/
/*]*/
}


void r190compile_to_c_old(T190* 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]*/
}


T0* r190runnable_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)));
}
r190fatal_error(((T0*)ms116_16290));
}
/*FI]*/
return R;
}


void r190run_feature_has_result(T190* 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*/));
r190fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


void r190run_feature_match(T190* C,T0* a1){
r190run_feature_has_result(C);
X139match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r190add_comment(T190* 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 r190with(T190* 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;
r190run_feature_match(C,a5);
}


void r190mapping_c_target(T190* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r190result_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*/))));
}/*]*/
/*]*/
r190compile_to_c(C);
/*[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{
r190compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
r190compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r190compile_to_c(C);
/*[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{
r190compile_to_c(C);
}
/*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 r190afd_check(T190* 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 r190c_declare_for_old(T190* 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 r190collect_c_tmp(T190* 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* r190operator(void){
T0* R=NULL;
R=((T0*)ms15_242);
return R;
}


T6 r190use_current(T190* 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* r190runnable_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)));
}
r190fatal_error(((T0*)ms14_12870));
}
/*FI]*/
return R;
}


T0* r190to_runnable(T190* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r190runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r190runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X104result_type(_t);
_argument_type=X104result_type(r190arg1(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=r190run_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;
r190run_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{
{T190*n=((T190*)malloc(sizeof(*n))/*24*/);
*n=M190;
r190with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


T6 r190is_static(T190* C){
T6 R=0;
/*[IF*/
if(X52is_integer(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X104is_static((/*RF2*/(C)->_target/*4*/)))&&(X104is_static(r190arg1(C)))){
R=1;
/*[IF*/
if((X104static_value((/*RF2*/(C)->_target/*4*/)))<=(X104static_value(r190arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r190finalize(T190* 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 r190error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r190result_type(T190* 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(r190arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


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


T6 r190call_proc_call_stupid_switch(T190* 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* r190run_feature_for(T190* 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* r190static_result_base_class(T190* 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 r190make(T190* C,T0* a1,T68 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T129*n=((T129*)malloc(sizeof(*n))/*20*/);
*n=M129;
r129make(n,r190operator(),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 r190fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}


void r190assertion_check(T190* 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(r190arg1(C),a1);
}


void r190compile_to_c(T190* C){
/*[IF*/
if((r47boost((T47*)(oBC13run_control)))&&(X52is_character(X52run_type(X104result_type((/*RF2*/(C)->_target/*4*/)))))){
r190c2c_cast_op(C,((T0*)ms14_10800),((T0*)ms15_242));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T190* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r190stupid_switch(T190* C,T0* a1){
T6 R=0;
R=r190call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r190result_type(C)));
}
/*FI]*/
return R;
}


void r190c2c_cast_op(T190* C,T0* a1,T0* a2){
/*[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_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_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_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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_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*/))));
}/*]*/
/*]*/
X104compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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_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*/))),a2);
/*]*/
/*[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_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_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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_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*/))));
}/*]*/
/*]*/
X104compile_to_c(r190arg1(C));
/*[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_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_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*/))));
}/*]*/
/*]*/
}


T0* r240to_runnable_integer(T240* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
_v=X104to_runnable((/*RF2*/(C)->_lower/*12*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X52is_integer(X104result_type(_v)))){
(/*SFN*/C->_lower)=_v;
(/*SFN*/C->_lower_value)=X104to_integer((/*RF2*/(C)->_lower/*12*/));
}
else{
{T68 se_tmp0;
r240error((*(se_tmp0=X104start_position((/*RF2*/(C)->_lower/*12*/)),&se_tmp0)),((T0*)ms14_21528));
}
}
/*FI]*/
_v=X104to_runnable((/*RF2*/(C)->_upper/*8*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X52is_integer(X104result_type(_v)))){
(/*SFN*/C->_upper)=_v;
(/*SFN*/C->_upper_value)=X104to_integer((/*RF2*/(C)->_upper/*8*/));
}
else{
{T68 se_tmp0;
r240error((*(se_tmp0=X104start_position((/*RF2*/(C)->_upper/*8*/)),&se_tmp0)),((T0*)ms14_21528));
}
}
/*FI]*/
r232add_when_item_2((T232*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
R=((T0*)(C));
}
else{
{T240*n=((T240*)malloc(sizeof(*n))/*24*/);
*n=M240;
r240make(n,(/*RF2*/(C)->_lower/*12*/),(/*RF2*/(C)->_upper/*8*/));
R=((T0*)n);
}
R=r240to_runnable_integer(((T240*)R),a1);
}
/*FI]*/
return R;
}


void r240make(T240* C,T0* a1,T0* a2){
(/*SFN*/C->_lower)=a1;
(/*SFN*/C->_upper)=a2;
}


T0* r240to_runnable_character(T240* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)(r49top_rf((T49*)(oBC13small_eiffel))))->_current_type/*8*/);
_v=X104to_runnable((/*RF2*/(C)->_lower/*12*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X52is_character(X104result_type(_v)))){
(/*SFN*/C->_lower)=_v;
(/*SFN*/C->_lower_value)=X104to_integer((/*RF2*/(C)->_lower/*12*/));
}
else{
{T68 se_tmp0;
r240error((*(se_tmp0=X104start_position((/*RF2*/(C)->_lower/*12*/)),&se_tmp0)),((T0*)ms14_25640));
}
}
/*FI]*/
_v=X104to_runnable((/*RF2*/(C)->_upper/*8*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X52is_character(X104result_type(_v)))){
(/*SFN*/C->_upper)=_v;
(/*SFN*/C->_upper_value)=X104to_integer((/*RF2*/(C)->_upper/*8*/));
}
else{
{T68 se_tmp0;
r240error((*(se_tmp0=X104start_position((/*RF2*/(C)->_upper/*8*/)),&se_tmp0)),((T0*)ms14_25640));
}
}
/*FI]*/
r232add_when_item_2((T232*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
R=((T0*)(C));
}
else{
{T240*n=((T240*)malloc(sizeof(*n))/*24*/);
*n=M240;
r240make(n,(/*RF2*/(C)->_lower/*12*/),(/*RF2*/(C)->_upper/*8*/));
R=((T0*)n);
}
R=r240to_runnable_character(((T240*)R),a1);
}
/*FI]*/
return R;
}


T0* r240twin(T240* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T240*)R)=*C;
return R;
}


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


T68 r240start_position(T240* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X104start_position((/*RF2*/(C)->_lower/*12*/)),&se_tmp0));
}
return R;
}


T0* r150add_comment(T150* 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* r150to_runnable(T150* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_rc=X52run_class(a1);
_bc=X52base_class(a1);
/*[IF*/
if(r51has(((T51*)_bc),(/*RF2*/(C)->_feature_name/*4*/))){
(/*SFN*/C->_run_feature)=r50get_rf_with(((T50*)_rc),(/*RF2*/(C)->_feature_name/*4*/));
r369register_for((T0*)C);
}
else{
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*4*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms14_554698);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
R=((T0*)(C));
}
else{
{T150*n=((T150*)malloc(sizeof(*n))/*16*/);
*n=M150;
/*[IRF3.3make*/((((T150*)(n)))->_feature_name)=((/*RF2*/(C)->_feature_name/*4*/));
/*]*/
R=((T0*)n);
}
R=r150to_runnable(((T150*)R),a1);
}
/*FI]*/
return R;
}


T2 r150to_integer(T150* C){
T2 R=0;
{T68 se_tmp0;
r150error((*(se_tmp0=r150start_position(C),&se_tmp0)),((T0*)ms14_45441));
}
return R;
}


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


T0* r150type_pointer(void){
if(fBC13type_pointer==0){fBC13type_pointer=1;{
T68 _unknown_position={NULL,0};
{T269*n=((T269*)malloc(sizeof(*n))/*8*/);
*n=M269;
oBC13type_pointer=((T0*)n);
r269make(n,_unknown_position);
}
}}
return oBC13type_pointer;
}


T0* r150static_result_base_class(void){
T0* R=NULL;
R=r49get_class(((T0*)ms15_6776));
return R;
}


void r150compile_to_c(T150* C){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms150_9711));
/*]*/
X334address_of_c_mapping((/*RF2*/(C)->_run_feature/*8*/));
/*[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*/))));
}/*]*/
/*]*/
}


T68 r150start_position(T150* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*4*/)),&se_tmp0));
}
return R;
}


void r40disconnect(T40* C){
fclose((/*RF2*/(C)->_input_stream/*5*/));
(/*SFN*/C->_path)=NULL;
}


void r40read_line_in(T40* C,T0* a1){
T8 _stream=NULL;
T2 _mem=0;
_stream=(/*RF2*/(C)->_input_stream/*5*/);
/*[IF*/
if((/*RF2*/(C)->_push_back_flag/*0*/)){
(/*SFN*/C->_push_back_flag)=0;
_mem=(/*RF2*/(C)->_memory/*9*/);
}
else{
_mem=getc((FILE*)(_stream));
}
/*FI]*/
while (!((((_mem)==((EOF)))||((_mem)==(T3code(((T3)'\n')))))||((_mem)==(T3code(((T3)'\15'))))))
{
r7extend(((T7*)a1),((T3)(_mem)));
_mem=getc((FILE*)(_stream));
}
/*[IF*/
if((_mem)==(T3code(((T3)'\15')))){
_mem=getc((FILE*)(_stream));
/*[IF*/
if((_mem)!=(T3code(((T3)'\n')))){
(/*SFN*/C->_push_back_flag)=1;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_memory)=_mem;
}


T6 r40same_as(T40* C,T0* a1){
T6 R=0;
T2 _c2=0;
T2 _c1=0;
T8 _is2=NULL;
T8 _is1=NULL;
_is1=(/*RF2*/(C)->_input_stream/*5*/);
_is2=(/*RF2*/(((T40*)a1))->_input_stream/*5*/);
while (!(((_c1)!=(_c2))||((_c1)==((EOF)))))
{
_c1=getc((FILE*)(_is1));
_c2=getc((FILE*)(_is2));
}
R=(_c1)==(_c2);
r40disconnect(C);
r40disconnect(((T40*)a1));
return R;
}


T6 r40end_of_input(T40* C){
T6 R=0;
/*[IF*/
if(!((/*RF2*/(C)->_push_back_flag/*0*/))){
R=((/*RF2*/(C)->_memory/*9*/))==((EOF));
}
/*FI]*/
return R;
}
T0*oBC41last_string=NULL;


void r40read_character(T40* C){
/*[IF*/
if((/*RF2*/(C)->_push_back_flag/*0*/)){
(/*SFN*/C->_push_back_flag)=0;
}
else{
(/*SFN*/C->_memory)=getc((FILE*)((/*RF2*/(C)->_input_stream/*5*/)));
}
/*FI]*/
}


void r40read_line(T40* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC41last_string))))->_count)=(0);
/*]*/
r40read_line_in(C,oBC41last_string);
}


void r40read_word(T40* C){
r40skip_separators(C);
/*[IF*/
if(!(r40end_of_input(C))){
r40read_character(C);
}
/*FI]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC41last_string))))->_count)=(0);
/*]*/
while (!((r40end_of_input(C))||(r3is_separator(/*(IRF4.6last_character*/((T3)((/*RF2*/(C)->_memory/*9*/)))/*)*/))))
{
r7extend((T7*)(oBC41last_string),/*(IRF4.6last_character*/((T3)((/*RF2*/(C)->_memory/*9*/)))/*)*/);
r40read_character(C);
}
}


void r40connect_to(T40* C,T0* a1){
T8 _p=NULL;
_p=r7to_external(((T7*)a1));
(/*SFN*/C->_input_stream)=fopen((char*)_p,"r");
/*[IF*/
if((NULL!=(/*RF2*/(C)->_input_stream/*5*/))){
(/*SFN*/C->_push_back_flag)=0;
(/*SFN*/C->_memory)=T3code(((T3)'\40'));
(/*SFN*/C->_path)=a1;
}
/*FI]*/
}


void r40skip_separators(T40* C){
while (!((r40end_of_input(C))||(!(r3is_separator(/*(IRF4.6last_character*/((T3)((/*RF2*/(C)->_memory/*9*/)))/*)*/)))))
{
r40read_character(C);
}
/*[IF*/
if((!(r40end_of_input(C)))&&(!((/*RF2*/(C)->_push_back_flag/*0*/)))){
/*[IRF3.3unread_character*/((((T40*)(C)))->_push_back_flag)=(1);
/*]*/
}
/*FI]*/
}


void r311make(T311* C,T0* a1,T0* a2){
T2 _i=0;
(/*SFN*/C->_name_list)=a1;
_i=/*SSWARF2*//*X312upper*/(/*RF2*/((T176*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/);
while (!((_i)==(0)))
{
X175set_result_type(X312item((/*RF2*/(C)->_name_list/*4*/),_i),a2);
_i=(_i)-(1);
}
}


void r311append_in(T311* C,T0* a1){
T2 _i=0;
_i=/*SSWARF2*//*X312lower*/(/*RF2*/((T176*)((/*RF2*/(C)->_name_list/*4*/)))->_lower/*16*/);
while (!((_i)>(/*SSWARF2*//*X312upper*/(/*RF2*/((T176*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/))))
{
X170add_last(a1,X312item((/*RF2*/(C)->_name_list/*4*/),_i));
_i=(_i)+(1);
}
}


T2 r311count(T311* C){
T2 R=0;
R=/*SSWARF2*//*X312upper*/(/*RF2*/((T176*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/);
return R;
}


T0* r163add_comment(T163* 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* r163to_runnable(T163* C,T0* a1){
T0* R=NULL;
T0* _ic=NULL;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*16*/))==((void*)(NULL))){
{T165*n=((T165*)malloc(sizeof(*n))/*16*/);
*n=M165;
r165make(n,(/*RF2*/((T7*)((/*RF2*/(C)->_value/*12*/)))->_count/*4*/),(/*RF2*/(C)->_start_position/*4*/));
_ic=((T0*)n);
}
{T275*n=((T275*)malloc(sizeof(*n))/*20*/);
*n=M275;
r275make(n,(/*RF2*/(C)->_start_position/*4*/),_ic);
(/*SFN*/C->_result_type)=((T0*)n);
}
(/*SFN*/C->_result_type)=r275to_runnable((T275*)((/*RF2*/(C)->_result_type/*16*/)),a1);
r50set_at_run_time((T50*)(r275run_class((T275*)((/*RF2*/(C)->_result_type/*16*/)))));
(/*SFN*/C->_hexa)=r7twin((T7*)((/*RF2*/(C)->_value/*12*/)));
r7to_hexadecimal((T7*)((/*RF2*/(C)->_hexa/*20*/)));
}
/*FI]*/
R=((T0*)(C));
return R;
}


T2 r163to_integer(T163* C){
T2 R=0;
r163error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms14_45441));
return R;
}


void r163c_define(T163* C){
T2 _digit_nb=0;
T2 _k=0;
T2 _i=0;
_digit_nb=(sizeof(T2))*(2);
_k=((/*RF2*/((T7*)((/*RF2*/(C)->_hexa/*20*/)))->_count/*4*/))%(_digit_nb);
_i=1;
/*[IF*/
if((_k)>(0)){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_336));
/*]*/
while (!((_k)==(0)))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_hexa/*20*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_i=(_i)+(1);
_k=(_k)-(1);
}
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
while (!((_i)>((/*RF2*/((T7*)((/*RF2*/(C)->_hexa/*20*/)))->_count/*4*/))))
{
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_336));
/*]*/
_k=_digit_nb;
while (!((_k)==(0)))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_hexa/*20*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_i=(_i)+(1);
_k=(_k)-(1);
}
/*[IF*/
if((_i)<=((/*RF2*/((T7*)((/*RF2*/(C)->_hexa/*20*/)))->_count/*4*/))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
}


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


T0* r163static_result_base_class(void){
T0* R=NULL;
R=r49get_class(((T0*)ms15_1980));
return R;
}


void r163make(T163* C,T68 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_value)=a2;
}


void r163compile_to_c(T163* C){
/*[IF*/
if(r275is_c_unsigned_ptr((T275*)((/*RF2*/(C)->_result_type/*16*/)))){
r325register_bit_constant((T325*)(oBC13cpp),(T0*)C);
}
else{
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_336));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),(/*RF2*/(C)->_hexa/*20*/));
/*]*/
}
/*FI]*/
}


T0* r221add_comment(T221* 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 r221compile_to_c(T221* C){
T2 _static_value=0;
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms221_3224));
/*]*/
_static_value=r226compile_to_c((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)));
{int z1=_static_value;

if((2==z1)){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms221_2345));
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_else_compound/*16*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_else_compound/*16*/)));
}
/*FI]*/
}
 else 
if((1==z1)){
}
 else {/*[IF*/
if(((/*RF2*/(C)->_else_compound/*16*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_1700));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_266));
/*]*/
r215compile_to_c((T215*)((/*RF2*/(C)->_else_compound/*16*/)));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
}
/*FI]*/
}}
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms221_3240));
/*]*/
}


void r221afd_check(T221* C){
r226afd_check((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)));
/*[IF*/
if(((/*RF2*/(C)->_else_compound/*16*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_else_compound/*16*/)));
}
/*FI]*/
}


T6 r221use_current(T221* C){
T6 R=0;
/*[IF*/
if(r226use_current((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)))){
R=1;
}
 else if(((/*RF2*/(C)->_else_compound/*16*/))!=((void*)(NULL))){
R=r215use_current((T215*)((/*RF2*/(C)->_else_compound/*16*/)));
}
/*FI]*/
return R;
}


T6 r221stupid_switch(T221* C,T0* a1){
T6 R=0;
R=(r226stupid_switch((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)),a1))&&((((/*RF2*/(C)->_else_compound/*16*/))==((void*)(NULL)))||(r215stupid_switch((T215*)((/*RF2*/(C)->_else_compound/*16*/)),a1)));
return R;
}


void r221add_if_then(T221* C,T0* a1,T0* a2){
T0* _ifthen=NULL;
{T225*n=((T225*)malloc(sizeof(*n))/*12*/);
*n=M225;
r225make(n,a1,a2);
_ifthen=((T0*)n);
}
/*[IF*/
if(((/*RF2*/(C)->_ifthenlist/*12*/))==((void*)(NULL))){
{T226*n=((T226*)malloc(sizeof(*n))/*8*/);
*n=M226;
r226make(n,_ifthen);
(/*SFN*/C->_ifthenlist)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r227add_last(((T227*)((/*RF2*/((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)))->_list/*0*/))),_ifthen);
/*]*/
}
/*FI]*/
}


T0* r221to_runnable(T221* C,T0* a1){
T0* R=NULL;
T0* _ec=NULL;
T0* _itl=NULL;
T2 _ne=0;
_ne=/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_itl=r226to_runnable((T226*)((/*RF2*/(C)->_ifthenlist/*12*/)),a1);
/*[IF*/
if((_itl)==((void*)(NULL))){
}
else{
(/*SFN*/C->_ifthenlist)=_itl;
}
/*FI]*/
/*[IF*/
if((((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)-(_ne))==(0))&&(((/*RF2*/(C)->_else_compound/*16*/))!=((void*)(NULL)))){
_ec=r215to_runnable((T215*)((/*RF2*/(C)->_else_compound/*16*/)),a1);
/*[IF*/
if((_ec)==((void*)(NULL))){
}
else{
(/*SFN*/C->_else_compound)=_ec;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_itl)!=((void*)(NULL))){
R=((T0*)(C));
}
/*FI]*/
}
else{
R=r221twin(C);
/*[IRF3.3clear_current_type*/((((T221*)(((T221*)R))))->_current_type)=(NULL);
/*]*/
R=r221to_runnable(((T221*)R),a1);
}
/*FI]*/
return R;
}


T0* r221twin(T221* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T221*)R)=*C;
return R;
}


void r249make(T249* C,T68 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_type)=a2;
(/*SFN*/C->_writable)=a3;
}


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

