/*
ANSI C code generated by SmallEiffel The GNU Eiffel Compiler
Release -0.76 (Saturday 11th november 2000)
Copyright (C), 1994-2000 - LORIA - UHP - CRIN - INRIA - FRANCE
Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
http://SmallEiffel.loria.fr
*/
#ifdef __cplusplus
}
#endif
#include "compile_to_c.h"
#ifdef __cplusplus
extern "C" {
#endif


T0* r382to_run_feature(T382* C,T0* a1,T0* a2){
T0* R=NULL;
{T501*n=((T501*)se_malloc(sizeof(*n))/*48*/);
*n=M501;
r501make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
return R;
}


void r382set_header_comment(T382* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)>(1))){
(/*SFN*/C->_end_comment)=a1;
}
/*FI]*/
}


T6 r382is_not_mergeable_with(T382* C,T0* a1){
T6 R=0;
/*[IF*/
{/*AT*/R=(X99result_type(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1393094289);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
else{
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
R=(X99arguments(a1))!=((void*)(NULL));
}
else{
R=(X99arguments(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1854646737);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
 else if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
}
 else if((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))/*)*/)!=(/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)(X99arguments(a1)))->_flat_list/*8*/))))/*)*/)){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1060258809);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
R=1;
}
/*FI]*/
}
/*FI]*/
r382merge_header_comments(C,a1);
return R;
}


T104 r382start_position(T382* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position(/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


void r382set_rescue_compound(T382* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r159start_position(((T159*)a1)),&se_tmp0)));
}
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=r382start_position(C),&se_tmp0)));
}
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms381_1166590709);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


T2 r403count(T403* C){
T2 R=0;
R=/*SSWARF2*//*X404upper*/(/*RF2*/((T272*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/);
return R;
}


void r403make(T403* C,T0* a1,T0* a2){
T2 _i=0;
(/*SFN*/C->_name_list)=a1;
_i=/*SSWARF2*//*X404upper*/(/*RF2*/((T272*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/);
while (!((_i)==(0)))
{
X127set_result_type(X404item((/*RF2*/(C)->_name_list/*4*/),_i),a2);
_i=(_i)-(1);
}
}


void r403append_in(T403* C,T0* a1){
T2 _i=0;
_i=/*SSWARF2*//*X404lower*/(/*RF2*/((T272*)((/*RF2*/(C)->_name_list/*4*/)))->_lower/*16*/);
while (!((_i)>(/*SSWARF2*//*X404upper*/(/*RF2*/((T272*)((/*RF2*/(C)->_name_list/*4*/)))->_upper/*12*/))))
{
X122add_last(a1,X404item((/*RF2*/(C)->_name_list/*4*/),_i));
_i=(_i)+(1);
}
}


T0* r307try_to_undefine_aux(T307* C,T0* a1,T0* a2){
T0* R=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=r307start_position(C),&se_tmp0)));
}
{T104 se_tmp0;
r307error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms142_1389744524));
}
r61fatal_undefine(((T61*)a2),a1);
return R;
}


void r307error(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}


T6 r307can_hide(T307* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X99result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X99result_type(a1))==((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r307error((*(se_tmp0=r307start_position(C),&se_tmp0)),((T0*)ms99_1393094289));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X99arguments(a1)))){
/*[IF*/
{/*AT*/{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r307error((*(se_tmp0=r307start_position(C),&se_tmp0)),((T0*)ms99_1854646737));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((/*RF2*/(C)->_result_type/*20*/),X99result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_895448585);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((/*RF2*/(((T60*)a2))->_current_type/*0*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r307merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r307merge_header_comments(T307* C,T0* a1){
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=/*SSWARF2*//*X99header_comment*/(/*RF2*/(((T293*)a1))->_header_comment/*12*/);
}
 else if((/*SSWARF2*//*X99header_comment*/(/*RF2*/(((T293*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X99set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
}
/*FI]*/
}
/*FI]*/
}


void r307add_into(T307* C,T0* a1){
T0* _key=NULL;
T0* _fn=NULL;
T2 _i=0;
{T104 se_tmp0;
(/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X117start_position(r118item((T118*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
}
_i=1;
while (!((_i)>(r118count((T118*)((/*RF2*/(C)->_names/*8*/))))))
{
_fn=r118item((T118*)((/*RF2*/(C)->_names/*8*/)),_i);
_key=X117to_key(_fn);
/*[IF*/
if(r172has(((T172*)a1),_key)){
_fn=/*SSFRF4*//*X99first_name*//*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T293*)(r172at(((T172*)a1),_key)))->_names/*8*/))))->_first/*0*/)/*)*/;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(r118item((T118*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1087076085);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(_fn);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
else{
r172add(((T172*)a1),(T0*)C,_key);
}
/*FI]*/
_i=(_i)+(1);
}
}


T0* r307try_to_undefine(T307* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
_fn2=r118feature_name((T118*)((/*RF2*/(C)->_names/*8*/)),X117to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X117undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r307try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X381set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r307merge_header_comments(C,R);
}
else{
r61fatal_undefine(((T61*)a2),a1);
}
/*FI]*/
return R;
}


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


void r307check_obsolete(T307* C,T104 a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r307to_run_feature(T307* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
R=r60at(((T60*)_rc),a2);
if(NULL!=(R)){
switch(((T0*)R)->id){
case 437:
break;
default:
R=NULL;
}
}/*[IF*/
if((R)==((void*)(NULL))){
{T437*n=((T437*)se_malloc(sizeof(*n))/*40*/);
*n=M437;
r437make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r307is_not_mergeable_with(T307* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
R=(X99result_type(a1))!=((void*)(NULL));
}
else{
R=(X99result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1393094289);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
else{
/*[IF*/
{/*AT*/R=(X99arguments(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1854646737);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
 else {/*AT*/}
/*FI]*/
}
/*FI]*/
r307merge_header_comments(C,a1);
return R;
}


T104 r307start_position(T307* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position(/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


void r164warning(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}


void r164good_end(T164* C,T0* a1){
/*[IF*/
if(!(r7has_string((T7*)(r52item((T52*)((/*RF2*/(C)->_list/*8*/)),1)),(/*RF2*/(((T77*)a1))->_to_string/*8*/)))){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T77*)a1))->_start_position/*0*/));
}
{T104 se_tmp0;
r164warning((/*RF2*/(C)->_start_position/*0*/),((T0*)ms164_1240817101));
}
}
/*FI]*/
}


void r164append(T164* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((/*RF2*/((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/)))->_upper/*12*/))))
{
/*[IRF3.5add_last*/r52add_last(((T52*)((/*RF2*/(C)->_list/*8*/))),r52item((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/)),_i));
/*]*/
_i=(_i)+(1);
}
}


void r164make(T164* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
{T52*n=((T52*)se_malloc(sizeof(*n))/*20*/);
*n=M52;
r52with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
r52add_last((T52*)((/*RF2*/(C)->_list/*8*/)),a2);
}


void r276error(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
T0*oBC276vaol_check_memory=NULL;
T0*oBC276tmp_string=NULL;


T0* r276local_c_name(T276* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_local_c_name_memory/*12*/))==((void*)(NULL))){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC276tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC276tmp_string),((T3)'o'));
{T104 se_tmp0;
r2append_in((/*RF2*/((T61*)((/*RF2*/((*(se_tmp0=r276start_position(C),&se_tmp0)))._base_class/*0*/)))->_id/*0*/),oBC276tmp_string);
}
r7extend((T7*)(oBC276tmp_string),((T3)'\137'));
{T104 se_tmp0;
r2append_in(r104line(&((*(se_tmp0=r276start_position(C),&se_tmp0)))),oBC276tmp_string);
}
r7extend((T7*)(oBC276tmp_string),((T3)'\137'));
{T104 se_tmp0;
r2append_in(r104column(&((*(se_tmp0=r276start_position(C),&se_tmp0)))),oBC276tmp_string);
}
(/*SFN*/C->_local_c_name_memory)=r7twin((T7*)(oBC276tmp_string));
}
/*FI]*/
R=(/*RF2*/(C)->_local_c_name_memory/*12*/);
return R;
}


void r276to_integer_error(T276* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r276start_position(C),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}


void r276assertion_check(T276* C,T3 a1){
/*[IF*/
if(((/*RF2*/((T516*)(oBC276vaol_check_memory))->_item/*0*/))==((void*)(NULL))){
/*[IRF3.3set_item*/((((T516*)((T516*)(oBC276vaol_check_memory))))->_item)=((T0*)C);
/*]*/
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=r276start_position((T276*)((/*RF2*/((T516*)(oBC276vaol_check_memory))->_item/*0*/))),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms276_1879799154);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_expression/*4*/),a1);
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T516*)((T516*)(oBC276vaol_check_memory))))->_item)=(_default_item);
}/*]*/
}


