/*
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* r59id_provider(void){
if(fBC19id_provider==0){fBC19id_provider=1;{
{T42*n=((T42*)se_malloc(sizeof(*n))/*4*/);
*n=M42;
oBC19id_provider=((T0*)n);
r42make(n);
}
}}
return oBC19id_provider;
}


void r59id_extra_information(T0* a1,T0* a2){
T0* _path=NULL;
T0* _rc=NULL;
T0* _bc=NULL;
/*[IF*/
if((a2)==((void*)(((T0*)ms21_12184)))){
}
 else if(r69has((T69*)(oBC59run_class_dictionary),a2)){
_rc=r69at((T69*)(oBC59run_class_dictionary),a2);
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
}
 else if(r79has((T79*)(oBC59base_class_dictionary),a2)){
_bc=r79at((T79*)(oBC59base_class_dictionary),a2);
}
/*FI]*/
/*[IF*/
if((_bc)!=((void*)(NULL))){
r58put_string(((T58*)a1),((T0*)ms59_601041072));
_path=(/*RF2*/(((T61*)_bc))->_path/*4*/);
r58put_string(((T58*)a1),_path);
/*[IRF3.6put_character*/{T58* C1=((T58*)a1);
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*[IRF3.6put_character*/{T58* C1=((T58*)a1);
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
r61id_extra_information(((T61*)_bc),a1);
}
/*FI]*/
/*[IF*/
if((_rc)!=((void*)(NULL))){
r60id_extra_information(((T60*)_rc),a1);
}
/*FI]*/
}


void r59incr_magic_count(T59* C){
(/*SFN*/C->_magic_count)=((/*RF2*/(C)->_magic_count/*7*/))+(1);
}


T0* r59memory_class_used(void){
T0* R=NULL;
/*[IF*/
if(r79has((T79*)(oBC59base_class_dictionary),((T0*)ms21_295849))){
R=r79at((T79*)(oBC59base_class_dictionary),((T0*)ms21_295849));
}
/*FI]*/
return R;
}
T0*oBC59loading_path=NULL;
int fBC59loading_path=0;


T0* r59loading_path(void){
if(fBC59loading_path==0){fBC59loading_path=1;{
{T52*n=((T52*)se_malloc(sizeof(*n))/*20*/);
*n=M52;
oBC59loading_path=((T0*)n);
r52with_capacity(n,32,1);
}
r48read_loading_path_in((T48*)(r59system_tools()),oBC59loading_path);
}}
return oBC59loading_path;
}


T0* r59run_class(T0* a1){
T0* R=NULL;
T0* _rtm=NULL;
_rtm=X62run_time_mark(a1);
/*[IF*/
if(r69has((T69*)(oBC59run_class_dictionary),_rtm)){
R=r69at((T69*)(oBC59run_class_dictionary),_rtm);
}
else{
{T60*n=((T60*)se_malloc(sizeof(*n))/*51*/);
*n=M60;
r60make(n,a1,_rtm);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r59is_tagged(T0* a1){
T6 R=0;
T0* _r=NULL;
T2 _i=0;
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((R)||((_i)<(0))))
{
_r=(/*RF2*/((T60*)(/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/))->_running/*21*/);
/*[IF*/
if((_r)==((void*)(NULL))){
}
 else if(r63fast_has(((T63*)_r),a1)){
R=(r63count(((T63*)_r)))>(1);
}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


void r59get_started(T59* C,T0* a1,T0* a2){
T2 _magic=0;
T0* _root_type=NULL;
T0* _root_proc=NULL;
T0* _root=NULL;
T0* _root_proc_name=NULL;
r38put_string((T38*)(oBC19echo),((T0*)ms59_2140009595));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3set_generator_used*/((((T57*)((T57*)(oBC19run_control))))->_generator_used)=(1);
/*]*/
/*[IRF3.3set_generating_type_used*/((((T57*)((T57*)(oBC19run_control))))->_generating_type_used)=(1);
/*]*/
}
/*FI]*/
r38put_string((T38*)(oBC19echo),((T0*)ms59_205254600));
_root=r59load_class(C,a1);
/*[IF*/
if((_root)==((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms59_313299890);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
else{
_root_proc_name=r61root_procedure_name(((T61*)_root),a2);
_root_proc=r61root_procedure(((T61*)_root),_root_proc_name);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(((T150*)_root_proc))->_arguments/*20*/))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r150start_position(((T150*)_root_proc)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms59_1180143814);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms59_839960169);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_root_type=(/*RF2*/((T60*)(r59run_class_for((/*RF2*/((T77*)((/*RF2*/(((T61*)_root))->_name/*18*/)))->_to_string/*8*/))))->_current_type/*0*/);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
(/*SFN*/C->_root_procedure)=r150to_run_feature(((T150*)_root_proc),_root_type,_root_proc_name);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
r131fill_up((T131*)(oBC19cecil_pool));
r38put_string((T38*)(oBC19echo),((T0*)ms59_1378261354));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
/*[IRF3.2falling_down*/{T2 _i=0;
T0* _rc=NULL;
/*[IF*/
if((/*RF2*/((T57*)(oBC19run_control))->_generator_used/*10*/)){
((/*UT*/(void)((T368*)(r59type_string()))),r368set_at_run_time());
}
/*FI]*/
/*[IRF3.2falling_down*//*[IF*/
if(((/*RF2*/((T471*)(oBC470mangling_dictionary))->_count/*12*/))>(0)){
((/*UT*/(void)((T368*)(r470type_string()))),r368set_at_run_time());
}
/*FI]*/
/*]*/
/*[IRF3.2falling_down*/{T2 _i=0;
_i=/*SSWARF2*//*X155upper*/(/*RF2*/((T155*)(oBC474registered))->_upper/*12*/);
while (!((_i)<(0)))
{
r432update_with(X155item(oBC474registered,_i));
_i=(_i)-(1);
}
}/*]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60falling_down(((T60*)_rc));
_i=(_i)-(1);
}
}/*]*/
while (!(((_magic)==((/*RF2*/(C)->_magic_count/*7*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_magic=(/*RF2*/(C)->_magic_count/*7*/);
/*[IRF3.2falling_down*/{T2 _i=0;
T0* _rc=NULL;
/*[IF*/
if((/*RF2*/((T57*)(oBC19run_control))->_generator_used/*10*/)){
((/*UT*/(void)((T368*)(r59type_string()))),r368set_at_run_time());
}
/*FI]*/
/*[IRF3.2falling_down*//*[IF*/
if(((/*RF2*/((T471*)(oBC470mangling_dictionary))->_count/*12*/))>(0)){
((/*UT*/(void)((T368*)(r470type_string()))),r368set_at_run_time());
}
/*FI]*/
/*]*/
/*[IRF3.2falling_down*/{T2 _i=0;
_i=/*SSWARF2*//*X155upper*/(/*RF2*/((T155*)(oBC474registered))->_upper/*12*/);
while (!((_i)<(0)))
{
r432update_with(X155item(oBC474registered,_i));
_i=(_i)-(1);
}
}/*]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60falling_down(((T60*)_rc));
_i=(_i)-(1);
}
}/*]*/
}
r38put_string((T38*)(oBC19echo),((T0*)ms59_981892978));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
r38put_string((T38*)(oBC19echo),((T0*)ms59_1680944214));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
/*[IRF3.2afd_check*/{T2 _i=0;
T0* _rc=NULL;
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60afd_check(((T60*)_rc));
_i=(_i)-(1);
}
r131afd_check((T131*)(oBC19cecil_pool));
}/*]*/
while (!(((_magic)==((/*RF2*/(C)->_magic_count/*7*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_magic=(/*RF2*/(C)->_magic_count/*7*/);
/*[IRF3.2afd_check*/{T2 _i=0;
T0* _rc=NULL;
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60afd_check(((T60*)_rc));
_i=(_i)-(1);
}
r131afd_check((T131*)(oBC19cecil_pool));
}/*]*/
}
/*[IRF3.2check_for_deferred*/{T0* _rc=NULL;
T0* _rf9=NULL;
T2 _i=0;
_i=(/*RF2*/((T502*)(oBC59rf9_memory))->_upper/*12*/);
r38print_count((T38*)(oBC19echo),((T0*)ms59_177229903),(_i)+(1));
while (!((_i)<(0)))
{
_rf9=/*(IRF4.6item*/((/*RF2*/((T502*)(oBC59rf9_memory))->_storage/*4*/))[_i]/*)*/;
_rc=X62run_class(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf9))->_current_type/*8*/));
/*[IF*/
if((/*RF2*/(((T60*)_rc))->_at_run_time/*20*/)){
/*[IRF3.6append*/{T0* b1=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)_rf9))->_name/*16*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms59_2129633545);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62written_mark(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf9))->_current_type/*8*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r59warning((*(se_tmp0=X96start_position(_rf9),&se_tmp0)),((T0*)ms20_46));
}
}
/*FI]*/
_i=(_i)-(1);
}
}/*]*/
/*[IRF3.2check_generic_formal_arguments*/{T2 _i=0;
_i=1;
while (!((_i)>((/*RF2*/((T79*)(oBC59base_class_dictionary))->_count/*8*/))))
{
r61check_generic_formal_arguments((T61*)(r79item((T79*)(oBC59base_class_dictionary),_i)));
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.2afd*/{int _switch=0;
T0* _rf=NULL;
T2 _count2=0;
T2 _count1=0;
T0* _dictionary2=NULL;
_count1=1;
while (!((_count1)>((/*RF2*/((T450*)(oBC432dictionary))->_count/*8*/))))
{
_dictionary2=r450item((T450*)(oBC432dictionary),_count1);
_count2=1;
while (!((_count2)>((/*RF2*/(((T144*)_dictionary2))->_count/*8*/))))
{
_rf=r144item(((T144*)_dictionary2),_count2);
r449afd(_rf);
_count2=(_count2)+(1);
}
_count1=(_count1)+(1);
}
}/*]*/
r38put_string((T38*)(oBC19echo),((T0*)ms59_1025105601));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
r440finish_falling_down((T440*)(oBC19conversion_handler));
r38put_string((T38*)(oBC19echo),((T0*)ms59_1469467630));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
while (!(((_magic)==((/*RF2*/(C)->_magic_count/*7*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_magic=(/*RF2*/(C)->_magic_count/*7*/);
/*[IRF3.2falling_down*/{T2 _i=0;
T0* _rc=NULL;
/*[IF*/
if((/*RF2*/((T57*)(oBC19run_control))->_generator_used/*10*/)){
((/*UT*/(void)((T368*)(r59type_string()))),r368set_at_run_time());
}
/*FI]*/
/*[IRF3.2falling_down*//*[IF*/
if(((/*RF2*/((T471*)(oBC470mangling_dictionary))->_count/*12*/))>(0)){
((/*UT*/(void)((T368*)(r470type_string()))),r368set_at_run_time());
}
/*FI]*/
/*]*/
/*[IRF3.2falling_down*/{T2 _i=0;
_i=/*SSWARF2*//*X155upper*/(/*RF2*/((T155*)(oBC474registered))->_upper/*12*/);
while (!((_i)<(0)))
{
r432update_with(X155item(oBC474registered,_i));
_i=(_i)-(1);
}
}/*]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60falling_down(((T60*)_rc));
_i=(_i)-(1);
}
}/*]*/
}
r38put_string((T38*)(oBC19echo),((T0*)ms59_1024938238));
r38put_integer((T38*)(oBC19echo),(/*RF2*/(C)->_magic_count/*7*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_22915015));
}
/*FI]*/
/*[IF*/
if(!(r82is_empty())){
/*[IRF3.6append*/{T0* b1=((T0*)ms59_297303074);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
(/*SFN*/C->_is_ready)=1;
r38print_count((T38*)(oBC19echo),((T0*)ms59_604558099),(/*RF2*/((T79*)(oBC59base_class_dictionary))->_count/*8*/));
}
/*FI]*/
}


void r354c_initialize_in(T354* C,T0* a1){
X62c_initialize_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


void r354c_type_for_external_in(T354* C,T0* a1){
/*[IF*/
if(r354is_reference(C)){
r7append(((T7*)a1),((T0*)ms20_18150));
r7extend(((T7*)a1),((T3)'\52'));
}
else{
r354c_type_for_result_in(C,a1);
}
/*FI]*/
}


T0* r354generic_list(T354* C){
T0* R=NULL;
/*[IF*/
if(r354is_generic(C)){
R=X62generic_list((/*RF2*/(C)->_run_type/*20*/));
}
else{
r354fatal_error_generic_list(C);
}
/*FI]*/
return R;
}
T0*oBC19c_frame_descriptor_format=NULL;


T0* r354written_mark(void){
T0* R=NULL;
R=((T0*)ms21_2038667775);
return R;
}


T6 r354is_bit(T354* C){
T6 R=0;
R=X62is_bit((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354has_creation(T354* C,T0* a1){
T6 R=0;
R=X62has_creation((/*RF2*/(C)->_run_type/*20*/),a1);
return R;
}


T0* r354run_time_mark(T354* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_type/*20*/))!=((void*)(NULL))){
R=X62run_time_mark((/*RF2*/(C)->_run_type/*20*/));
}
/*FI]*/
return R;
}


T6 r354is_any(T354* C){
T6 R=0;
R=X62is_any((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T2 r354c_sizeof(T354* C){
T2 R=0;
R=X62c_sizeof((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354c_type_for_result_in(T354* C,T0* a1){
X62c_type_for_result_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


T6 r354is_native_array(T354* C){
T6 R=0;
T0* _tna=NULL;
_tna=NULL;
R=(_tna)!=((void*)(NULL));
return R;
}


void r354gc_mark_in(T354* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(r354id(C),a1);
}


void r354just_before_gc_mark_in(T354* C,T0* a1){
X62just_before_gc_mark_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


void r354with(T354* C,T0* a1,T0* a2){
{T104 se_tmp0;
(/*SFN*/C->_start_position)=(/*RF2*/(((T354*)a1))->_start_position/*12*/);
}
(/*SFN*/C->_run_type)=a2;
}


T6 r354is_pointer(T354* C){
T6 R=0;
R=X62is_pointer((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T2 r354id(T354* C){
T2 R=0;
R=(/*RF2*/((T60*)(r354run_class(C)))->_id/*16*/);
return R;
}


void r354mapping_cast(T354* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62mapping_cast_buffer))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62mapping_cast_buffer),((T3)'\50'));
r354c_type_for_target_in(C,oBC62mapping_cast_buffer);
r7extend((T7*)(oBC62mapping_cast_buffer),((T3)'\51'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62mapping_cast_buffer);
/*]*/
}


T0* r354static_base_class_name(T354* C){
T0* R=NULL;
{T104 se_tmp0;
R=r104base_class_name(&((/*RF2*/(C)->_start_position/*12*/)));
}
return R;
}


T6 r354is_real(T354* C){
T6 R=0;
R=X62is_real((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_none(T354* C){
T6 R=0;
R=X62is_none((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354c_initialize(T354* C){
X62c_initialize((/*RF2*/(C)->_run_type/*20*/));
}


T6 r354need_gc_mark_function(T354* C){
T6 R=0;
R=X62need_gc_mark_function((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354fatal_error_generic_list(T354* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r354c_type_for_argument_in(T354* C,T0* a1){
X62c_type_for_argument_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


T6 r354is_integer(T354* C){
T6 R=0;
R=X62is_integer((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354c_frame_descriptor(T354* C){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
/*[IF*/
if(r354is_reference(C)){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'R'));
}
else{
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'E'));
}
/*FI]*/
r2append_in(r354id(C),oBC19c_frame_descriptor_format);
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
}


T0* r354base_class_name(T354* C){
T0* R=NULL;
R=X62base_class_name((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_character(T354* C){
T6 R=0;
R=X62is_character((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_expanded(T354* C){
T6 R=0;
R=X62is_expanded((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_array(T354* C){
T6 R=0;
R=X62is_array((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354gc_info_in(T354* C,T0* a1){
X62gc_info_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


T0* r354base_class(T354* C){
T0* R=NULL;
T0* _bcn=NULL;
/*[IF*/
if(((/*RF2*/(C)->_base_class_memory/*4*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
_bcn=r354base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
(/*SFN*/C->_base_class_memory)=r77base_class(((T77*)_bcn));
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_432936020);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type((T0*)C,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r354is_dummy_expanded(T354* C){
T6 R=0;
R=X62is_dummy_expanded((/*RF2*/(C)->_run_type/*20*/));
return R;
}
T0*oBC62mapping_cast_buffer=NULL;


T6 r354need_c_struct(T354* C){
T6 R=0;
R=X62need_c_struct((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_reference(T354* C){
T6 R=0;
R=X62is_reference((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354gc_define1(T354* C){
X62gc_define1((/*RF2*/(C)->_run_type/*20*/));
}


void r354gc_define2(T354* C){
X62gc_define2((/*RF2*/(C)->_run_type/*20*/));
}


void r354c_type_for_target_in(T354* C,T0* a1){
X62c_type_for_target_in((/*RF2*/(C)->_run_type/*20*/),a1);
}


T0* r354expanded_initializer(T354* C){
T0* R=NULL;
R=X62expanded_initializer((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T0* r354actual_reference(T354* C,T0* a1){
T0* R=NULL;
R=X62actual_reference((/*RF2*/(C)->_run_type/*20*/),a1);
return R;
}


T6 r354is_a_in(T354* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r354written_mark())==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(/*RF2*/(((T60*)a2))->_current_type/*0*/);
_t1=r354to_runnable(C,_ct);
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r354demangling_in(T354* C,T0* a1){
/*[IF*/
if(r354is_reference(C)){
r7extend(((T7*)a1),((T3)'R'));
}
else{
r7extend(((T7*)a1),((T3)'E'));
}
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),r354run_time_mark(C));
}


T6 r354is_generic(T354* C){
T6 R=0;
R=X62is_generic((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_double(T354* C){
T6 R=0;
R=X62is_double((/*RF2*/(C)->_run_type/*20*/));
return R;
}


void r354id_extra_information(T354* C,T0* a1){
r58put_string(((T58*)a1),((T0*)ms62_1360462097));
/*[IF*/
if(r354is_reference(C)){
r58put_string(((T58*)a1),((T0*)ms62_18257));
}
else{
r58put_string(((T58*)a1),((T0*)ms62_3337));
}
/*FI]*/
}


T6 r354is_user_expanded(T354* C){
T6 R=0;
R=X62is_user_expanded((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T6 r354is_a(T354* C,T0* a1){
T6 R=0;
/*[IF*/
if(X62is_like_current(a1)){
R=1;
}
else{
R=X62is_a((/*RF2*/(C)->_run_type/*20*/),a1);
}
/*FI]*/
return R;
}


T6 r354is_boolean(T354* C){
T6 R=0;
R=X62is_boolean((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T0* r354to_runnable(T354* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_type/*20*/))==((void*)(NULL))){
(/*SFN*/C->_run_type)=a1;
R=((T0*)(C));
}
 else if(((/*RF2*/(C)->_run_type/*20*/))==((void*)(a1))){
R=((T0*)(C));
}
else{
{T354*n=((T354*)se_malloc(sizeof(*n))/*24*/);
*n=M354;
r354with(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r354is_string(T354* C){
T6 R=0;
R=X62is_string((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T0* r354run_class(T354* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_class_memory/*8*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
 else if(/*(IRF4.7is_run_type*/((/*RF2*/(C)->_run_type/*20*/))!=(NULL)/*)*/){
(/*SFN*/C->_run_class_memory)=r59run_class((/*RF2*/(C)->_run_type/*20*/));
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
/*FI]*/
return R;
}


void r354c_header_pass1(T354* C){
X62c_header_pass1((/*RF2*/(C)->_run_type/*20*/));
}


void r354c_header_pass2(T354* C){
X62c_header_pass2((/*RF2*/(C)->_run_type/*20*/));
}


void r354c_header_pass3(T354* C){
X62c_header_pass3((/*RF2*/(C)->_run_type/*20*/));
}


void r354c_header_pass4(T354* C){
X62c_header_pass4((/*RF2*/(C)->_run_type/*20*/));
}


T6 r354is_basic_eiffel_expanded(T354* C){
T6 R=0;
R=X62is_basic_eiffel_expanded((/*RF2*/(C)->_run_type/*20*/));
return R;
}


T0* r354smallest_ancestor(T354* C,T0* a1){
T0* R=NULL;
R=X62smallest_ancestor((/*RF2*/(C)->_run_type/*20*/),a1);
return R;
}


void r354gc_call_new_in(T354* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(r354id(C),a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


T2 r318compile_to_c(T318* C){
T2 R=0;
T2 _i=0;
T2 _previous=0;
T2 _state=0;
_i=0;
while (!((_state)==(2)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if((_i)>((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))){
_state=2;
R=_previous;
}
else{
_previous=r317compile_to_c((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),0);
/*[INSPECT*/
{int z2=_previous;
switch(z2){
case 24:
_state=1;
break;
case 23:
break;
default:;
R=22;
_state=2;
}
}/*INSPECT]*/
}
/*FI]*/
break;
default:;
/*[IF*/
if((_i)>((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))){
_state=2;
/*[INSPECT*/
{int z2=_previous;
switch(z2){
case 22:
R=22;
break;
default:;
R=24;
}
}/*INSPECT]*/
}
else{
_previous=r317compile_to_c((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),1);
/*[INSPECT*/
{int z2=_previous;
switch(z2){
case 24:
break;
case 23:
break;
default:;
_state=2;
R=22;
}
}/*INSPECT]*/
}
/*FI]*/
}
}/*INSPECT]*/
_i=(_i)+(1);
}
return R;
}


T6 r318stupid_switch(T318* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
_i=(/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((!(R))||((_i)<(0))))
{
R=r317stupid_switch((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)-(1);
}
return R;
}


void r318make(T318* C,T0* a1){
{T319*n=((T319*)se_malloc(sizeof(*n))/*12*/);
*n=M319;
r319with_capacity(n,4);
(/*SFN*/C->_list)=((T0*)n);
}
r319add_last((T319*)((/*RF2*/(C)->_list/*0*/)),a1);
}


void r318afd_check(T318* C){
T2 _i=0;
_i=(/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r317afd_check((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}


T6 r318use_current(T318* C){
T6 R=0;
T2 _i=0;
_i=(/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!(((_i)<(0))||(R)))
{
R=r317use_current((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
return R;
}


T0* r318to_runnable(T318* C,T0* a1){
T0* R=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*4*/))!=((void*)(NULL))){
{T318*n=((T318*)se_malloc(sizeof(*n))/*8*/);
*n=M318;
r318make(n,/*(IRF4.6first*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/);
R=((T0*)n);
}
_i=(0)+(1);
while (!((_i)>((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))))
{
/*[IRF3.5add_last*/r319add_last(((T319*)((/*RF2*/(((T318*)R))->_list/*0*/))),/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/);
/*]*/
_i=(_i)+(1);
}
R=r318to_runnable(((T318*)R),a1);
}
else{
(/*SFN*/C->_current_type)=a1;
_i=0;
while (!(((_i)>((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
/*[IRF3.5put*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]=(r317to_runnable((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),a1));
/*]*/
_i=(_i)+(1);
}
R=((T0*)(C));
}
/*FI]*/
return R;
}


void r318collect_c_tmp(T318* C){
T2 _i=0;
_i=(/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r317collect_c_tmp((T317*)(/*(IRF4.6item*/((/*RF2*/((T319*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}


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


T6 r327includes_integer(T327* C,T2 a1){
T6 R=0;
T2 _i=0;
_i=0;
while (!((R)||((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))))
{
R=r326includes_integer((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)+(1);
}
return R;
}


void r327compile_to_c(T327* C,T104 a1){
T0* _last_compound=NULL;
T2 _i=0;
_i=0;
while (!((_i)==((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
r326compile_to_c((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)+(1);
/*[IF*/
if((_i)<((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms327_180037));
/*]*/
}
/*FI]*/
}
/*[IF*/
if((_i)>(0)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms327_180037));
/*]*/
}
/*FI]*/
/*[IF*/
if((r104is_unknown(&a1))&&(r57boost((T57*)(oBC19run_control)))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_last_compound=(/*RF2*/((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/))->_compound/*12*/);
/*[IF*/
if((_last_compound)!=((void*)(NULL))){
r159compile_to_c(((T159*)_last_compound));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r326compile_to_c((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
}
/*FI]*/
}


T6 r327stupid_switch(T327* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
_i=(/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/);
while (!((!(R))||((_i)<(0))))
{
R=r326stupid_switch((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)-(1);
}
return R;
}


T6 r327includes_integer_between(T327* C,T2 a1,T2 a2){
T6 R=0;
T2 _i=0;
_i=0;
while (!((R)||((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))))
{
R=r326includes_integer_between((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/),a1,a2);
_i=(_i)+(1);
}
return R;
}


void r327make(T327* C,T0* a1){
{T328*n=((T328*)se_malloc(sizeof(*n))/*12*/);
*n=M328;
r328with_capacity(n,4);
(/*SFN*/C->_list)=((T0*)n);
}
r328add_last((T328*)((/*RF2*/(C)->_list/*4*/)),a1);
}


T0* r327to_runnable_character(T327* 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=0;
while (!(((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e_when=r326to_runnable_character((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/),(T0*)C);
/*[IF*/
if((_e_when)==((void*)(NULL))){
{T104 se_tmp0;
r327error((*(se_tmp0=r327start_position(C),&se_tmp0)),((T0*)ms327_1942949944));
}
}
else{
/*[IRF3.5put*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]=(_e_when);
/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
R=((T0*)(C));
}
else{
{T327*n=((T327*)se_malloc(sizeof(*n))/*8*/);
*n=M327;
r327from_when_list(n,(T0*)C);
R=((T0*)n);
}
R=r327to_runnable_character(((T327*)R),a1);
}
/*FI]*/
return R;
}


void r327afd_check(T327* C){
T2 _i=0;
_i=(/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r326afd_check((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}


T6 r327use_current(T327* C){
T6 R=0;
T2 _i=0;
_i=(/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/);
while (!((R)||((_i)<(0))))
{
R=r326use_current((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
return R;
}


void r327from_when_list(T327* C,T0* a1){
T0* _e_when=NULL;
T2 _i=0;
(/*SFN*/C->_list)=r328twin((T328*)((/*RF2*/(((T327*)a1))->_list/*4*/)));
_i=0;
while (!((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
{T326*n=((T326*)se_malloc(sizeof(*n))/*28*/);
*n=M326;
r326from_e_when(n,/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/);
_e_when=((T0*)n);
}
/*[IRF3.5put*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]=(_e_when);
/*]*/
_i=(_i)+(1);
}
}


T0* r327to_runnable_integer(T327* 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=0;
while (!(((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e_when=r326to_runnable_integer((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/),(T0*)C);
/*[IF*/
if((_e_when)==((void*)(NULL))){
{T104 se_tmp0;
r327error((*(se_tmp0=r327start_position(C),&se_tmp0)),((T0*)ms327_1942949944));
}
}
else{
/*[IRF3.5put*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]=(_e_when);
/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
R=((T0*)(C));
}
else{
{T327*n=((T327*)se_malloc(sizeof(*n))/*8*/);
*n=M327;
r327from_when_list(n,(T0*)C);
R=((T0*)n);
}
R=r327to_runnable_integer(((T327*)R),a1);
}
/*FI]*/
return R;
}


T2 r327largest_range_of_values(T327* C){
T2 R=0;
T2 _range=0;
T2 _i=0;
_i=0;
while (!((_i)>((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
_range=r326largest_range_of_values((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
/*[IF*/
if((_range)>(R)){
R=_range;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}


void r327compile_to_c_switch(T327* C,T104 a1){
T0* _last_compound=NULL;
T2 _i=0;
_i=0;
while (!((_i)==((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_upper/*8*/))))
{
r326compile_to_c_switch((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)+(1);
}
/*[IF*/
if((r104is_unknown(&a1))&&(r57boost((T57*)(oBC19run_control)))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms327_244699380));
/*]*/
_last_compound=(/*RF2*/((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/))->_compound/*12*/);
/*[IF*/
if((_last_compound)!=((void*)(NULL))){
r159compile_to_c(((T159*)_last_compound));
}
/*FI]*/
}
else{
r326compile_to_c_switch((T326*)(/*(IRF4.6item*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[_i]/*)*/));
}
/*FI]*/
}


T104 r327start_position(T327* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(/*RF2*/((T326*)(/*(IRF4.6first*/((/*RF2*/((T328*)((/*RF2*/(C)->_list/*4*/)))->_storage/*0*/))[0]/*)*/))->_start_position/*0*/);
}
return R;
}


void r282run_feature_match(T282* C,T0* a1){
r282run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r282runnable_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)));
}
r282fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r282call_proc_call_stupid_switch(T282* 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 r282is_static(T282* C){
T6 R=0;
/*[IF*/
if(X62is_integer(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r282arg1(C)))){
R=1;
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))>=(X126static_value(r282arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r282operator(void){
T0* R=NULL;
R=((T0*)ms21_371);
return R;
}


void r282with(T282* 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;
r282run_feature_match(C,a5);
}


void r282run_feature_has_result(T282* 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*/));
}
r282fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


void r282compile_to_c(T282* C){
/*[IF*/
if((r57boost((T57*)(oBC19run_control)))&&(X62is_character(X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)))))){
r282c2c_cast_op(C,((T0*)ms20_11300605),((T0*)ms21_371));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T282* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r282stupid_switch(T282* C,T0* a1){
T6 R=0;
R=r282call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r282result_type(C)));
}
/*FI]*/
return R;
}


void r282make(T282* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r282operator(),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 r282fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r282to_integer_error(T282* 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* r282arg1(T282* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r282assertion_check(T282* 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(r282arg1(C),a1);
}


T0* r282result_type(T282* 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(r282arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r282afd_check(T282* 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 r282use_current(T282* 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 r282c2c_cast_op(T282* C,T0* a1,T0* a2){
/*[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.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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a2);
/*]*/
/*[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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r282arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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 r282c_declare_for_old(T282* 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 r282compile_to_c_old(T282* 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* r282runnable_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)));
}
r282fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r282mapping_c_target(T282* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r282result_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*/))));
}/*]*/
/*]*/
r282compile_to_c(C);
/*[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{
r282compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r282compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r282compile_to_c(C);
/*[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{
r282compile_to_c(C);
}
/*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* r282run_feature_for(T282* 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 r282to_integer_or_error(T282* C){
T2 R=0;
r282to_integer_error(C);
return R;
}


T0* r282add_comment(T282* 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* r282to_runnable(T282* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r282runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r282runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r282arg1(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=r282run_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;
r282run_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{
{T282*n=((T282*)se_malloc(sizeof(*n))/*24*/);
*n=M282;
r282with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r282collect_c_tmp(T282* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r282finalize(T282* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/);
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


T0* r282static_result_base_class(T282* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r278cmp_bit(T278* C,T6 a1,T0* a2){
T0* _tb=NULL;
_tb=a2;
if(NULL!=(_tb)){
switch(((T0*)_tb)->id){
case 372:case 373:
break;
default:
_tb=NULL;
}
}/*[IF*/
if(X136is_c_unsigned_ptr(_tb)){
/*[IF*/
if(a1){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\41');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms279_10512915));
/*]*/
X126mapping_c_target((/*RF2*/(C)->_target/*4*/),a2);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1285));
/*]*/
X126mapping_c_target(r278arg1(C),a2);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms279_108351709));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X136id(_tb));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms279_246));
/*]*/
}
else{
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if(a1){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_366));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_226));
/*]*/
}
/*FI]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r278arg1(C));
/*[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]*/
}


T0* r278runnable_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)));
}
r278fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r278is_static_eq_void(T0* a1){
T6 R=0;
T0* _rt=NULL;
/*[IF*/
if(X126is_current(a1)){
R=1;
}
 else if(X126is_manifest_string(a1)){
R=1;
}
 else if(X126is_manifest_array(a1)){
R=1;
}
else{
_rt=X62run_type(X126result_type(a1));
/*[IF*/
if(X62is_expanded(_rt)){
/*[IF*/
if(X126can_be_dropped(a1)){
R=1;
}
/*FI]*/
}
 else if(X126is_static(a1)){
/*[IF*/
if((X126static_value(a1))==(0)){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r278call_proc_call_stupid_switch(T278* 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(/*(IRF4.1run_feature*/NULL/*)*/,a1)){
R=(X96stupid_switch(/*(IRF4.1run_feature*/NULL/*)*/,a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X126stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r278is_static(T278* C){
T6 R=0;
/*[IF*/
if(X126is_void((/*RF2*/(C)->_target/*4*/))){
R=r278is_static_eq_void(r278arg1(C));
}
 else if(X126is_void(r278arg1(C))){
R=r278is_static_eq_void((/*RF2*/(C)->_target/*4*/));
}
 else if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r278arg1(C)))){
R=1;
}
/*FI]*/
return R;
}


T0* r278operator(void){
T0* R=NULL;
R=((T0*)ms21_61);
return R;
}


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


void r278compile_to_c(T278* C){
T0* _at=NULL;
T0* _tt=NULL;
_tt=X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)));
_at=X62run_type(X126result_type(r278arg1(C)));
/*[IF*/
if(X62is_expanded(_tt)){
/*[IF*/
if(X62is_expanded(_at)){
/*[IF*/
if(X62is_user_expanded(_tt)){
r278cmp_user_expanded(C,1,_tt);
}
 else if(X62is_basic_eiffel_expanded(_tt)){
r278cmp_basic_eiffel_expanded(C,1,_at,_tt);
}
 else if(X62is_bit(_tt)){
r278cmp_bit(C,1,_tt);
}
else{
r278cmp_basic_ref(C,1);
}
/*FI]*/
}
else{
r278c2c_exp_ref((/*RF2*/(C)->_target/*4*/),_tt,r278arg1(C),_at);
}
/*FI]*/
}
 else if(X62is_expanded(_at)){
r278c2c_exp_ref(r278arg1(C),_at,(/*RF2*/(C)->_target/*4*/),_tt);
}
else{
r278cmp_basic_ref(C,1);
}
/*FI]*/
}


void r278check_comparison(T278* C,T0* a1){
T0* _at=NULL;
T0* _tt=NULL;
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_tt=X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)));
_at=X62run_type(X126result_type(r278arg1(C)));
/*[IF*/
if(X62is_none(_tt)){
}
 else if(X62is_none(_at)){
}
 else if(X62is_reference(_tt)){
/*[IF*/
if(X62is_reference(_at)){
}
 else if(!(X62is_a(_at,_tt))){
r278error_comparison(C,((T0*)ms279_1373128003),a1);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_expanded(_at)){
/*[IF*/
if(X62is_basic_eiffel_expanded(_at)){
/*[IF*/
if(X62is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X62is_a(_at,_tt)){
}
else{
r278error_comparison(C,((T0*)ms279_1826154197),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(X62is_bit(_tt)){
r278bit_limitation(C,_tt,_at);
}
 else if(!(X62is_a(_at,_tt))){
r278error_comparison(C,((T0*)ms279_1826154197a),a1);
}
/*FI]*/
}
 else if(!(X62is_a(_tt,_at))){
r278error_comparison(C,((T0*)ms279_544289339),a1);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r278stupid_switch(T278* C,T0* a1){
T6 R=0;
R=r278call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(/*(IRF4.8result_type*/r278type_boolean()/*)*/));
}
/*FI]*/
return R;
}


void r278make(T278* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r278operator(),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 r278error_comparison(T278* C,T0* a1,T0* a2){
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms279_1808090188);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms279_1379665550);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a2,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}


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


void r278dca_inline(T278* C,T0* 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*/))));
}/*]*/
/*]*/
r83put_target_as_value((T83*)(oBC19cpp));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if((/*(IRF4.6first*/((/*RF2*/((T7*)(r278operator()))->_storage/*0*/))[0]/*)*/)==(((T3)'\75'))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_366));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_226));
/*]*/
}
/*FI]*/
/*[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*/))));
}/*]*/
/*]*/
X126dca_inline_argument(r278arg1(C),a1);
/*[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 r278to_integer_error(T278* 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* r278arg1(T278* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r278assertion_check(T278* C,T3 a1){
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X126assertion_check(r278arg1(C),a1);
}


void r278afd_check(T278* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r278use_current(T278* C){
T6 R=0;
R=(X126use_current((/*RF2*/(C)->_target/*4*/)))||(X126use_current(r278arg1(C)));
return R;
}
T0*oBC19type_boolean=NULL;
int fBC19type_boolean=0;


T0* r278type_boolean(void){
if(fBC19type_boolean==0){fBC19type_boolean=1;{
T104 _unknown_position={NULL,0};
{T360*n=((T360*)se_malloc(sizeof(*n))/*16*/);
*n=M360;
oBC19type_boolean=((T0*)n);
r360make(n,_unknown_position);
}
}}
return oBC19type_boolean;
}


T2 r278static_value(T278* C){
T2 R=0;
/*[IF*/
if(X126is_void((/*RF2*/(C)->_target/*4*/))){
R=r278static_eq_void(r278arg1(C));
}
 else if(X126is_void(r278arg1(C))){
R=r278static_eq_void((/*RF2*/(C)->_target/*4*/));
}
 else if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r278arg1(C)))){
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))==(X126static_value(r278arg1(C)))){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r278cmp_basic_ref(T278* C,T6 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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if(a1){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_366));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_226));
/*]*/
}
/*FI]*/
/*[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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1079001));
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r278arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[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 r278c_declare_for_old(T278* 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 r278cmp_user_expanded(T278* C,T6 a1,T0* a2){
T2 _mem_id=0;
/*[IF*/
if(X62is_dummy_expanded(a2)){
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r278arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if(a1){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'1');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*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*/))));
}/*]*/
/*]*/
}
else{
_mem_id=X62id(a2);
/*[IF*/
if(a1){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\41');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_2187619));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_mem_id);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_240a));
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1285));
/*]*/
X126compile_to_c(r278arg1(C));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_246));
/*]*/
}
/*FI]*/
}


void r278compile_to_c_old(T278* 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* r278runnable_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)));
}
r278fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r278mapping_c_target(T278* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(/*(IRF4.8result_type*/r278type_boolean()/*)*/);
/*[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*/))));
}/*]*/
/*]*/
r278compile_to_c(C);
/*[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{
r278compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r278compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r278compile_to_c(C);
/*[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{
r278compile_to_c(C);
}
/*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]*/
}


void r278c2c_exp_ref(T0* a1,T0* a2,T0* a3,T0* a4){
/*[IF*/
if(X126is_void(a3)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_240a));
/*]*/
X126compile_to_c(a1);
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_240a));
/*]*/
X126compile_to_c(a1);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1285));
/*]*/
X126compile_to_c(a3);
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms278_6506));
/*]*/
}


T2 r278to_integer_or_error(T278* C){
T2 R=0;
r278to_integer_error(C);
return R;
}


void r278bit_limitation(T278* C,T0* a1,T0* a2){
T0* _b2=NULL;
T0* _b1=NULL;
_b1=a1;
if(NULL!=(_b1)){
switch(((T0*)_b1)->id){
case 372:case 373:
break;
default:
_b1=NULL;
}
}_b2=a2;
if(NULL!=(_b2)){
switch(((T0*)_b2)->id){
case 372:case 373:
break;
default:
_b2=NULL;
}
}/*[IF*/
if((X136nb(_b1))!=(X136nb(_b2))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms279_1673400454);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(_b1,((T0*)ms279_35407));
r82add_type(_b2,((T0*)ms279_1973901270));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}


T0* r278add_comment(T278* 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;
}


T2 r278static_eq_void(T0* a1){
T2 R=0;
T0* _rt=NULL;
/*[IF*/
if(X126is_current(a1)){
}
 else if(X126is_manifest_string(a1)){
}
 else if(X126is_manifest_array(a1)){
}
else{
_rt=X62run_type(X126result_type(a1));
/*[IF*/
if(X62is_expanded(_rt)){
/*[IF*/
if(X126can_be_dropped(a1)){
R=0;
}
/*FI]*/
}
 else if(X126is_static(a1)){
/*[IF*/
if((X126static_value(a1))==(0)){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r278to_runnable(T278* C,T0* a1){
T0* R=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r278runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r278runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
/*[IF*/
if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T278*n=((T278*)se_malloc(sizeof(*n))/*16*/);
*n=M278;
r278with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a);
R=((T0*)n);
}
}
/*FI]*/
r278check_comparison(((T278*)R),a1);
return R;
}


void r278collect_c_tmp(T278* C){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T0* r278static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_1339128));
return R;
}


void r278cmp_basic_eiffel_expanded(T278* C,T6 a1,T0* a2,T0* a3){
T0* _cast=NULL;
/*[IF*/
if((X62is_double(a2))||(X62is_double(a3))){
_cast=((T0*)ms279_162070);
}
 else if((X62is_real(a2))||(X62is_real(a2))){
_cast=((T0*)ms279_162045);
}
/*FI]*/
/*[IF*/
if((_cast)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_cast);
/*]*/
}
/*FI]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_cast)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_246));
/*]*/
}
/*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*/))));
}/*]*/
/*]*/
/*[IF*/
if(a1){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_366));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_226));
/*]*/
}
/*FI]*/
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if((_cast)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_cast);
/*]*/
}
/*FI]*/
X126compile_to_c(r278arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[IF*/
if((_cast)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_246));
/*]*/
}
/*FI]*/
}


void r310compile_to_c(T310* C){
/*[IF*/
if((r57all_check((T57*)(oBC19run_control)))&&(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL)))){
r311compile_to_c((T311*)((/*RF2*/(C)->_check_invariant/*4*/)));
}
/*FI]*/
}


void r310make(T310* C,T104 a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T311*n=((T311*)se_malloc(sizeof(*n))/*24*/);
*n=M311;
r311make(n,a1,a2,a3);
(/*SFN*/C->_check_invariant)=((T0*)n);
}
}
/*FI]*/
}


void r310afd_check(T310* C){
/*[IF*/
if((r57all_check((T57*)(oBC19run_control)))&&(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL)))){
r311afd_check((T311*)((/*RF2*/(C)->_check_invariant/*4*/)));
}
/*FI]*/
}


T6 r310use_current(T310* C){
T6 R=0;
/*[IF*/
if((r57all_check((T57*)(oBC19run_control)))&&(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL)))){
R=r311use_current((T311*)((/*RF2*/(C)->_check_invariant/*4*/)));
}
/*FI]*/
return R;
}


T6 r310is_pre_computable(T310* C){
T6 R=0;
/*[IF*/
if((r57all_check((T57*)(oBC19run_control)))&&(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL)))){
R=r311is_pre_computable((T311*)((/*RF2*/(C)->_check_invariant/*4*/)));
}
else{
R=1;
}
/*FI]*/
return R;
}


T0* r310add_comment(T310* 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 {/*AT*//*[IF*/
if((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(1)){
R=((T0*)(C));
}
else{
{T316*n=((T316*)se_malloc(sizeof(*n))/*12*/);
*n=M316;
r316make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r310to_runnable(T310* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r57all_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_current_type/*8*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
/*[IF*/
if(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL))){
(/*SFN*/C->_check_invariant)=r311to_runnable((T311*)((/*RF2*/(C)->_check_invariant/*4*/)),a1);
}
/*FI]*/
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T310*n=((T310*)se_malloc(sizeof(*n))/*12*/);
*n=M310;
r310make(n,(*(se_tmp0=r310start_position(C),&se_tmp0)),NULL,(/*RF2*/((T311*)((/*RF2*/(C)->_check_invariant/*4*/)))->_list/*12*/));
R=((T0*)n);
}
}
R=r310to_runnable(((T310*)R),a1);
}
/*FI]*/
}
else{
(/*SFN*/C->_current_type)=a1;
R=((T0*)(C));
}
/*FI]*/
return R;
}


T104 r310start_position(T310* C){
T104 R={NULL,0};
/*[IF*/
if(((/*RF2*/(C)->_check_invariant/*4*/))!=((void*)(NULL))){
{T104 se_tmp0;
R=(/*RF2*/((T311*)((/*RF2*/(C)->_check_invariant/*4*/)))->_start_position/*0*/);
}
}
/*FI]*/
return R;
}


void r284run_feature_match(T284* C,T0* a1){
r284run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r284runnable_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)));
}
r284fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r284call_proc_call_stupid_switch(T284* 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 r284is_static(T284* C){
T6 R=0;
/*[IF*/
if(X62is_integer(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r284arg1(C)))){
R=1;
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))>(X126static_value(r284arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r284operator(void){
T0* R=NULL;
R=((T0*)ms21_62);
return R;
}


void r284with(T284* 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;
r284run_feature_match(C,a5);
}


void r284run_feature_has_result(T284* 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*/));
}
r284fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


void r284compile_to_c(T284* C){
/*[IF*/
if((r57boost((T57*)(oBC19run_control)))&&(X62is_character(X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)))))){
r284c2c_cast_op(C,((T0*)ms20_11300605),((T0*)ms21_62));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T284* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r284stupid_switch(T284* C,T0* a1){
T6 R=0;
R=r284call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r284result_type(C)));
}
/*FI]*/
return R;
}


void r284make(T284* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r284operator(),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 r284fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r284to_integer_error(T284* 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* r284arg1(T284* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r284assertion_check(T284* 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(r284arg1(C),a1);
}


T0* r284result_type(T284* 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(r284arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r284afd_check(T284* 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 r284use_current(T284* 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 r284c2c_cast_op(T284* C,T0* a1,T0* a2){
/*[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.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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a2);
/*]*/
/*[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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r284arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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 r284c_declare_for_old(T284* 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 r284compile_to_c_old(T284* 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* r284runnable_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)));
}
r284fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r284mapping_c_target(T284* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r284result_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*/))));
}/*]*/
/*]*/
r284compile_to_c(C);
/*[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{
r284compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r284compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r284compile_to_c(C);
/*[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{
r284compile_to_c(C);
}
/*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* r284run_feature_for(T284* 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 r284to_integer_or_error(T284* C){
T2 R=0;
r284to_integer_error(C);
return R;
}


T0* r284add_comment(T284* 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* r284to_runnable(T284* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r284runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r284runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r284arg1(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=r284run_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;
r284run_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{
{T284*n=((T284*)se_malloc(sizeof(*n))/*24*/);
*n=M284;
r284with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r284collect_c_tmp(T284* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r284finalize(T284* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/);
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


T0* r284static_result_base_class(T284* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r386c_mapping_procedure(T0* a1,T0* a2,T0* a3){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
r386c_mapping_external((/*RF2*/(((T115*)a1))->_base_feature/*28*/),r115arg_count(((T115*)a1)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}
else{
r115default_mapping_procedure(((T115*)a1));
}
/*FI]*/
}


void r386standard_c_define_function(T0* a1,T0* a2,T0* a3){
/*[IF*/
{/*AT*//*[IRF3.6c_prototype*/{T95* C1=((T95*)a1);
r95external_prototype(C1,(/*RF2*/(C1)->_base_feature/*28*/));
}/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC91body))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC91body),((T3)'R'));
r7extend((T7*)(oBC91body),((T3)'\75'));
r386wrapped_external_call((/*RF2*/(((T95*)a1))->_base_feature/*28*/),r95arg_count(((T95*)a1)));
r95c_define_with_body(((T95*)a1),oBC91body);
}
/*FI]*/
}


void r386standard_c_define_procedure(T0* a1,T0* a2,T0* a3){
/*[IF*/
{/*AT*//*[IRF3.6c_prototype*/{T115* C1=((T115*)a1);
r115external_prototype(C1,(/*RF2*/(C1)->_base_feature/*28*/));
}/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC91body))))->_count)=(0);
/*]*/
r386wrapped_external_call((/*RF2*/(((T115*)a1))->_base_feature/*28*/),r115arg_count(((T115*)a1)));
r115c_define_with_body(((T115*)a1),oBC91body);
}
/*FI]*/
}


void r386c_mapping_external(T0* a1,T2 a2){
T6 _tcbd=0;
T6 _eruc=0;
_eruc=/*(IRF4.2use_current*/(1)/*)*/;
/*[IF*/
if(!(_eruc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[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*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),/*SSFRF4*//*X97external_name*/r116external_name(((T116*)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*/))));
}/*]*/
/*]*/
/*[IF*/
if(_eruc){
r83put_target_as_value((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if((a2)>(0)){
/*[IF*/
if(_eruc){
/*[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*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*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*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_eruc))&&(_tcbd)){
/*[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]*/
}


void r386wrapped_external_call(T0* a1,T2 a2){
T2 _i=0;
r7append((T7*)(oBC91body),/*SSFRF4*//*X97external_name*/r116external_name(((T116*)a1)));
r7extend((T7*)(oBC91body),((T3)'\50'));
/*[IF*/
{/*AT*/r7extend((T7*)(oBC91body),((T3)'C'));
/*[IF*/
if((a2)>(0)){
r7extend((T7*)(oBC91body),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
_i=1;
while (!((_i)>(a2)))
{
r7extend((T7*)(oBC91body),((T3)'a'));
r2append_in(_i,oBC91body);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(a2)){
r7extend((T7*)(oBC91body),((T3)'\54'));
}
/*FI]*/
}
r7append((T7*)(oBC91body),((T0*)ms20_1330));
}


void r386c_mapping_function(T0* a1,T0* a2,T0* a3){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
r386c_mapping_external((/*RF2*/(((T95*)a1))->_base_feature/*28*/),r95arg_count(((T95*)a1)));
}
else{
r95default_mapping_function(((T95*)a1));
}
/*FI]*/
}


void r281run_feature_match(T281* C,T0* a1){
r281run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r281runnable_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)));
}
r281fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r281call_proc_call_stupid_switch(T281* 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 r281is_static(T281* C){
T6 R=0;
/*[IF*/
if(X62is_integer(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r281arg1(C)))){
R=1;
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))<=(X126static_value(r281arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r281operator(void){
T0* R=NULL;
R=((T0*)ms21_361);
return R;
}


void r281with(T281* 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;
r281run_feature_match(C,a5);
}


void r281run_feature_has_result(T281* 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*/));
}
r281fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


void r281compile_to_c(T281* C){
/*[IF*/
if((r57boost((T57*)(oBC19run_control)))&&(X62is_character(X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)))))){
r281c2c_cast_op(C,((T0*)ms20_11300605),((T0*)ms21_361));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T281* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r281stupid_switch(T281* C,T0* a1){
T6 R=0;
R=r281call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r281result_type(C)));
}
/*FI]*/
return R;
}


void r281make(T281* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r281operator(),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 r281fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r281to_integer_error(T281* 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* r281arg1(T281* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r281assertion_check(T281* 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(r281arg1(C),a1);
}


T0* r281result_type(T281* 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(r281arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r281afd_check(T281* 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 r281use_current(T281* 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 r281c2c_cast_op(T281* C,T0* a1,T0* a2){
/*[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.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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a2);
/*]*/
/*[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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r281arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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 r281c_declare_for_old(T281* 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 r281compile_to_c_old(T281* 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* r281runnable_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)));
}
r281fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r281mapping_c_target(T281* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r281result_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*/))));
}/*]*/
/*]*/
r281compile_to_c(C);
/*[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{
r281compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r281compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r281compile_to_c(C);
/*[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{
r281compile_to_c(C);
}
/*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* r281run_feature_for(T281* 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 r281to_integer_or_error(T281* C){
T2 R=0;
r281to_integer_error(C);
return R;
}


T0* r281add_comment(T281* 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* r281to_runnable(T281* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r281runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r281runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r281arg1(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=r281run_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;
r281run_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{
{T281*n=((T281*)se_malloc(sizeof(*n))/*24*/);
*n=M281;
r281with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r281collect_c_tmp(T281* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r281finalize(T281* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/);
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


T0* r281static_result_base_class(T281* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r283run_feature_match(T283* C,T0* a1){
r283run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r283runnable_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)));
}
r283fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r283call_proc_call_stupid_switch(T283* 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 r283is_static(T283* C){
T6 R=0;
/*[IF*/
if(X62is_integer(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r283arg1(C)))){
R=1;
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))<(X126static_value(r283arg1(C)))){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r283operator(void){
T0* R=NULL;
R=((T0*)ms21_60);
return R;
}


void r283with(T283* 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;
r283run_feature_match(C,a5);
}


void r283run_feature_has_result(T283* 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*/));
}
r283fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


void r283compile_to_c(T283* C){
/*[IF*/
if((r57boost((T57*)(oBC19run_control)))&&(X62is_character(X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/)))))){
r283c2c_cast_op(C,((T0*)ms20_11300605),((T0*)ms21_60));
}
else{
/*[IRF3.6call_proc_call_c2c*/{T283* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r283stupid_switch(T283* C,T0* a1){
T6 R=0;
R=r283call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r283result_type(C)));
}
/*FI]*/
return R;
}


void r283make(T283* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r283operator(),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 r283fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r283to_integer_error(T283* 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* r283arg1(T283* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r283assertion_check(T283* 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(r283arg1(C),a1);
}


T0* r283result_type(T283* 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(r283arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r283afd_check(T283* 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 r283use_current(T283* 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 r283c2c_cast_op(T283* C,T0* a1,T0* a2){
/*[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.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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a2);
/*]*/
/*[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.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.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
X126compile_to_c(r283arg1(C));
/*[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*/))));
}/*]*/
/*]*/
/*[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*/))));
}/*]*/
/*]*/
/*[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 r283c_declare_for_old(T283* 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 r283compile_to_c_old(T283* 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* r283runnable_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)));
}
r283fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r283mapping_c_target(T283* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r283result_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*/))));
}/*]*/
/*]*/
r283compile_to_c(C);
/*[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{
r283compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r283compile_to_c(C);
}
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*/))));
}/*]*/
/*]*/
r283compile_to_c(C);
/*[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{
r283compile_to_c(C);
}
/*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* r283run_feature_for(T283* 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 r283to_integer_or_error(T283* C){
T2 R=0;
r283to_integer_error(C);
return R;
}


T0* r283add_comment(T283* 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* r283to_runnable(T283* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r283runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r283runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r283arg1(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=r283run_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;
r283run_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{
{T283*n=((T283*)se_malloc(sizeof(*n))/*24*/);
*n=M283;
r283with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r283collect_c_tmp(T283* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r283finalize(T283* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*16*/);
_rc=/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/);
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


T0* r283static_result_base_class(T283* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r299try_to_undefine_aux(T299* C,T0* a1,T0* a2){
T0* R=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=r299start_position(C),&se_tmp0)));
}
{T104 se_tmp0;
r299error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms142_1389744524));
}
r61fatal_undefine(((T61*)a2),a1);
return R;
}


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


T6 r299can_hide(T299* 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;
r299error((*(se_tmp0=r299start_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;
r299error((*(se_tmp0=r299start_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){
r299merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r299merge_header_comments(T299* 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 r299add_into(T299* 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* r299try_to_undefine(T299* 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=r299try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X381set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r299merge_header_comments(C,R);
}
else{
r61fatal_undefine(((T61*)a2),a1);
}
/*FI]*/
return R;
}


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


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


T0* r299to_run_feature(T299* 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 r299is_not_mergeable_with(T299* 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]*/
r299merge_header_comments(C,a1);
return R;
}


T104 r299start_position(T299* 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;
}


T0* r301try_to_undefine_aux(T301* C,T0* a1,T0* a2){
T0* R=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=r301start_position(C),&se_tmp0)));
}
{T104 se_tmp0;
r301error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms142_1389744524));
}
r61fatal_undefine(((T61*)a2),a1);
return R;
}


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