T0* r276result_type(T276* C){
T0* R=NULL;
R=X126result_type((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r276afd_check(T276* C){
X126afd_check((/*RF2*/(C)->_expression/*4*/));
}


T6 r276use_current(T276* C){
T6 R=0;
R=X126use_current((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r276c_declare_for_old(T276* C){
T104 _p={NULL,0};
T0* _name=NULL;
T0* _t=NULL;
_name=r276local_c_name(C);
_t=X62run_type(r276result_type(C));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC276tmp_string))))->_count)=(0);
/*]*/
X62c_type_for_argument_in(_t,oBC276tmp_string);
r7extend((T7*)(oBC276tmp_string),((T3)'\40'));
r7append((T7*)(oBC276tmp_string),_name);
r7extend((T7*)(oBC276tmp_string),((T3)'\75'));
X62c_initialize_in(_t,oBC276tmp_string);
r7append((T7*)(oBC276tmp_string),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC276tmp_string);
/*]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r7append((T7*)(oBC19c_frame_descriptor_locals),((T0*)ms276_26975293));
r7append((T7*)(oBC19c_frame_descriptor_locals),_name);
r7extend((T7*)(oBC19c_frame_descriptor_locals),((T3)'\54'));
r297increment((T297*)(oBC19c_frame_descriptor_local_count));
{T104 se_tmp0;
_p=(*(se_tmp0=r276start_position(C),&se_tmp0));
}
r7append((T7*)(oBC19c_frame_descriptor_format),((T0*)ms276_85643));
r2append_in(r104line(&_p),oBC19c_frame_descriptor_format);
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'c'));
r2append_in(r104column(&_p),oBC19c_frame_descriptor_format);
r7append((T7*)(oBC19c_frame_descriptor_format),(/*RF2*/((T77*)(r104base_class_name(&_p)))->_to_string/*8*/));
X62c_frame_descriptor(_t);
}
/*FI]*/
}


void r276compile_to_c_old(T276* C){
T0* _t=NULL;
_t=X62run_type(r276result_type(C));
r7copy((T7*)(oBC276tmp_string),r276local_c_name(C));
r7extend((T7*)(oBC276tmp_string),((T3)'\75'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC276tmp_string);
/*]*/
X126mapping_c_arg((/*RF2*/(C)->_expression/*4*/),_t);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T2 r276to_integer_or_error(T276* C){
T2 R=0;
r276to_integer_error(C);
return R;
}


T0* r276add_comment(T276* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r276to_runnable(T276* C,T0* a1){
T0* R=NULL;
T0* _exp=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*8*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_exp=X126to_runnable((/*RF2*/(C)->_expression/*4*/),a1);
/*[IF*/
if((_exp)==((void*)(NULL))){
{T104 se_tmp0;
r276error((*(se_tmp0=r276start_position(C),&se_tmp0)),((T0*)ms276_1311763296));
}
}
else{
(/*SFN*/C->_expression)=_exp;
}
/*FI]*/
R=((T0*)(C));
}
else{
{T276*n=((T276*)se_malloc(sizeof(*n))/*16*/);
*n=M276;
/*[IRF3.3make*/((((T276*)(n)))->_expression)=((/*RF2*/(C)->_expression/*4*/));
/*]*/
R=((T0*)n);
}
R=r276to_runnable(((T276*)R),a1);
}
/*FI]*/
return R;
}


T0* r276static_result_base_class(T276* C){
T0* R=NULL;
R=X126static_result_base_class((/*RF2*/(C)->_expression/*4*/));
return R;
}


T104 r276start_position(T276* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*4*/)),&se_tmp0));
}
return R;
}


void r165se_evobt(T165* C){
/*[IF*/
if((/*RF2*/(C)->_used/*0*/)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms165_1568216255));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms165_899910547));
/*]*/
}
/*FI]*/
}


void r165initialize_runtime(T165* C){
/*[IF*/
if((/*RF2*/(C)->_used/*0*/)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms165_584218374));
/*]*/
}
/*FI]*/
}


void r165bad_inspect_value(T165* C,T104 a1){
/*[IF*/
if((/*RF2*/(C)->_used/*0*/)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms165_1797674551));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms165_51895507));
/*]*/
/*[IRF3.6put_position*/{T104 b1=a1;
r58put_integer((T58*)(oBC83out_c),(/*RF2*/(b1)._mangling/*4*/));
}/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1330));
/*]*/
}
/*FI]*/
}


void r165get_started(T165* C){
T6 _no_check=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if((/*RF2*/(C)->_used/*0*/)){
r83sys_runtime_h((T83*)(oBC19cpp),((T0*)ms165_253892190));
r83sys_runtime_c(((T0*)ms165_253892190));
}
/*FI]*/
}


T0* r243type_any(void){
if(fBC19type_any==0){fBC19type_any=1;{
T104 _unknown_position={NULL,0};
{T356*n=((T356*)se_malloc(sizeof(*n))/*16*/);
*n=M356;
oBC19type_any=((T0*)n);
r356make(n,_unknown_position);
}
}}
return oBC19type_any;
}


void r243compile_to_c(T243* C){
T0* _dt=NULL;
T0* _st=NULL;
T0* _ct=NULL;
T2 _i=0;
T0* _rf2=NULL;
T0* _wa=NULL;
r461c_call(r243result_type(C));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_ct=(/*RF2*/(C)->_current_type/*4*/);
_wa=r60writable_attributes((T60*)(X62run_class(_ct)));
r243vwst1_check(C,_wa);
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r243array_count(C,_wa));
/*]*/
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T445*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf2=r445item(((T445*)_wa),_i);
/*[IF*/
if((((/*RF2*/(C)->_list/*16*/))==((void*)(NULL)))||(!(r118has((T118*)((/*RF2*/(C)->_list/*16*/)),(/*RF2*/(((T152*)_rf2))->_name/*16*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_st=(/*RF2*/(((T152*)_rf2))->_result_type/*32*/);
/*[IF*/
if(X62is_expanded(_st)){
_dt=X62actual_reference(_st,r243type_any());
r440c_function_call((T440*)(oBC19conversion_handler),_st,_dt);
}
/*FI]*/
r83print_current((T83*)(oBC19cpp));
/*[IF*/
if(X62is_expanded((/*RF2*/(C)->_current_type/*4*/))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\56');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms243_287));
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\137');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(((T152*)_rf2))->_name/*16*/)));
/*]*/
/*[IF*/
if(X62is_expanded(_st)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T2 r243array_count(T243* C,T0* a1){
T2 R=0;
/*[IF*/
if((a1)!=((void*)(NULL))){
R=r445count(((T445*)a1));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_list/*16*/))!=((void*)(NULL))){
R=(R)-(r118count((T118*)((/*RF2*/(C)->_list/*16*/))));
}
/*FI]*/
return R;
}


void r243make(T243* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_list)=a2;
}


void r243to_integer_error(T243* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*8*/));
}
r82print_as_error((T82*)(oBC19eh));
}


T0* r243result_type(T243* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_result_type_memory/*20*/))==((void*)(NULL))){
{T104 se_tmp0;
{T357*n=((T357*)se_malloc(sizeof(*n))/*28*/);
*n=M357;
r357make(n,(/*RF2*/(C)->_start_position/*8*/),r243type_any());
(/*SFN*/C->_result_type_memory)=((T0*)n);
}
}
(/*SFN*/C->_result_type_memory)=r357to_runnable((T357*)((/*RF2*/(C)->_result_type_memory/*20*/)),r243type_any());
r60set_at_run_time((T60*)(r357run_class((T357*)((/*RF2*/(C)->_result_type_memory/*20*/)))));
r357load_basic_features((T357*)((/*RF2*/(C)->_result_type_memory/*20*/)));
r461register((/*RF2*/(C)->_result_type_memory/*20*/));
}
/*FI]*/
R=(/*RF2*/(C)->_result_type_memory/*20*/);
return R;
}


void r243vwst1_check(T243* C,T0* a1){
T0* _rf2=NULL;
T0* _fn=NULL;
T2 _j=0;
T2 _i=0;
/*[IF*/
if((a1)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_list/*16*/))==((void*)(NULL))){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(r118item((T118*)((/*RF2*/(C)->_list/*16*/)),1)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms243_880386718);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
 else if(((/*RF2*/(C)->_list/*16*/))!=((void*)(NULL))){
_i=r118count((T118*)((/*RF2*/(C)->_list/*16*/)));
while (!((_i)==(0)))
{
_fn=r118item((T118*)((/*RF2*/(C)->_list/*16*/)),_i);
_j=(/*RF2*/(((T445*)a1))->_upper/*12*/);
_rf2=NULL;
while (!((_j)<=(0)))
{
_rf2=r445item(((T445*)a1),_j);
/*[IF*/
if((X117to_string((/*RF2*/(((T152*)_rf2))->_name/*16*/)))==((void*)(X117to_string(_fn)))){
_j=-(1);
}
else{
_j=(_j)-(1);
}
/*FI]*/
}
/*[IF*/
if((_j)==(0)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms243_880386718);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


void r243afd_check(T243* C){
T0* _fd=NULL;
T0* _dt=NULL;
T0* _st=NULL;
T2 _i=0;
T0* _rf2=NULL;
_fd=(/*RF2*/((T60*)(X62run_class((/*RF2*/(C)->_current_type/*4*/))))->_feature_dictionary/*30*/);
_i=1;
while (!((_i)>((/*RF2*/(((T144*)_fd))->_count/*8*/))))
{
_rf2=r144item(((T144*)_fd),_i);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 152:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
/*[IF*/
if((((/*RF2*/(C)->_list/*16*/))==((void*)(NULL)))||(!(r118has((T118*)((/*RF2*/(C)->_list/*16*/)),(/*RF2*/(((T152*)_rf2))->_name/*16*/))))){
_st=(/*RF2*/(((T152*)_rf2))->_result_type/*32*/);
/*[IF*/
if(X62is_expanded(_st)){
_dt=X62actual_reference(_st,r243type_any());
r440passing((T440*)(oBC19conversion_handler),_st,_dt);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
}


T2 r243to_integer_or_error(T243* C){
T2 R=0;
r243to_integer_error(C);
return R;
}


T0* r243add_comment(T243* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r243to_runnable(T243* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*4*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T243*n=((T243*)se_malloc(sizeof(*n))/*24*/);
*n=M243;
r243make(n,(/*RF2*/(C)->_start_position/*8*/),(/*RF2*/(C)->_list/*16*/));
R=((T0*)n);
}
}
R=r243to_runnable(((T243*)R),a1);
}
/*FI]*/
return R;
}


T0* r243static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_53339));
return R;
}
T0*oBC19type_pointer=NULL;
int fBC19type_pointer=0;


T0* r254type_pointer(void){
if(fBC19type_pointer==0){fBC19type_pointer=1;{
T104 _unknown_position={NULL,0};
{T366*n=((T366*)se_malloc(sizeof(*n))/*16*/);
*n=M366;
oBC19type_pointer=((T0*)n);
r366make(n,_unknown_position);
}
}}
return oBC19type_pointer;
}


void r254compile_to_c(T254* C){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms254_1096645863));
/*]*/
X96address_of_c_mapping((/*RF2*/(C)->_run_feature/*8*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r254to_integer_error(T254* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r254start_position(C),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}


T2 r254to_integer_or_error(T254* C){
T2 R=0;
r254to_integer_error(C);
return R;
}


T0* r254add_comment(T254* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r254to_runnable(T254* 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=X62run_class(a1);
_bc=X62base_class(a1);
/*[IF*/
if(r61has(((T61*)_bc),(/*RF2*/(C)->_feature_name/*4*/))){
(/*SFN*/C->_run_feature)=r60get_rf_with(((T60*)_rc),(/*RF2*/(C)->_feature_name/*4*/));
r474register_for((T0*)C);
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*4*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms20_671063316);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
R=((T0*)(C));
}
else{
{T254*n=((T254*)se_malloc(sizeof(*n))/*16*/);
*n=M254;
/*[IRF3.3make*/((((T254*)(n)))->_feature_name)=((/*RF2*/(C)->_feature_name/*4*/));
/*]*/
R=((T0*)n);
}
R=r254to_runnable(((T254*)R),a1);
}
/*FI]*/
return R;
}


T0* r254static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_1554777));
return R;
}


T104 r254start_position(T254* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*4*/)),&se_tmp0));
}
return R;
}


T0* r269to_string(T269* C){
T0* R=NULL;
R=(/*RF2*/((T271*)(/*(IRF4.6name*/r272item(((T272*)((/*RF2*/((T171*)((/*RF2*/(C)->_local_var_list/*16*/)))->_flat_list/*8*/))),(/*RF2*/(C)->_rank/*12*/))/*)*/))->_to_string/*12*/);
return R;
}


T6 r269stupid_switch(T269* C,T0* a1){
T6 R=0;
/*[IF*/
if(r59stupid_switch(r269result_type(C),a1)){
R=1;
}
/*FI]*/
return R;
}


void r269fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r269to_integer_error(T269* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r82print_as_error((T82*)(oBC19eh));
}


void r269assertion_check(T269* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'E'))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r269fatal_error(((T0*)ms269_1324933885));
}
/*FI]*/
}


T0* r269result_type(T269* C){
T0* R=NULL;
R=r171type((T171*)((/*RF2*/(C)->_local_var_list/*16*/)),(/*RF2*/(C)->_rank/*12*/));
return R;
}


void r269refer_to(T269* C,T104 a1,T0* a2,T2 a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_local_var_list)=a2;
(/*SFN*/C->_rank)=a3;
}


void r269mapping_c_target(T269* C,T0* a1){
T0* _rt=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_rt=X62run_type(r269result_type(C));
/*[IF*/
if(X62is_reference(_rt)){
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
X62mapping_cast(a1);
/*[IRF3.6compile_to_c*/{T269* C1=C;
r83print_local((T83*)(oBC19cpp),r269to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.6compile_to_c*/{T269* C1=C;
r83print_local((T83*)(oBC19cpp),r269to_string(C1));
}/*]*/
}
/*FI]*/
}
 else if(X62is_reference(a1)){
/*[IRF3.6compile_to_c*/{T269* C1=C;
r83print_local((T83*)(oBC19cpp),r269to_string(C1));
}/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T269* C1=C;
r83print_local((T83*)(oBC19cpp),r269to_string(C1));
}/*]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T2 r269to_integer_or_error(T269* C){
T2 R=0;
r269to_integer_error(C);
return R;
}


T0* r269add_comment(T269* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r269to_runnable(T269* C,T0* a1){
T0* R=NULL;
T0* _lvl=NULL;
T0* _rf=NULL;
_rf=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
_lvl=X96local_vars(_rf);
/*[IF*/
if(((/*RF2*/(C)->_local_var_list/*16*/))==((void*)(_lvl))){
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T269*n=((T269*)se_malloc(sizeof(*n))/*20*/);
*n=M269;
r269refer_to(n,(/*RF2*/(C)->_start_position/*4*/),_lvl,(/*RF2*/(C)->_rank/*12*/));
R=((T0*)n);
}
}
}
/*FI]*/
/*[IRF3.3set_is_used*/((((T271*)((T271*)(/*(IRF4.6name*/r272item(((T272*)((/*RF2*/(((T171*)_lvl))->_flat_list/*8*/))),(/*RF2*/(C)->_rank/*12*/))/*)*/))))->_is_used)=(1);
/*]*/
return R;
}


T0* r269static_result_base_class(T269* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=X62static_base_class_name(r269result_type(C));
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r77base_class(((T77*)_bcn));
}
/*FI]*/
return R;
}


void r271warning(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}


T0* r271base_class_written(T271* C){
T0* R=NULL;
{T104 se_tmp0;
R=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
}
return R;
}


void r271error(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}


void r271name_clash_for(T271* C,T0* a1,T0* a2){
T0* _bc=NULL;
T0* _rc=NULL;
T0* _rf=NULL;
_bc=r271base_class_written(C);
/*[IF*/
if(r61has_simple_feature_name(((T61*)_bc),(/*RF2*/(C)->_to_string/*12*/))){
_rc=X62run_class(a1);
_rf=r60get_feature_with(((T60*)_rc),(/*RF2*/(C)->_to_string/*12*/));
/*[IF*/
if((_rf)!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(_rf),&se_tmp0)));
}
}
/*FI]*/
{T104 se_tmp0;
r271error((/*RF2*/(C)->_start_position/*4*/),a2);
}
}
/*FI]*/
}
T0*oBC270tmp_string=NULL;


T6 r271stupid_switch(T271* C,T0* a1){
T6 R=0;
/*[IF*/
if(r59stupid_switch((/*RF2*/(C)->_result_type/*16*/),a1)){
R=1;
}
/*FI]*/
return R;
}


void r271c_frame_descriptor(T271* C,T0* a1){
/*[IF*/
if(r271produce_c(C)){
r297increment((T297*)(oBC19c_frame_descriptor_local_count));
r7append((T7*)(oBC19c_frame_descriptor_format),(/*RF2*/(C)->_to_string/*12*/));
r7append((T7*)(oBC19c_frame_descriptor_locals),((T0*)ms271_134876560));
r7append((T7*)(oBC19c_frame_descriptor_locals),(/*RF2*/(C)->_to_string/*12*/));
r7extend((T7*)(oBC19c_frame_descriptor_locals),((T3)'\54'));
X62c_frame_descriptor(a1);
}
/*FI]*/
}


void r271make(T271* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_to_string)=a2;
}


void r271to_integer_error(T271* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r82print_as_error((T82*)(oBC19eh));
}


void r271c_declare(T271* C){
T0* _t=NULL;
/*[IF*/
if(r271produce_c(C)){
_t=X62run_type((/*RF2*/(C)->_result_type/*16*/));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC270tmp_string))))->_count)=(0);
/*]*/
X62c_type_for_result_in(_t,oBC270tmp_string);
r7extend((T7*)(oBC270tmp_string),((T3)'\40'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC270tmp_string);
/*]*/
r83print_local((T83*)(oBC19cpp),(/*RF2*/(C)->_to_string/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
X62c_initialize(_t);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}
 else if(r57debug_check((T57*)(oBC19run_control))){
{T104 se_tmp0;
r271warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms271_1814961148));
}
}
/*FI]*/
}


void r271mapping_c_target(T271* C,T0* a1){
T0* _rt=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_rt=X62run_type((/*RF2*/(C)->_result_type/*16*/));
/*[IF*/
if(X62is_reference(_rt)){
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
X62mapping_cast(a1);
/*[IRF3.6compile_to_c*/{T271* C1=C;
r83print_local((T83*)(oBC19cpp),(/*RF2*/(C1)->_to_string/*12*/));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.6compile_to_c*/{T271* C1=C;
r83print_local((T83*)(oBC19cpp),(/*RF2*/(C1)->_to_string/*12*/));
}/*]*/
}
/*FI]*/
}
 else if(X62is_reference(a1)){
/*[IRF3.6compile_to_c*/{T271* C1=C;
r83print_local((T83*)(oBC19cpp),(/*RF2*/(C1)->_to_string/*12*/));
}/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T271* C1=C;
r83print_local((T83*)(oBC19cpp),(/*RF2*/(C1)->_to_string/*12*/));
}/*]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r271twin(T271* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T271*)R)=*C;
return R;
}


T2 r271to_integer_or_error(T271* C){
T2 R=0;
r271to_integer_error(C);
return R;
}


T0* r271add_comment(T271* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r271to_runnable(T271* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
_rt=X62to_runnable((/*RF2*/(C)->_result_type/*16*/),a1);
/*[IF*/
if((_rt)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_result_type/*16*/)),&se_tmp0)));
}
{T104 se_tmp0;
r271error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms271_1919392481));
}
}
 else if((X62run_class(_rt))==((void*)(NULL))){
}
/*FI]*/
/*[IF*/
if((_rt)==((void*)((/*RF2*/(C)->_result_type/*16*/)))){
R=((T0*)(C));
}
else{
R=r271twin(C);
/*[IRF3.3set_result_type*/((((T271*)(((T271*)R))))->_result_type)=(_rt);
/*]*/
}
/*FI]*/
return R;
}


T6 r271produce_c(T271* C){
T6 R=0;
T0* _t=NULL;
/*[IF*/
if((/*RF2*/(C)->_is_used/*24*/)){
R=1;
}
else{
_t=X62run_type((/*RF2*/(C)->_result_type/*16*/));
/*[IF*/
if(X62is_expanded(_t)){
R=!(X62is_basic_eiffel_expanded(_t));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r271static_result_base_class(T271* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=X62static_base_class_name((/*RF2*/(C)->_result_type/*16*/));
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r77base_class(((T77*)_bcn));
}
/*FI]*/
return R;
}


T6 r61has_simple_feature_name(T61* C,T0* a1){
T6 R=0;
T104 _unknown_position={NULL,0};
r143make((T143*)(r61mem_fn()),a1,_unknown_position);
R=r61has(C,r61mem_fn());
return R;
}


T0* r61up_to_original(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(r61proper_has(C,a2)){
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
R=r61new_name_of_original(((T61*)a1),(T0*)C,a2);
}
else{
R=r72up_to_original((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
R=r61new_name_of_original(((T61*)a1),(T0*)C,a2);
}
/*FI]*/
}
/*FI]*/
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
R=r72up_to_original((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2);
}
 else if(r61is_general(C)){
}
else{
R=r61up_to_original((T61*)(r61class_any()),a1,a2);
}
/*FI]*/
return R;
}


T6 r61is_platform(T61* C){
T6 R=0;
R=((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/))==((void*)(((T0*)ms21_7704337)));
return R;
}


T0* r61super_look_up_for(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
/*[IF*/
if(!(r61is_general(C))){
R=r61look_up_for((T61*)(r61class_any()),a1,a2);
}
/*FI]*/
}
else{
R=r72look_up_for((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2);
}
/*FI]*/
return R;
}


T0* r61going_up(T61* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
R=r61going_up((T61*)(r61class_any()),a1,a2,a3);
}
else{
R=r72going_up((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2,a3);
}
/*FI]*/
return R;
}


void r61inherit_cycle_check(T61* C){
T2 _i=0;
r184add_last((T184*)(oBC61visited),(T0*)C);
/*[IF*/
if((/*(IRF4.6first*/((/*RF2*/((T184*)(oBC61visited))->_storage/*0*/))[0]/*)*/)==((void*)(C))){
/*[IRF3.6append*/{T0* b1=((T0*)ms61_847092098);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
_i=0;
while (!((_i)>((/*RF2*/((T184*)(oBC61visited))->_upper/*8*/))))
{
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/((T61*)(/*(IRF4.6item*/((/*RF2*/((T184*)(oBC61visited))->_storage/*0*/))[_i]/*)*/))->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IF*/
if((_i)<((/*RF2*/((T184*)(oBC61visited))->_upper/*8*/))){
/*[IRF3.6append*/{T0* b1=((T0*)ms61_252);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
r61fatal_error(((T0*)ms61_32926));
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
r72inherit_cycle_check((T72*)((/*RF2*/(C)->_parent_list/*34*/)));
}
/*FI]*/
}
T0*oBC19class_any=NULL;
int fBC19class_any=0;


T0* r61class_any(void){
if(fBC19class_any==0){fBC19class_any=1;{
oBC19class_any=r59get_class(((T0*)ms21_2104));
}}
return oBC19class_any;
}


T0* r61run_ensure(T61* C,T0* a1){
T0* R=NULL;
T0* _ct=NULL;
r426ensure_start((T426*)(oBC19assertion_collector));
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a1))->_current_type/*8*/);
r61collect_assertion(C,/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)a1))->_name/*16*/));
R=r426ensure_end((T426*)(oBC19assertion_collector),a1,_ct);
return R;
}


T0* r61super_e_feature(T61* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
/*[IF*/
if(!(r61is_general(C))){
R=r61e_feature((T61*)(r61class_any()),a1);
}
/*FI]*/
}
else{
R=r72e_feature((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
/*FI]*/
return R;
}


T0* r61type_any(void){
if(fBC19type_any==0){fBC19type_any=1;{
T104 _unknown_position={NULL,0};
{T356*n=((T356*)se_malloc(sizeof(*n))/*16*/);
*n=M356;
oBC19type_any=((T0*)n);
r356make(n,_unknown_position);
}
}}
return oBC19type_any;
}


void r61warning(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}


T0* r61new_name_of(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if((C)==((void*)(a1))){
R=a2;
}
else{
R=r61up_to_original(((T61*)a1),(T0*)C,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms20_37202594);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(a2);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_3563044);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(((T61*)a1))->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_358119448);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r61fatal_error(((T0*)ms61_216a));
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC61mem_fn=NULL;
int fBC61mem_fn=0;


T0* r61mem_fn(void){
if(fBC61mem_fn==0){fBC61mem_fn=1;{
T104 _unknown_position={NULL,0};
{T143*n=((T143*)se_malloc(sizeof(*n))/*20*/);
*n=M143;
oBC61mem_fn=((T0*)n);
r143make(n,((T0*)ms21_2246041),_unknown_position);
}
}}
return oBC61mem_fn;
}


T6 r61has_creation(T61* C,T0* a1){
T6 R=0;
T0* _cn=NULL;
T0* _bc=NULL;
T0* _cc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_creation_clause_list/*38*/))==((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1840207317);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}
else{
_cc=r179get_clause((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/)),a1);
/*[IF*/
if((_cc)==((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_37202594);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(a1);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_439490016);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r61error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms20_46));
}
}
else{
R=1;
_bc=X117origin_base_class(a1);
/*[IF*/
if((_bc)!=((void*)(NULL))){
_cn=(/*RF2*/(((T61*)_bc))->_name/*18*/);
R=r200gives_permission_to((T200*)((/*RF2*/(((T180*)_cc))->_clients/*8*/)),_cn);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
{T104 se_tmp0;
r61error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms61_1518885935));
}
}
/*FI]*/
return R;
}


T6 r61is_any(T61* C){
T6 R=0;
R=((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/))==((void*)(((T0*)ms21_2104)));
return R;
}


T0* r61look_up_for(T61* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _super_fn=NULL;
T0* _fnl=NULL;
T0* _cst_att=NULL;
T0* _fn_key=NULL;
T0* _super=NULL;
_fn_key=X117to_key(a2);
/*[IF*/
if(r172has((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_fn_key)){
R=r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_fn_key);
_super=r61super_look_up_for(C,a1,a2);
/*[IF*/
if((_super)!=((void*)(NULL))){
r61vdrd6(a1,_super,R);
_cst_att=_super;
if(NULL!=(_cst_att)){
switch(((T0*)_cst_att)->id){
case 293:case 299:case 300:case 301:case 306:case 307:case 308:case 140:
break;
default:
_cst_att=NULL;
}
}/*[IF*/
if((_cst_att)!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_super),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(R),&se_tmp0)));
}
r61fatal_error(((T0*)ms61_473790304));
}
/*FI]*/
_fnl=/*SSWARF2*//*X99names*/(/*RF2*/(((T293*)_super))->_names/*8*/);
_i=r118count(((T118*)_fnl));
while (!((_i)<(1)))
{
_super_fn=r118item(((T118*)_fnl),_i);
/*[IF*/
if(X117is_frozen(_super_fn)){
/*[IF*/
if((X117to_key(_super_fn))==((void*)(_fn_key))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_super_fn),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(R),&se_tmp0)));
}
r61fatal_error(((T0*)ms61_1717725716));
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(!(X99can_hide(R,_super,a1))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_super),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(R),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_753046307);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
/*[IF*/
if(X99is_deferred(_super)){
}
 else if(r61has_redefine(C,a2)){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(R),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_super),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1701059270);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_23301310);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
else{
R=r61super_look_up_for(C,a1,a2);
}
/*FI]*/
return R;
}


void r61error(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}


T6 r61has_redefine(T61* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
R=r72has_redefine((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
/*FI]*/
return R;
}


T0* r61run_require(T61* C,T0* a1){
T0* R=NULL;
T0* _ct=NULL;
r426require_start((T426*)(oBC19assertion_collector));
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a1))->_current_type/*8*/);
r61collect_assertion(C,/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)a1))->_name/*16*/));
R=r426require_end((T426*)(oBC19assertion_collector),a1,_ct);
return R;
}
T0*oBC19class_general=NULL;
int fBC19class_general=0;


T0* r61class_general(void){
if(fBC19class_general==0){fBC19class_general=1;{
oBC19class_general=r59get_class(((T0*)ms21_1384826));
}}
return oBC19class_general;
}


T6 r61once_flag(T61* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_once_mark_list/*58*/))==((void*)(NULL))){
{T120*n=((T120*)se_malloc(sizeof(*n))/*16*/);
*n=M120;
r120with_capacity(n,4);
(/*SFN*/C->_once_mark_list)=((T0*)n);
}
r120add_last((T120*)((/*RF2*/(C)->_once_mark_list/*58*/)),a1);
}
 else if(r120fast_has((T120*)((/*RF2*/(C)->_once_mark_list/*58*/)),a1)){
R=1;
}
else{
r120add_last((T120*)((/*RF2*/(C)->_once_mark_list/*58*/)),a1);
}
/*FI]*/
return R;
}


void r61set_is_expanded(T61* C){
/*[IF*/
if((/*RF2*/(C)->_is_deferred/*16*/)){
/*[IRF3.6error_vtec1*/{T61* C1=C;
{T104 se_tmp0;
r61error((/*RF2*/((T77*)((/*RF2*/(C1)->_name/*18*/)))->_start_position/*0*/),((T0*)ms61_510352234));
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_is_expanded)=1;
}


T0* r61clients_for(T61* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r61proper_has(C,a1)){
R=/*SSWARF2*//*X99clients*/(/*RF2*/((T293*)(r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),X117to_key(a1))))->_clients/*16*/);
}
 else if(r61is_general(C)){
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
R=r61clients_for((T61*)(r61class_any()),a1);
}
else{
R=r72clients_for((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
/*FI]*/
return R;
}
T0*oBC19assertion_collector=NULL;


void r61add_index_clause(T61* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_index_list/*8*/))==((void*)(NULL))){
{T421*n=((T421*)se_malloc(sizeof(*n))/*4*/);
*n=M421;
r421make(n,a1);
(/*SFN*/C->_index_list)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r422add_last(((T422*)((/*RF2*/((T421*)((/*RF2*/(C)->_index_list/*8*/)))->_list/*0*/))),a1);
/*]*/
}
/*FI]*/
}


void r61check_expanded_with(T61* C,T0* a1){
T0* _rf=NULL;
/*[IF*/
if((/*RF2*/(C)->_is_deferred/*16*/)){
r82add_type(a1,((T0*)ms20_1459599374));
r61fatal_error(((T0*)ms61_1751640606));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_creation_clause_list/*38*/))!=((void*)(NULL))){
r179check_expanded_with((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/)),a1);
}
/*FI]*/
_rf=r61expanded_initializer(C,a1);
}


T6 r61is_none(T61* C){
T6 R=0;
R=((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/))==((void*)(((T0*)ms21_12184)));
return R;
}


T0* r61new_name_of_original(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if((C)==((void*)(a1))){
R=a2;
}
 else if(r61is_general(C)){
R=a2;
}
else{
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
R=r61new_name_of((T61*)(r61class_any()),a1,a2);
}
else{
/*[IRF3.3clear*/((((T74*)((T74*)(oBC61going_up_trace))))->_upper)=(-(1));
/*]*/
R=r72going_up((T72*)((/*RF2*/(C)->_parent_list/*34*/)),oBC61going_up_trace,a1,a2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r61get_copy(T61* C){
T0* R=NULL;
R=r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),((T0*)ms21_15831));
return R;
}


void r61add_feature_clause(T61* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_feature_clause_list/*42*/))==((void*)(NULL))){
{T194*n=((T194*)se_malloc(sizeof(*n))/*4*/);
*n=M194;
r194make(n,a1);
(/*SFN*/C->_feature_clause_list)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r196add_last(((T196*)((/*RF2*/((T194*)((/*RF2*/(C)->_feature_clause_list/*42*/)))->_list/*0*/))),a1);
/*]*/
}
/*FI]*/
}


T6 r61is_a_vncg(T61* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
R=r72is_a_vncg((T72*)((/*RF2*/(C)->_parent_list/*34*/)),X62run_type(a1),X62run_type(a2));
}
/*FI]*/
return R;
}
T0*oBC61going_up_trace=NULL;


void r61make(T61* C,T0* a1,T0* a2,T2 a3){
(/*SFN*/C->_path)=a1;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(a2);
/*]*/
(/*SFN*/C->_name)=((T0*)n);
}
(/*SFN*/C->_id)=a3;
r59add_base_class((T59*)(oBC19small_eiffel),(T0*)C);
{T172*n=((T172*)se_malloc(sizeof(*n))/*16*/);
*n=M172;
/*[IRF3.4make*/r172with_capacity(n,193);
/*]*/
(/*SFN*/C->_feature_dictionary)=((T0*)n);
}
}


void r61check_generic_formal_arguments(T61* C){
/*[IF*/
if(((/*RF2*/(C)->_formal_generic_list/*22*/))!=((void*)(NULL))){
r193check_generic_formal_arguments((T193*)((/*RF2*/(C)->_formal_generic_list/*22*/)));
}
/*FI]*/
}


T0* r61get_default_rescue(T61* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p=NULL;
T0* _general=NULL;
_general=r61class_general();
/*[IF*/
if((C)!=((void*)(_general))){
_p=r61general_default_rescue(((T61*)_general));
/*[IF*/
if((_p)!=((void*)(NULL))){
_fn1=/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/(((T150*)_p))->_names/*8*/))))->_first/*0*/)/*)*/;
_fn2=r61new_name_of(C,_general,_fn1);
/*[IF*/
if((X117to_string(_fn2))!=((void*)(X117to_string(a2)))){
_p=r61look_up_for(C,a1,_fn2);
if(NULL!=(_p)){
switch(((T0*)_p)->id){
case 150:
break;
default:
_p=NULL;
}
}/*[IF*/
if((_p)!=((void*)(NULL))){
R=r150a_default_rescue(((T150*)_p),a1,_fn2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r61fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


T0* r61original_name(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if((C)==((void*)(a1))){
R=a2;
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
R=r72original_name((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2);
}
else{
R=r61original_name(((T61*)a1),a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
R=a2;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(((T61*)a1))->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_8895);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1225686025);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r61vdrd6(T0* a1,T0* a2,T0* a3){
T0* _rt2=NULL;
T0* _rt1=NULL;
T0* _ct=NULL;
T0* _writable_attribute=NULL;
_writable_attribute=a2;
if(NULL!=(_writable_attribute)){
switch(((T0*)_writable_attribute)->id){
case 153:
break;
default:
_writable_attribute=NULL;
}
}/*[IF*/
if((_writable_attribute)!=((void*)(NULL))){
_writable_attribute=a3;
if(NULL!=(_writable_attribute)){
switch(((T0*)_writable_attribute)->id){
case 153:
break;
default:
_writable_attribute=NULL;
}
}/*[IF*/
if((_writable_attribute)==((void*)(NULL))){
r61fatal_error_vdrd6(a2,a3,((T0*)ms61_1125596082));
}
else{
_ct=(/*RF2*/(((T60*)a1))->_current_type/*0*/);
_rt1=X62to_runnable(X99result_type(a2),_ct);
_rt2=X62to_runnable(X99result_type(a3),_ct);
/*[IF*/
if(X62is_reference(_rt1)){
/*[IF*/
if(X62is_reference(_rt2)){
}
else{
r61fatal_error_vdrd6(a2,a3,((T0*)ms61_1700107276));
}
/*FI]*/
}
 else if(X62is_reference(_rt2)){
r61fatal_error_vdrd6(a2,a3,((T0*)ms61_1700107276));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r61proper_has(T61* C,T0* a1){
T6 R=0;
R=r172has((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),X117to_key(a1));
return R;
}


void r61fatal_error_vdrd6(T0* a1,T0* a2,T0* a3){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1409824798);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a3;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


T6 r61is_subclass_of(T61* C,T0* a1){
T6 R=0;
/*[IF*/
if(r61is_any(((T61*)a1))){
R=1;
}
 else if(r61is_platform(((T61*)a1))){
R=1;
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
R=r72has_parent((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
 else if(r61is_general(((T61*)a1))){
R=1;
}
 else if(r61is_none(((T61*)a1))){
}
 else if(r61is_none(C)){
R=1;
}
/*FI]*/
return R;
}


void r61add_creation_clause(T61* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_creation_clause_list/*38*/))==((void*)(NULL))){
{T179*n=((T179*)se_malloc(sizeof(*n))/*4*/);
*n=M179;
r179make(n,a1);
(/*SFN*/C->_creation_clause_list)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r181add_last(((T181*)((/*RF2*/((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/)))->_list/*0*/))),a1);
/*]*/
}
/*FI]*/
}


T6 r61has(T61* C,T0* a1){
T6 R=0;
R=(r61e_feature(C,a1))!=((void*)(NULL));
return R;
}


T0* r61general_default_rescue(T61* C){
T0* R=NULL;
/*[IF*/
if(r172has((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),((T0*)ms21_1680885744))){
R=r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),((T0*)ms21_1680885744));
if(NULL!=(R)){
switch(((T0*)R)->id){
case 150:
break;
default:
R=NULL;
}
}}
/*FI]*/
return R;
}


void r61set_is_deferred(T61* C){
/*[IF*/
if((/*RF2*/(C)->_is_expanded/*17*/)){
/*[IRF3.6error_vtec1*/{T61* C1=C;
{T104 se_tmp0;
r61error((/*RF2*/((T77*)((/*RF2*/(C1)->_name/*18*/)))->_start_position/*0*/),((T0*)ms61_510352234));
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_is_deferred)=1;
}


void r61set_obsolete_type_string(T61* C,T0* a1){
(/*SFN*/C->_obsolete_type_string)=a1;
/*[IF*/
if(((/*RF2*/(C)->_obsolete_type_string/*30*/))!=((void*)(NULL))){
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T59*)(oBC19small_eiffel))->_pretty_flag/*6*/)){
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms61_292482);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_2026211842);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T262*)((/*RF2*/(C)->_obsolete_type_string/*30*/)))->_to_string/*12*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_start_position/*0*/));
}
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}


void r61set_invariant(T61* C,T104 a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T205*n=((T205*)se_malloc(sizeof(*n))/*24*/);
*n=M205;
r205make(n,a1,a2,a3);
(/*SFN*/C->_class_invariant)=((T0*)n);
}
}
/*FI]*/
}


void r61collect_invariant(T61* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
r72collect_invariant((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_class_invariant/*46*/))!=((void*)(NULL))){
r426invariant_add_last((T426*)(oBC19assertion_collector),(/*RF2*/(C)->_class_invariant/*46*/));
}
/*FI]*/
}


T0* r61e_feature(T61* C,T0* a1){
T0* R=NULL;
T0* _key=NULL;
_key=X117to_key(a1);
/*[IF*/
if(r172has((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_key)){
R=r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_key);
}
else{
R=r61super_e_feature(C,a1);
}
/*FI]*/
return R;
}


T6 r61is_general(T61* C){
T6 R=0;
R=((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/))==((void*)(((T0*)ms21_1384826)));
return R;
}


void r61fatal_undefine(T61* C,T0* a1){
/*[IRF3.6append*/{T0* b1=((T0*)ms61_772983982);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(a1);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_142319);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r61fatal_error(((T0*)ms61_216));
}


T0* r61expanded_initializer(T61* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_creation_clause_list/*38*/))!=((void*)(NULL))){
R=r179expanded_initializer((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/)),a1);
}
/*FI]*/
return R;
}
T0*oBC61visited=NULL;


T0* r61run_feature_for(T61* C,T0* a1,T0* a2,T0* a3,T0* a4){
T0* R=NULL;
T0* _bcn=NULL;
T0* _nfn=NULL;
T0* _top_bc=NULL;
/*[IF*/
if(X62is_like_current(X126result_type(a2))){
{T104 se_tmp0;
_top_bc=(/*RF2*/((*(se_tmp0=X126start_position(a2),&se_tmp0)))._base_class/*0*/);
}
_nfn=r61new_name_of((T61*)(X62base_class(a4)),_top_bc,a3);
}
else{
_nfn=a3;
_top_bc=X126static_result_base_class(a2);
/*[IF*/
if((_top_bc)!=((void*)(NULL))){
/*[IF*/
if(((C)==((void*)(_top_bc)))||(r61is_subclass_of(C,_top_bc))){
/*[IF*/
if(r61has(((T61*)_top_bc),a3)){
_nfn=r61new_name_of(C,_top_bc,a3);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=r60get_feature(((T60*)a1),_nfn);
/*[IF*/
if((R)==((void*)(NULL))){
r82feature_not_found(a3);
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
/*[IF*/
if(!(X126is_current(a2))){
_bcn=(/*RF2*/((T61*)(X62base_class(a4)))->_name/*18*/);
/*[IF*/
if(!(X96is_exported_in(R,_bcn))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(R),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1801741785);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(a3);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r61error((*(se_tmp0=X117start_position(a3),&se_tmp0)),((T0*)ms61_712276));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a3),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_439169454);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark(a4);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r61fatal_error(((T0*)ms20_46));
}
/*FI]*/
}
/*FI]*/
{T104 se_tmp0;
X99check_obsolete(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)R))->_base_feature/*28*/),(*(se_tmp0=X117start_position(a3),&se_tmp0)));
}
return R;
}


T0* r61root_procedure_name(T61* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_creation_clause_list/*38*/))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_start_position/*0*/));
}
r61fatal_error(((T0*)ms61_15142174));
}
else{
R=r179root_procedure_name((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/)),a1);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_start_position/*0*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1229059519);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r61fatal_error(((T0*)ms61_74133124));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r61id_extra_information(T61* C,T0* a1){
r58put_string(((T58*)a1),((T0*)ms61_1838187926));
r58put_string(((T58*)a1),(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/));
r58put_string(((T58*)a1),((T0*)ms61_1754027858));
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
r72id_extra_information((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
else{
r58put_string(((T58*)a1),((T0*)ms61_272));
}
/*FI]*/
}


void r61set_parent_list(T61* C,T104 a1,T0* a2,T0* a3){
{T72*n=((T72*)se_malloc(sizeof(*n))/*20*/);
*n=M72;
r72make(n,(T0*)C,a1,a2,a3);
(/*SFN*/C->_parent_list)=((T0*)n);
}
}


T0* r61root_procedure(T61* C,T0* a1){
T0* R=NULL;
T0* _f=NULL;
T0* _rc=NULL;
/*[IF*/
if(/*(IRF4.7is_generic*/((/*RF2*/(C)->_formal_generic_list/*22*/))!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_1786429697);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
/*[IF*/
if((/*RF2*/(C)->_is_deferred/*16*/)){
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms61_891552598);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
_rc=r59run_class_for((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_to_string/*8*/));
r60set_at_run_time(((T60*)_rc));
_f=r61look_up_for(C,_rc,a1);
/*[IF*/
if((_f)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T143*)a1))->_start_position/*4*/));
}
r61fatal_error(((T0*)ms61_164956856));
}
/*FI]*/
R=_f;
if(NULL!=(R)){
switch(((T0*)R)->id){
case 150:
break;
default:
R=NULL;
}
}/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f),&se_tmp0)));
}
r61fatal_error(((T0*)ms61_660585882));
}
/*FI]*/
return R;
}


void r61collect_assertion(T61* C,T0* a1){
T0* _ef=NULL;
T0* _fn_key=NULL;
_fn_key=X117to_key(a1);
/*[IF*/
if(r172has((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_fn_key)){
_ef=r172at((T172*)((/*RF2*/(C)->_feature_dictionary/*54*/)),_fn_key);
r426assertion_add_last((T426*)(oBC19assertion_collector),_ef);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
/*[IF*/
if(!(r61is_general(C))){
r61collect_assertion((T61*)(r61class_any()),a1);
}
/*FI]*/
}
else{
r72collect_assertion((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1);
}
/*FI]*/
}


void r61get_started(T61* C){
/*[IF*/
if(((/*RF2*/(C)->_feature_clause_list/*42*/))!=((void*)(NULL))){
r194get_started((T194*)((/*RF2*/(C)->_feature_clause_list/*42*/)),(/*RF2*/(C)->_feature_dictionary/*54*/));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
r72get_started((T72*)((/*RF2*/(C)->_parent_list/*34*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_end_comment/*50*/))!=((void*)(NULL))){
r164good_end((T164*)((/*RF2*/(C)->_end_comment/*50*/)),(/*RF2*/(C)->_name/*18*/));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_parent_list/*34*/))!=((void*)(NULL))){
/*[IRF3.3clear*/((((T184*)((T184*)(oBC61visited))))->_upper)=(-(1));
/*]*/
r184add_last((T184*)(oBC61visited),(T0*)C);
r72inherit_cycle_check((T72*)((/*RF2*/(C)->_parent_list/*34*/)));
}
/*FI]*/
/*[IF*/
if(((r57all_check((T57*)(oBC19run_control)))&&((/*RF2*/(C)->_is_deferred/*16*/)))&&(((/*RF2*/(C)->_creation_clause_list/*38*/))!=((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T77*)((/*RF2*/(C)->_name/*18*/)))->_start_position/*0*/));
}
{T104 se_tmp0;
r61warning((*(se_tmp0=r179start_position((T179*)((/*RF2*/(C)->_creation_clause_list/*38*/))),&se_tmp0)),((T0*)ms61_1781104140));
}
}
/*FI]*/
}


T0* r61smallest_ancestor(T61* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(r61is_any(C)){
R=a1;
}
 else if((X62run_time_mark(a1))==((void*)(X62run_time_mark(a2)))){
R=a1;
}
 else if(((/*RF2*/(C)->_parent_list/*34*/))==((void*)(NULL))){
R=r61type_any();
}
 else if(((/*RF2*/((T61*)(X62base_class(a2)))->_parent_list/*34*/))==((void*)(NULL))){
R=r61type_any();
}
else{
R=r72smallest_ancestor((T72*)((/*RF2*/(C)->_parent_list/*34*/)),a1,a2);
}
/*FI]*/
return R;
}


T6 r323c_simple(T323* C){
T6 R=0;
R=X126c_simple((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323can_be_dropped(T323* C){
T6 R=0;
R=X126can_be_dropped((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323is_manifest_string(T323* C){
T6 R=0;
R=X126is_manifest_string((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323is_static(T323* C){
T6 R=0;
R=X126is_static((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323is_void(T323* C){
T6 R=0;
R=X126is_void((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r323compile_to_c(T323* C){
X126compile_to_c((/*RF2*/(C)->_expression/*4*/));
}


T6 r323is_result(T323* C){
T6 R=0;
R=X126is_result((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323stupid_switch(T323* C,T0* a1){
T6 R=0;
R=X126stupid_switch((/*RF2*/(C)->_expression/*4*/),a1);
return R;
}


void r323mapping_c_arg(T323* C,T0* a1){
X126mapping_c_arg((/*RF2*/(C)->_expression/*4*/),a1);
}


void r323make(T323* C,T0* a1,T0* a2){
(/*SFN*/C->_expression)=a1;
(/*SFN*/C->_comment)=a2;
}


T6 r323is_manifest_array(T323* C){
T6 R=0;
R=X126is_manifest_array((/*RF2*/(C)->_expression/*4*/));
return R;
}


T2 r323isa_dca_inline_argument(T323* C){
T2 R=0;
R=X126isa_dca_inline_argument((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r323dca_inline_argument(T323* C,T0* a1){
X126dca_inline_argument((/*RF2*/(C)->_expression/*4*/),a1);
}


void r323assertion_check(T323* C,T3 a1){
X126assertion_check((/*RF2*/(C)->_expression/*4*/),a1);
}


T0* r323result_type(T323* C){
T0* R=NULL;
R=X126result_type((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r323afd_check(T323* C){
X126afd_check((/*RF2*/(C)->_expression/*4*/));
}


T6 r323use_current(T323* C){
T6 R=0;
R=X126use_current((/*RF2*/(C)->_expression/*4*/));
return R;
}


T2 r323static_value(T323* C){
T2 R=0;
R=X126static_value((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r323c_declare_for_old(T323* C){
X126c_declare_for_old((/*RF2*/(C)->_expression/*4*/));
}


void r323compile_to_c_old(T323* C){
X126compile_to_c_old((/*RF2*/(C)->_expression/*4*/));
}


void r323mapping_c_target(T323* C,T0* a1){
X126mapping_c_target((/*RF2*/(C)->_expression/*4*/),a1);
}


T2 r323to_integer_or_error(T323* C){
T2 R=0;
R=X126to_integer_or_error((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r323is_pre_computable(T323* C){
T6 R=0;
R=X126is_pre_computable((/*RF2*/(C)->_expression/*4*/));
return R;
}


T0* r323add_comment(T323* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r323to_runnable(T323* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
_e=X126to_runnable((/*RF2*/(C)->_expression/*4*/),a1);
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))==((void*)(_e))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,_e,(/*RF2*/(C)->_comment/*8*/));
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r323collect_c_tmp(T323* C){
X126collect_c_tmp((/*RF2*/(C)->_expression/*4*/));
}


T6 r323is_current(T323* C){
T6 R=0;
R=X126is_current((/*RF2*/(C)->_expression/*4*/));
return R;
}


T104 r323start_position(T323* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*4*/)),&se_tmp0));
}
return R;
}


T0* r323static_result_base_class(T323* C){
T0* R=NULL;
R=X126static_result_base_class((/*RF2*/(C)->_expression/*4*/));
return R;
}
T0*oBC252result_type=NULL;
int fBC252result_type=0;


T0* r252result_type(void){
if(fBC252result_type==0){fBC252result_type=1;{
T104 _unknown_position={NULL,0};
{T365*n=((T365*)se_malloc(sizeof(*n))/*16*/);
*n=M365;
oBC252result_type=((T0*)n);
r365make(n,_unknown_position);
}
}}
return oBC252result_type;
}


T0* r252add_comment(T252* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r233run_feature_match(T233* C,T0* a1){
r233run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r233runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X126to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
r233fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r233call_proc_call_stupid_switch(T233* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245stupid_switch*/r245stupid_switch((T245*)((/*RF2*/(C)->_arguments/*8*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X126is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r59same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X96stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X126stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r233is_static(T233* C){
T6 R=0;
/*[IF*/
if(X62is_integer(r233result_type(C))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r233arg1(C)))){
R=1;
(/*SFN*/C->_static_value_mem)=(X126static_value((/*RF2*/(C)->_target/*4*/)))*(X126static_value(r233arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r233operator(void){
T0* R=NULL;
R=((T0*)ms21_42);
return R;
}


void r233with(T233* 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;
r233run_feature_match(C,a5);
}


void r233run_feature_has_result(T233* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
r233fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r233stupid_switch(T233* C,T0* a1){
T6 R=0;
R=r233call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r233result_type(C)));
}
/*FI]*/
return R;
}


void r233make(T233* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r233operator(),a2);
(/*SFN*/C->_feature_name)=((T0*)n);
}
{T245*n=((T245*)se_malloc(sizeof(*n))/*16*/);
*n=M245;
/*[IRF3.3make_1*/((((T245*)(n)))->_first_one)=(a3);
/*]*/
(/*SFN*/C->_arguments)=((T0*)n);
}
}


void r233fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r233to_integer_error(T233* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position(/*(IRF4.6start_position*/(/*RF2*/(((T235*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
r82print_as_error((T82*)(oBC19eh));
}


T0* r233arg1(T233* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r233assertion_check(T233* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T104 se_tmp0;
X96vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T235*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X126assertion_check(r233arg1(C),a1);
}


T0* r233result_type(T233* C){
T0* R=NULL;
T0* _tla=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X62is_like_current(R)){
R=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X126result_type(r233arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r233afd_check(T233* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X62run_class(X126result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r63count(((T63*)_running)))>(1)){
r432update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r233use_current(T233* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X126use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


void r233c_declare_for_old(T233* C){
X126c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245c_declare_for_old*/r245c_declare_for_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r233compile_to_c_old(T233* C){
X126compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245compile_to_c_old*/r245compile_to_c_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T0* r233runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X245to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X245start_position(a1),&se_tmp0)));
}
r233fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r233mapping_c_target(T233* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r233result_type(C));
/*[IF*/
if(X62is_reference(_actual_type)){
/*[IF*/
if(X62is_reference(a1)){
X62mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T233* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T233* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T233* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T233* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T233* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r233run_feature_for(T233* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X126result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X62run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
R=r61run_feature_for(((T61*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms168_608361995);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T2 r233to_integer_or_error(T233* C){
T2 R=0;
r233to_integer_error(C);
return R;
}


T0* r233add_comment(T233* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r233to_runnable(T233* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r233runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r233runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r233arg1(C));
/*[IF*/
if(X62is_real(_argument_type)){
/*[IF*/
if(X62is_integer(_target_type)){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X62is_double(_argument_type)){
/*[IF*/
if((X62is_integer(_target_type))||(X62is_real(_target_type))){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r233run_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;
r233run_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{
{T233*n=((T233*)se_malloc(sizeof(*n))/*24*/);
*n=M233;
r233with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}

