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


void r137compile_to_c(T137* C){
/*[IF*/
if(r372is_c_unsigned_ptr((T372*)((/*RF2*/(C)->_result_type/*16*/)))){
r83register_bit_constant((T83*)(oBC19cpp),(T0*)C);
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_360));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/(C)->_hexa/*20*/));
/*]*/
}
/*FI]*/
}


void r137make(T137* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_value)=a2;
}


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


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


T2 r137to_integer_or_error(T137* C){
T2 R=0;
r137to_integer_error(C);
return R;
}


T0* r137add_comment(T137* 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* r137to_runnable(T137* C,T0* a1){
T0* R=NULL;
T0* _ic=NULL;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*16*/))==((void*)(NULL))){
{T104 se_tmp0;
{T265*n=((T265*)se_malloc(sizeof(*n))/*16*/);
*n=M265;
r265make(n,(/*RF2*/((T7*)((/*RF2*/(C)->_value/*12*/)))->_count/*4*/),(/*RF2*/(C)->_start_position/*4*/));
_ic=((T0*)n);
}
}
{T104 se_tmp0;
{T372*n=((T372*)se_malloc(sizeof(*n))/*28*/);
*n=M372;
r372make(n,(/*RF2*/(C)->_start_position/*4*/),_ic);
(/*SFN*/C->_result_type)=((T0*)n);
}
}
(/*SFN*/C->_result_type)=r372to_runnable((T372*)((/*RF2*/(C)->_result_type/*16*/)),a1);
r60set_at_run_time((T60*)(r372run_class((T372*)((/*RF2*/(C)->_result_type/*16*/)))));
(/*SFN*/C->_hexa)=r7twin((T7*)((/*RF2*/(C)->_value/*12*/)));
r7to_hexadecimal((T7*)((/*RF2*/(C)->_hexa/*20*/)));
}
/*FI]*/
R=((T0*)(C));
return R;
}


T0* r137static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_53028));
return R;
}


T6 r518is_frozen(T518* C){
T6 R=0;
R=X117is_frozen((/*RF2*/(C)->_enclosing/*8*/));
return R;
}


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


T0* r518to_string(T518* C){
T0* R=NULL;
R=X117to_string((/*RF2*/(C)->_enclosing/*8*/));
return R;
}


void r518undefine_in(T518* C,T0* a1){
/*[IF*/
if(r518is_frozen(C)){
{T104 se_tmp0;
r518error((*(se_tmp0=r518start_position(C),&se_tmp0)),((T0*)ms117_1217321133));
}
r61fatal_undefine(((T61*)a1),(T0*)C);
}
/*FI]*/
}


void r518refer_to(T518* C,T2 a1,T0* a2){
(/*SFN*/C->_enclosing)=a2;
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,(8)+((/*RF2*/((T7*)(X117to_key((/*RF2*/(C)->_enclosing/*8*/))))->_count/*4*/)));
(/*SFN*/C->_to_key)=((T0*)n);
}
r7extend((T7*)((/*RF2*/(C)->_to_key/*4*/)),((T3)'\137'));
r2append_in(a1,(/*RF2*/(C)->_to_key/*4*/));
r7extend((T7*)((/*RF2*/(C)->_to_key/*4*/)),((T3)'P'));
r7append((T7*)((/*RF2*/(C)->_to_key/*4*/)),X117to_key((/*RF2*/(C)->_enclosing/*8*/)));
(/*SFN*/C->_to_key)=((/*UT*/(void)((T27*)(r518string_aliaser()))),r27item((/*RF2*/(C)->_to_key/*4*/)));
}


T0* r518string_aliaser(void){
if(fBC19string_aliaser==0){fBC19string_aliaser=1;{
{T27*n=((T27*)se_malloc(1));
oBC19string_aliaser=((T0*)n);
/*[IRF3.2make*//*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2104);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53339);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33156840);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1339128);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_836969340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33120277);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_774649014);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_168164374);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_274599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_171638715);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_175767198);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_867350214);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1384826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35866627);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35868574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7173699);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_286922);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_179371455);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1447702);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_904828090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_295849);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_349117293);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12184);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7704337);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1554777);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_971749965);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12376);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7749340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_324411);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_520438282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1692780980);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_65574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3075);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9647090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_64);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_552);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_61);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_371);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_62);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067995);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_361);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_60);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_45);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_296);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3421);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2126626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_43);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1960);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1972);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_47);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9529116);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_77832);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_280482649));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_386854);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9676326);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1597390874));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_49076823);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_79341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_247239028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94407393);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_840111968);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1236707441);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15831);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810604);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1680885744);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244781926);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244783893);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1223936132);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_48958735);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1622700141);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1979951);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_936296820);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1949019648);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_705019679);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1286698901);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10018876);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50778415);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_397576);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15932);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80109);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80416);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80694);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2023685073);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_406284);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067759348);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2090604340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_880412606);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50246319);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_636);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_619776399));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1744612358);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1937220099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_378799862);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10377643);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1297876698);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16639);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16616);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_84969);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16686);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1856946950));
r27special_add(((T0*)ms21_1740332382));
r27special_add(((T0*)ms21_111802057));
r27special_add(((T0*)ms21_756809447));
r27special_add(((T0*)ms21_1419919903));
r27special_add(((T0*)ms21_275488632));
r27special_add(((T0*)ms21_1377517899));
r27special_add(((T0*)ms21_698215697));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1326673961);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_954385774);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1778079380);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_87541);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10945665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_849712179);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3501);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88048);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88049);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_573080478);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54325331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_41849945);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2174354);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_438300);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187464);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187483);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733071);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_733277224);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54749764);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11011040);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_112335826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11026665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1507243919);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1053896806);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591414963);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_267647687);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591417242);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447584);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_89510);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447851);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55924644);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55926626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279656751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2246041);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88795);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_446841);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1607595572);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55868341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279416444);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279523519);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2236118);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1574640467);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1742738754);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_18110);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_90544);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1202672333);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_287359706);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1501191);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1498845794);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2038667775);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42134669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_337331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_14150);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*]*/
}
}}
return oBC19string_aliaser;
}


T0* r518origin_base_class(T518* C){
T0* R=NULL;
{T104 se_tmp0;
R=(/*RF2*/((*(se_tmp0=r518start_position(C),&se_tmp0)))._base_class/*0*/);
}
return R;
}


T104 r518start_position(T518* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position((/*RF2*/(C)->_enclosing/*8*/)),&se_tmp0));
}
return R;
}


T6 r250stupid_switch(T250* C,T0* a1){
T6 R=0;
/*[IF*/
if(r59stupid_switch(r250result_type(C),a1)){
R=1;
}
/*FI]*/
return R;
}


T0* r250c_variable_name(T250* C){
T0* R=NULL;
T0* _bf=NULL;
_bf=/*SSWA2*//*X96base_feature*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_base_feature/*28*/);
R=r465o_result(_bf);
return R;
}


void r250mapping_c_arg(T250* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type(r250result_type(C));
/*[IF*/
if(X62is_reference(_rt)){
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
else{
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


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


T0* r250result_type(T250* C){
T0* R=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*12*/));
return R;
}


void r250mapping_c_target(T250* C,T0* a1){
T0* _rt=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_rt=X62run_type(r250result_type(C));
/*[IF*/
if(X62is_reference(_rt)){
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
X62mapping_cast(a1);
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T250* C1=C;
/*[IRF3.6c_put_o_result*/{T0* c1=(/*RF2*/(C1)->_run_feature/*12*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)c1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}/*]*/
}
/*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]*/
}


T2 r250to_integer_or_error(T250* C){
T2 R=0;
r250to_integer_error(C);
return R;
}


T0* r250add_comment(T250* 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* r250to_runnable(T250* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
T0* _rt1=NULL;
T0* _rf=NULL;
R=((T0*)(C));
_rf=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_run_feature)=_rf;
}
else{
_rt1=X62run_type(X96result_type(_rf));
_rt2=X62run_type(X96result_type((/*RF2*/(C)->_run_feature/*12*/)));
/*[IF*/
if((X62run_time_mark(_rt1))!=((void*)(X62run_time_mark(_rt2)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position(_rt1),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position(_rt2),&se_tmp0)));
}
X96fe_vffd7((/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r250static_result_base_class(void){
T0* R=NULL;
T0* _bcn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _rf=NULL;
_rf=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
_e_feature=/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)_rf))->_base_feature/*28*/);
_rt=X99result_type(_e_feature);
_bcn=X62static_base_class_name(_rt);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r77base_class(((T77*)_bcn));
}
/*FI]*/
return R;
}


void r494from_model(T494* C,T0* a1){
(/*SFN*/C->_first_one)=(/*RF2*/(((T494*)a1))->_first_one/*4*/);
(/*SFN*/C->_remainder)=(/*RF2*/(((T494*)a1))->_remainder/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_remainder/*8*/))!=((void*)(NULL))){
(/*SFN*/C->_remainder)=X212twin((/*RF2*/(C)->_remainder/*8*/));
}
/*FI]*/
}


T2 r494count(T494* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_remainder/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=(/*SSWARF2*//*X212upper*/(/*RF2*/((T212*)((/*RF2*/(C)->_remainder/*8*/)))->_upper/*12*/))+(2);
}
/*FI]*/
return R;
}


T6 r494can_be_dropped(T494* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r494count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126can_be_dropped(r494expression(C,_i));
_i=(_i)-(1);
}
return R;
}


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


void r494put(T494* C,T0* a1,T2 a2){
/*[IF*/
if((a2)==(1)){
(/*SFN*/C->_first_one)=a1;
}
else{
X212put((/*RF2*/(C)->_remainder/*8*/),a1,(a2)-(2));
}
/*FI]*/
}


void r494compile_to_c_ith(T494* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r494expression(C,a2);
_ft=X62run_type(r121type(((T121*)a1),a2));
X126mapping_c_arg(_e,_ft);
}


T6 r494is_static(T494* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r494count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126is_static(r494expression(C,_i));
_i=(_i)-(1);
}
return R;
}


void r494dca_inline_ith(T494* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r494expression(C,a2);
_ft=X62run_type(r121type(((T121*)a1),a2));
X126dca_inline_argument(_e,_ft);
}


void r494match_with(T494* C,T0* a1,T0* a2){
T0* _T2=NULL;
T0* _T1=NULL;
T0* _ft=NULL;
T0* _at=NULL;
T0* _e=NULL;
T2 _i=0;
T0* _fal=NULL;
_fal=X96arguments(a1);
/*[IF*/
if((_fal)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=r494start_position(C),&se_tmp0)),((T0*)ms245_172193497));
}
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0))&&((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/(((T121*)_fal))->_flat_list/*8*/))))/*)*/)!=(r494count(C)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r121start_position(((T121*)_fal)),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=r494start_position(C),&se_tmp0)),((T0*)ms245_172193497));
}
}
/*FI]*/
_i=r494count(C);
while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e=r494expression(C,_i);
_at=X126result_type(_e);
_ft=r121type(((T121*)_fal),_i);
/*[IF*/
if(X126is_void(_e)){
/*[IF*/
if(X62is_expanded(_ft)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_172033369));
}
}
/*FI]*/
}
 else if(X62is_like_current(_ft)){
/*[IF*/
if(X62is_a(X62run_type(_at),X62run_type(_ft))){
/*[IF*/
if(X62is_expanded(X62run_type(_at))){
}
 else if(X62is_a(X62run_type(_at),X62run_type(_ft))){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_673325704));
}
}
/*FI]*/
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_673325704));
}
}
/*FI]*/
}
 else if(X62is_like_feature(_ft)){
_T1=X62run_type(_at);
_T2=X62run_type(_ft);
/*[IF*/
if(X62is_a(X62run_type(_at),X62run_type(_ft))){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_367486352));
}
}
/*FI]*/
}
 else if(r494is_like_argument(C,_e,_at,_ft)){
}
 else if(X62is_a(_at,_ft)){
}
else{
{T104 se_tmp0;
r494error((*(se_tmp0=X126start_position(_e),&se_tmp0)),((T0*)ms245_1141347885));
}
}
/*FI]*/
_e=r440implicit_cast((T440*)(oBC19conversion_handler),_e,_ft);
r494put(C,_e,_i);
_i=(_i)-(1);
}
}


void r494compile_to_c(T494* C,T0* a1){
T2 _up=0;
T2 _i=0;
_i=1;
_up=r494count(C);
while (!((_i)>(_up)))
{
r494compile_to_c_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[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]*/
}
}


T6 r494stupid_switch(T494* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
_i=r494count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126stupid_switch(r494expression(C,_i),a1);
_i=(_i)-(1);
}
return R;
}


void r494make_n(T494* C,T0* a1,T0* a2){
(/*SFN*/C->_first_one)=a1;
(/*SFN*/C->_remainder)=a2;
}


T6 r494isa_dca_inline(T494* C,T0* a1,T0* a2){
T6 R=0;
T2 _r=0;
T2 _i=0;
T0* _e=NULL;
T0* _args=NULL;
T0* _relay_args=NULL;
_relay_args=X96arguments(a1);
_args=X96arguments(a2);
R=1;
_i=r494count(C);
r483force((T483*)(oBC245isa_dca_inline_memory),0,_i);
/*[IRF3.6clear_all*/{T483* C1=(T483*)(oBC245isa_dca_inline_memory);
T6 __value=0;
/*[IRF3.6set_all_with*/{T483* C2=C1;
T6 c1=__value;
r486set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,((/*RF2*/(C2)->_upper/*8*/))-((/*RF2*/(C2)->_lower/*12*/)));
}/*]*/
}/*]*/
while (!((!(R))||((_i)==(0))))
{
_e=r494expression(C,_i);
_r=X126isa_dca_inline_argument(_e);
/*[INSPECT*/
{int z1=_r;
switch(z1){
case 0:
R=0;
break;
case -1:
/*[IF*/
if(X62is_expanded(r121type(((T121*)_args),_i))){
R=X62is_expanded(X126result_type(_e));
}
else{
R=X62is_reference(X126result_type(_e));
}
/*FI]*/
break;
default:;
/*[IRF3.6put*/{T483* C1=(T483*)(oBC245isa_dca_inline_memory);
T6 b1=1;
T2 b2=_r;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
/*[IF*/
if(X62is_reference(r121type(((T121*)_relay_args),_r))){
/*[IF*/
if(X62is_reference(r121type(((T121*)_args),_i))){
R=X62is_reference(X126result_type(_e));
}
else{
R=0;
}
/*FI]*/
}
 else if(X62is_expanded(r121type(((T121*)_args),_i))){
R=X62is_expanded(X126result_type(_e));
}
else{
R=0;
}
/*FI]*/
}
}/*INSPECT]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
/*[IF*/
if((X96arguments(a1))!=((void*)(NULL))){
_i=/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)(X96arguments(a1)))->_flat_list/*8*/))))/*)*/;
}
else{
_i=0;
}
/*FI]*/
while (!((!(R))||((_i)==(0))))
{
R=r483item((T483*)(oBC245isa_dca_inline_memory),_i);
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r494dca_inline(T494* C,T0* a1){
T2 _up=0;
T2 _i=0;
_up=r494count(C);
_i=1;
while (!((_i)>(_up)))
{
r494dca_inline_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[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]*/
}
}


void r494assertion_check(T494* C,T3 a1){
T2 _i=0;
_i=r494count(C);
while (!((_i)==(0)))
{
X126assertion_check(r494expression(C,_i),a1);
_i=(_i)-(1);
}
}


void r494afd_check(T494* C){
T2 _i=0;
_i=r494count(C);
while (!((_i)==(0)))
{
X126afd_check(r494expression(C,_i));
_i=(_i)-(1);
}
}


T6 r494use_current(T494* C){
T6 R=0;
T2 _i=0;
_i=r494count(C);
while (!((R)||((_i)==(0))))
{
R=X126use_current(r494expression(C,_i));
_i=(_i)-(1);
}
return R;
}


T0* r494expression(T494* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(/*RF2*/(C)->_first_one/*4*/);
}
else{
R=X212item((/*RF2*/(C)->_remainder/*8*/),(a1)-(2));
}
/*FI]*/
return R;
}


void r494c_declare_for_old(T494* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r494count(C);
while (!((_i)>(_c)))
{
X126c_declare_for_old(r494expression(C,_i));
_i=(_i)+(1);
}
}


void r494compile_to_c_old(T494* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r494count(C);
while (!((_i)>(_c)))
{
X126compile_to_c_old(r494expression(C,_i));
_i=(_i)+(1);
}
}


void r494run_feature(T494* C,T0* a1){
T0* _fal=NULL;
T2 _i=0;
_fal=X96arguments(a1);
_i=/*(IRF4.6count*/r128count(((T128*)((/*RF2*/(((T121*)_fal))->_flat_list/*8*/))))/*)*/;
{T212*n=((T212*)se_malloc(sizeof(*n))/*16*/);
*n=M212;
r212make(n,(_i)-(1));
(/*SFN*/C->_remainder)=((T0*)n);
}
while (!((_i)==(0)))
{
r494put(C,/*(IRF4.6name*/r128item(((T128*)((/*RF2*/(((T121*)_fal))->_flat_list/*8*/))),_i)/*)*/,_i);
_i=(_i)-(1);
}
(/*SFN*/C->_current_type)=/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a1))->_current_type/*8*/);
}


T6 r494is_pre_computable(T494* C){
T6 R=0;
T2 _i=0;
_i=r494count(C);
R=1;
while (!((!(R))||((_i)==(0))))
{
R=X126is_pre_computable(r494expression(C,_i));
_i=(_i)-(1);
}
return R;
}


T6 r494is_like_argument(T494* C,T0* a1,T0* a2,T0* a3){
T6 R=0;
T0* _ot=NULL;
T0* _tla=NULL;
_tla=a3;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=1;
_ot=X126result_type(r494expression(C,/*(IRF4.6rank*/(/*RF2*/(((T275*)((/*RF2*/(((T355*)_tla))->_like_what/*20*/))))->_rank/*12*/)/*)*/));
/*[IF*/
if(!(X62is_a(X62run_type(a2),X62run_type(_ot)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r494error((*(se_tmp0=X62start_position(a3),&se_tmp0)),((T0*)ms245_1841665413));
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r494to_runnable(T494* C,T0* a1){
T0* R=NULL;
T0* _e2=NULL;
T0* _e1=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_i=r494count(C);
while (!((_i)==(0)))
{
_e1=r494expression(C,_i);
_e2=X126to_runnable(_e1,(/*RF2*/(C)->_current_type/*12*/));
/*[IF*/
if((_e2)==((void*)(NULL))){
{T104 se_tmp0;
r494error((*(se_tmp0=X126start_position(_e1),&se_tmp0)),((T0*)ms245_1263631766));
}
}
else{
r494put(C,_e2,_i);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
{T494*n=((T494*)se_malloc(sizeof(*n))/*16*/);
*n=M494;
r494from_model(n,(T0*)C);
R=((T0*)n);
}
R=r494to_runnable(((T494*)R),a1);
}
/*FI]*/
return R;
}


void r494collect_c_tmp(T494* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r494count(C);
while (!((_i)>(_c)))
{
X126collect_c_tmp(r494expression(C,_i));
_i=(_i)+(1);
}
}


T104 r494start_position(T494* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position(/*(IRF4.3first*/(/*RF2*/(C)->_first_one/*4*/)/*)*/),&se_tmp0));
}
return R;
}


void r262add_percent(T262* C,T3 a1){
r7extend((T7*)((/*RF2*/(C)->_to_string/*12*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_percent/*24*/))==((void*)(NULL))){
{T263*n=((T263*)se_malloc(sizeof(*n))/*20*/);
*n=M263;
r263with_capacity(n,4,1);
(/*SFN*/C->_percent)=((T0*)n);
}
}
/*FI]*/
r263add_last((T263*)((/*RF2*/(C)->_percent/*24*/)),(/*RF2*/((T7*)((/*RF2*/(C)->_to_string/*12*/)))->_count/*4*/));
}


void r262break_line(T262* C){
/*[IF*/
if(((/*RF2*/(C)->_break/*16*/))==((void*)(NULL))){
{T263*n=((T263*)se_malloc(sizeof(*n))/*20*/);
*n=M263;
r263with_capacity(n,4,1);
(/*SFN*/C->_break)=((T0*)n);
}
}
/*FI]*/
r263add_last((T263*)((/*RF2*/(C)->_break/*16*/)),((/*RF2*/((T7*)((/*RF2*/(C)->_to_string/*12*/)))->_count/*4*/))+(1));
}


void r262compile_to_c(T262* C){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_36951));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/(C)->_mangling/*28*/));
/*]*/
/*[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*/))));
}/*]*/
/*]*/
}


T0* r262type_string(void){
if(fBC19type_string==0){fBC19type_string=1;{
T104 _unknown_position={NULL,0};
{T368*n=((T368*)se_malloc(sizeof(*n))/*16*/);
*n=M368;
oBC19type_string=((T0*)n);
r368make(n,_unknown_position);
}
}}
return oBC19type_string;
}


void r262make(T262* C,T104 a1){
(/*SFN*/C->_start_position)=a1;
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,0);
(/*SFN*/C->_to_string)=((T0*)n);
}
}


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


void r262add_ascii(T262* C,T3 a1){
r7extend((T7*)((/*RF2*/(C)->_to_string/*12*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_ascii/*20*/))==((void*)(NULL))){
{T263*n=((T263*)se_malloc(sizeof(*n))/*20*/);
*n=M263;
r263with_capacity(n,4,1);
(/*SFN*/C->_ascii)=((T0*)n);
}
}
/*FI]*/
r263add_last((T263*)((/*RF2*/(C)->_ascii/*20*/)),(/*RF2*/((T7*)((/*RF2*/(C)->_to_string/*12*/)))->_count/*4*/));
}


T0* r262twin(T262* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T262*)R)=*C;
return R;
}


T2 r262to_integer_or_error(T262* C){
T2 R=0;
r262to_integer_error(C);
return R;
}


T0* r262add_comment(T262* 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* r262to_runnable(T262* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_mangling/*28*/))==((void*)(NULL))){
(/*SFN*/C->_mangling)=r470register((T0*)C);
}
/*FI]*/
R=((T0*)(C));
return R;
}


T0* r262static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_324411));
return R;
}


void r39put_integer(T39* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC40tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC40tmp_string);
r39put_string(C,oBC40tmp_string);
}


void r39put_double_format(T39* C,T5 a1,T2 a2){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC40tmp_string))))->_count)=(0);
/*]*/
r5append_in_format(a1,oBC40tmp_string,a2);
r39put_string(C,oBC40tmp_string);
}


void r39put_string(T39* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((/*RF2*/(((T7*)a1))->_count/*4*/))))
{
/*[IRF3.6put_character*/{T39* C1=C;
T3 b1=/*(IRF4.6item*/((/*RF2*/(((T7*)a1))->_storage/*0*/))[(_i)-(1)]/*)*/;
putc(b1,((FILE*)(stdout)));
}/*]*/
_i=(_i)+(1);
}
}


void r54put_integer(T54* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC40tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC40tmp_string);
r54put_string(C,oBC40tmp_string);
}


void r54put_string(T54* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((/*RF2*/(((T7*)a1))->_count/*4*/))))
{
/*[IRF3.6put_character*/{T54* C1=C;
T3 b1=/*(IRF4.6item*/((/*RF2*/(((T7*)a1))->_storage/*0*/))[(_i)-(1)]/*)*/;
putc(b1,((FILE*)(stderr)));
}/*]*/
_i=(_i)+(1);
}
}


T0* r72up_to_original(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _new_fn=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((_i)<(0))||((_fn1)!=((void*)(NULL)))))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn1=r73up_to_original(((T73*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)<(0)))
{
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn2=r73up_to_original(((T73*)_p2),a1,a2);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
_new_fn=r73do_rename(((T73*)_p2),a2);
/*[IF*/
if(r73has_select_for(((T73*)_p2),_new_fn)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_fn1)!=((void*)(NULL))){
/*[IF*/
if((X117to_string(_fn1))!=((void*)(X117to_string(a2)))){
R=r72repeated_inheritance(C,_p1,_fn1,a2);
}
else{
R=_fn1;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r72going_up(T72* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((_fn1)!=((void*)(NULL)))||((_i)<(0))))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn1=r73going_up(((T73*)_p1),a1,a2,a3);
_i=(_i)-(1);
}
while (!((_i)<(0)))
{
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn2=r73going_up(((T73*)_p2),a1,a2,a3);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
/*[IF*/
if(r73has_select_for(((T73*)_p2),_fn2)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
R=_fn1;
return R;
}


void r72inherit_cycle_check(T72* C){
T0* _bc=NULL;
T0* _p=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_p=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_bc=X62base_class((/*RF2*/(((T73*)_p))->_type/*0*/));
/*[IF*/
if((_bc)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r73start_position(((T73*)_p)),&se_tmp0)));
}
r72fatal_error(((T0*)ms20_384451081));
}
else{
r61inherit_cycle_check(((T61*)_bc));
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r72look_up_for(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _f1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((_f1)!=((void*)(NULL)))||((_i)<(0))))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_f1=r73look_up_for(((T73*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)<(0)))
{
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_f2=r73look_up_for(((T73*)_p2),a1,a2);
/*[IF*/
if((_f2)==((void*)(NULL))){
}
 else if((_f1)==((void*)(_f2))){
}
 else if(X99is_not_mergeable_with(_f2,_f1)){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f1),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms20_664531444);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
 else if(X99is_deferred(_f2)){
}
 else if(X99is_deferred(_f1)){
_f1=_f2;
_p1=_p2;
}
 else if(r73has_redefine(((T73*)_p1),a2)){
/*[IF*/
if(r73has_redefine(((T73*)_p2),a2)){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a2),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r73start_position(((T73*)_p2)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms72_628135516);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
 else if(r73has_redefine(((T73*)_p2),a2)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a2),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r73start_position(((T73*)_p1)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f1),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms72_628135516);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=r73start_position(((T73*)_p2)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r73start_position(((T73*)_p1)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f1),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(_f2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms72_628135516);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
_i=(_i)-(1);
}
R=_f1;
return R;
}


T6 r72has_redefine(T72* C,T0* a1){
T6 R=0;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((R)||((_i)<(0))))
{
R=r73has_redefine((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)-(1);
}
return R;
}


T0* r72first_parent_for(T72* C,T0* a1){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=0;
while (!((R)!=((void*)(NULL))))
{
R=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_pbc=(/*RF2*/(((T73*)R))->_base_class/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r61is_subclass_of(((T61*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}


T0* r72clients_for(T72* C,T0* a1){
T0* R=NULL;
T0* _cl=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_cl=r73clients_for((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/),a1);
/*[IF*/
if((R)==((void*)(NULL))){
R=_cl;
}
 else if((_cl)!=((void*)(NULL))){
R=r200append(((T200*)R),_cl);
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
_i=(_i)-(1);
}
 else if(r200gives_permission_to_any(((T200*)R))){
_i=(0)-(1);
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}


T0* r72next_parent_for(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=0;
while (!((R)==((void*)(a2))))
{
R=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_i=(_i)+(1);
}
R=NULL;
while (!(((R)!=((void*)(NULL)))||((_i)>((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/)))))
{
R=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_pbc=(/*RF2*/(((T73*)R))->_base_class/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r61is_subclass_of(((T61*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}


T6 r72is_a_vncg(T72* C,T0* a1,T0* a2){
T6 R=0;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((R)||((_i)<(0))))
{
R=r73is_a_vncg((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/),a1,a2);
_i=(_i)-(1);
}
return R;
}


void r72make(T72* C,T0* a1,T104 a2,T0* a3,T0* a4){
(/*SFN*/C->_base_class)=a1;
(/*SFN*/C->_heading_comment)=a3;
(/*SFN*/C->_start_position)=a2;
(/*SFN*/C->_list)=a4;
}


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


T0* r72original_name(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _fn1=NULL;
T0* _p1=NULL;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((_i)<(0))||((_fn1)!=((void*)(NULL)))))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn1=r73original_name(((T73*)_p1),a1,a2);
_i=(_i)-(1);
}
R=_fn1;
/*[IF*/
if((R)==((void*)(NULL))){
R=a2;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a2),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T77*)((/*RF2*/(((T61*)a1))->_name/*18*/)))->_to_string/*8*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms72_2007192211);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T0* r72repeated_inheritance(T72* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc1=NULL;
T0* _p2=NULL;
T2 _i=0;
_bc1=(/*RF2*/(((T73*)a1))->_base_class/*4*/);
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
/*[IF*/
if((a1)!=((void*)(_p2))){
/*[IF*/
if((_bc1)==((void*)((/*RF2*/(((T73*)_p2))->_base_class/*4*/)))){
/*[IF*/
if((X117to_string(r73do_rename(((T73*)_p2),a2)))==((void*)(X117to_string(a3)))){
R=a3;
}
 else if((X117to_string(r73do_rename(((T73*)a1),a2)))==((void*)(X117to_string(a3)))){
R=a3;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
R=a2;
}
/*FI]*/
return R;
}


void r72collect_invariant(T72* C,T0* a1){
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r61collect_invariant((T61*)((/*RF2*/((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/))->_base_class/*4*/)),a1);
_i=(_i)-(1);
}
}


T0* r72e_feature(T72* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((R)!=((void*)(NULL)))||((_i)<(0))))
{
R=r73e_feature((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)-(1);
}
return R;
}


T0* r72precursor_for(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _parent=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!(((R)!=((void*)(NULL)))||((_i)<(0))))
{
_parent=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
R=r73precursor_for(((T73*)_parent),a1,a2);
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position(/*SSWARF2*//*X267start_position*/(/*RF2*/(((T268*)a1))->_start_position/*4*/));
}
r72fatal_error(((T0*)ms72_1240319482));
}
/*FI]*/
/*[IF*/
if(r57all_check((T57*)(oBC19run_control))){
while (!((_i)<(0)))
{
_parent=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_f2=r73precursor_for(((T73*)_parent),a1,a2);
/*[IF*/
if(((_f2)!=((void*)(NULL)))&&((_f2)!=((void*)(R)))){
{T104 se_tmp0;
r82add_position(/*SSWARF2*//*X267start_position*/(/*RF2*/(((T268*)a1))->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X151start_position(R),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X151start_position(_f2),&se_tmp0)));
}
r72fatal_error(((T0*)ms72_1731115754));
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T6 r72has_parent(T72* C,T0* a1){
T6 R=0;
T0* _bc=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((R)||((_i)<(0))))
{
_bc=(/*RF2*/((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/))->_base_class/*4*/);
/*[IF*/
if((a1)==((void*)(_bc))){
R=1;
}
 else if(r61is_subclass_of(((T61*)_bc),a1)){
R=1;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}


void r72id_extra_information(T72* C,T0* a1){
T2 _i=0;
r58put_integer(((T58*)a1),/*(IRF4.6count*//*(IRF4.6count*/((/*RF2*/(((T74*)((/*RF2*/(C)->_list/*16*/))))->_upper/*8*/))+(1)/*)*//*)*/);
r58put_string(((T58*)a1),((T0*)ms72_116011447));
_i=0;
while (!((_i)>((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/))))
{
/*[IRF3.6id_extra_information*/{T73* C1=(T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/);
T0* b1=a1;
r58put_integer(((T58*)b1),(/*RF2*/((T61*)((/*RF2*/(C1)->_base_class/*4*/)))->_id/*0*/));
}/*]*/
/*[IRF3.6put_character*/{T58* C1=((T58*)a1);
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
_i=(_i)+(1);
}
}


void r72collect_assertion(T72* C,T0* a1){
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn2=r73name_in_parent(((T73*)_p2),a1);
/*[IF*/
if(((_fn2)!=((void*)(NULL)))&&(r73has_select_for(((T73*)_p2),a1))){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_fn1)!=((void*)(NULL))){
r61collect_assertion((T61*)((/*RF2*/(((T73*)_p1))->_base_class/*4*/)),_fn1);
}
else{
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_fn1=r73name_in_parent(((T73*)_p1),a1);
/*[IF*/
if((_fn1)!=((void*)(NULL))){
r61collect_assertion((T61*)((/*RF2*/(((T73*)_p1))->_base_class/*4*/)),_fn1);
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


void r72get_started(T72* C){
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i2=0;
T2 _i1=0;
_i1=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i1)<(0)))
{
r73get_started((T73*)(/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i1]/*)*/),(T0*)C);
_i1=(_i1)-(1);
}
/*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/))+(1)/*)*/)>(1)){
_i2=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i2)==(0)))
{
_i1=0;
while (!((_i1)==(_i2)))
{
_p1=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i1]/*)*/;
_p2=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i2]/*)*/;
r73multiple_check(((T73*)_p1),_p2);
r73multiple_check(((T73*)_p2),_p1);
_i1=(_i1)+(1);
}
_i2=(_i2)-(1);
}
}
/*FI]*/
}


T0* r72smallest_ancestor(T72* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _sa=NULL;
T0* _p=NULL;
T2 _i=0;
_i=(/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_p=/*(IRF4.6item*/((/*RF2*/((T74*)((/*RF2*/(C)->_list/*16*/)))->_storage/*0*/))[_i]/*)*/;
_sa=r73runnable_type(((T73*)_p),a2);
/*[IF*/
if((X62run_time_mark(_sa))==((void*)(X62run_time_mark(a2)))){
R=_sa;
_i=(0)-(1);
}
 else if((R)==((void*)(NULL))){
R=X62smallest_ancestor(_sa,a2);
}
 else if(X62is_a(_sa,a2)){
/*[IF*/
if(X62is_a(R,a2)){
R=X62smallest_ancestor(_sa,R);
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=_sa;
}
/*FI]*/
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


void r351c2c_opening(T351* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(/*RF2*/(C)->_start_position/*4*/));
}
/*[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*/))));
}/*]*/
/*]*/
r444allocation((T444*)(oBC19gc_handler),_rc);
r83expanded_attributes((T83*)(oBC19cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r250c_variable_name(((T250*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580a));
/*]*/
}
/*FI]*/
}


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


T0* r351run_args(T351* C){
T0* R=NULL;
R=X167arguments((/*RF2*/(C)->_call/*28*/));
return R;
}


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


void r351compile_to_c(T351* C){
/*[IF*/
if(X62is_reference((/*RF2*/(C)->_type/*24*/))){
r351c2c_opening(C,(/*RF2*/(C)->_type/*24*/));
r83push_new((T83*)(oBC19cpp),(/*RF2*/(C)->_run_feature/*16*/),r351run_args(C));
X96mapping_c((/*RF2*/(C)->_run_feature/*16*/));
r83pop((T83*)(oBC19cpp));
r351c2c_closing(C,(/*RF2*/(C)->_type/*24*/));
}
else{
r351c2c_clear_expanded(C,X62id((/*RF2*/(C)->_type/*24*/)));
r351c2c_expanded_initializer(C,(/*RF2*/(C)->_type/*24*/));
}
/*FI]*/
}


void r351c2c_closing(T351* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580));
/*]*/
}
/*FI]*/
/*[IF*/
if(r83call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
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)'\73');
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)'\175');
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)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T6 r351stupid_switch(T351* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_type/*24*/))!=((void*)(NULL))){
_t=(/*RF2*/(C)->_type/*24*/);
}
else{
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
}
/*FI]*/
/*[IF*/
if(X62is_anchored(_t)){
}
 else if(X62is_generic(_t)){
}
else{
/*[IF*/
if(((/*RF2*/(C)->_call/*28*/))==((void*)(NULL))){
R=X126stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
else{
R=X167stupid_switch((/*RF2*/(C)->_call/*28*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r351make(T351* C,T104 a1,T0* a2,T0* a3,T0* a4){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_type)=a2;
(/*SFN*/C->_writable)=a3;
(/*SFN*/C->_call)=a4;
}


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


void r351afd_check(T351* C){
/*[IF*/
if((r351arg_count(C))>(0)){
/*SSPRF3*//*X245afd_check*/r245afd_check((T245*)(r351run_args(C)));
}
/*FI]*/
}


T6 r351use_current(T351* C){
T6 R=0;
/*[IF*/
if((r351run_args(C))!=((void*)(NULL))){
R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)(r351run_args(C)));
}
/*FI]*/
R=(R)||(X126use_current((/*RF2*/(C)->_writable/*12*/)));
return R;
}


void r351c2c_expanded_initializer(T351* C,T0* a1){
T0* _rf3=NULL;
_rf3=X62expanded_initializer(a1);
/*[IF*/
if((_rf3)!=((void*)(NULL))){
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,(/*RF2*/(C)->_writable/*12*/),NULL);
}
/*FI]*/
}


void r351check_created_type(T351* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type(a1);
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T61*)(X62base_class(_rt)))->_is_deferred/*16*/)){
r82add_type(_rt,((T0*)ms346_2144688644));
{T104 se_tmp0;
r351warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms346_875697492));
}
}
/*FI]*/
/*[IF*/
if(X62is_formal_generic(a1)){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms346_739187517);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms346_251));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60set_at_run_time((T60*)(X62run_class(_rt)));
}


void r351check_writable(T351* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X126to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r351fatal_error(((T0*)ms346_94944730));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


void r351c2c_clear_expanded(T351* C,T2 a1){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T6 r351is_pre_computable(T351* C){
T6 R=0;
T0* _rfctbcn=NULL;
T0* _rfn=NULL;
T0* _rfct=NULL;
/*[IF*/
if(X126is_result((/*RF2*/(C)->_writable/*12*/))){
/*[IF*/
if((r351run_args(C))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245is_pre_computable*/r245is_pre_computable((T245*)(r351run_args(C)));
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X96is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
}
else{
_rfct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
_rfctbcn=(/*RF2*/((T77*)((/*RF2*/((T61*)(X62base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
_rfn=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*16*/));
/*[IF*/
if((((T0*)ms21_16686))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_53339))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_867350214))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_324411))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_168164374))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_520438282))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_1692780980))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms21_77832))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_324411))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms21_1202672333))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_53339))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_867350214))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_168164374))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


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


T2 r351arg_count(T351* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_call/*28*/))!=((void*)(NULL))){
R=X167arg_count((/*RF2*/(C)->_call/*28*/));
}
/*FI]*/
return R;
}


T0* r351to_runnable(T351* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
r351check_writable(C,a1);
r351check_explicit_type(C);
r351check_created_type(C,(/*RF2*/(C)->_type/*24*/));
r351check_creation_clause(C,(/*RF2*/(C)->_type/*24*/));
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T351*n=((T351*)se_malloc(sizeof(*n))/*32*/);
*n=M351;
r351make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_type/*24*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*28*/));
R=((T0*)n);
}
}
R=r351to_runnable(((T351*)R),a1);
}
/*FI]*/
return R;
}


void r351check_creation_clause(T351* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*28*/)))->_feature_name/*8*/);
{T104 se_tmp0;
_top=(/*RF2*/((*(se_tmp0=X117start_position(_fn),&se_tmp0)))._base_class/*0*/);
}
_bottom=X62base_class(a1);
/*[IF*/
if(X62is_like_current(a1)){
_fn=r61new_name_of(((T61*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*28*/)))->_feature_name/*8*/);
r82feature_not_found(_fn);
/*[IRF3.6append*/{T0* b1=((T0*)ms350_1952587812);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark(a1);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r351fatal_error(((T0*)ms20_216));
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_run_feature)=r60get_feature((T60*)(X62run_class(a1)),_fn);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
r351cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if(!(X62has_creation(a1,_fn))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*28*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=X117to_string(_fn);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms350_794211032);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60add_client((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_run_class/*12*/)),X62run_class((/*RF2*/(C)->_current_type/*20*/)));
/*[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((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
r351fatal_error(((T0*)ms350_1742784741));
}
/*FI]*/
/*[IF*/
if(((r351arg_count(C))==(0))&&((X96arguments((/*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*/(C)->_start_position/*4*/));
}
r351fatal_error(((T0*)ms350_527115622));
}
/*FI]*/
/*[IF*/
if((r351arg_count(C))>(0)){
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_args=X245to_runnable(X167arguments((/*RF2*/(C)->_call/*28*/)),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
{T104 se_tmp0;
r351error((*(se_tmp0=X245start_position(X167arguments((/*RF2*/(C)->_call/*28*/))),&se_tmp0)),((T0*)ms20_1981509924));
}
}
else{
X245match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_call)=X167make_runnable((/*RF2*/(C)->_call/*28*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
}


void r351collect_c_tmp(T351* C){
T0* _arguments=NULL;
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
_arguments=r351run_args(C);
/*[IF*/
if((_arguments)!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp(((T245*)_arguments));
}
/*FI]*/
}


void r351cp_not_found(T351* C,T0* a1){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*28*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
r351fatal_error(((T0*)ms350_1837585965));
}


void r351check_explicit_type(T351* C){
T0* _t=NULL;
T0* _ct=NULL;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_t=X62to_runnable((/*RF2*/(C)->_type/*24*/),_ct);
/*[IF*/
if(((_t)==((void*)(NULL)))||(!(X62is_run_type(_t)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_type/*24*/)),&se_tmp0)));
}
r351fatal_error(((T0*)ms348_1864419121));
}
else{
(/*SFN*/C->_type)=_t;
}
/*FI]*/
/*[IF*/
if(!(X62is_a((/*RF2*/(C)->_type/*24*/),X126result_type((/*RF2*/(C)->_writable/*12*/))))){
r351fatal_error(((T0*)ms348_960364148));
}
/*FI]*/
}


void r349c2c_opening(T349* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(/*RF2*/(C)->_start_position/*4*/));
}
/*[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*/))));
}/*]*/
/*]*/
r444allocation((T444*)(oBC19gc_handler),_rc);
r83expanded_attributes((T83*)(oBC19cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r250c_variable_name(((T250*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580a));
/*]*/
}
/*FI]*/
}


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


T0* r349run_args(T349* C){
T0* R=NULL;
R=X167arguments((/*RF2*/(C)->_call/*24*/));
return R;
}


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


void r349compile_to_c(T349* C){
T0* _t=NULL;
_t=X62run_type(X126result_type((/*RF2*/(C)->_writable/*12*/)));
/*[IF*/
if(X62is_reference(_t)){
r349c2c_opening(C,_t);
r83push_new((T83*)(oBC19cpp),(/*RF2*/(C)->_run_feature/*16*/),r349run_args(C));
X96mapping_c((/*RF2*/(C)->_run_feature/*16*/));
r83pop((T83*)(oBC19cpp));
r349c2c_closing(C,_t);
}
else{
r349c2c_clear_expanded(C,X62id(_t));
r349c2c_expanded_initializer(C,_t);
}
/*FI]*/
}


void r349c2c_closing(T349* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580));
/*]*/
}
/*FI]*/
/*[IF*/
if(r83call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
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)'\73');
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)'\175');
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)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T6 r349stupid_switch(T349* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
/*FI]*/
/*[IF*/
if(X62is_anchored(_t)){
}
 else if(X62is_generic(_t)){
}
else{
/*[IF*/
if(((/*RF2*/(C)->_call/*24*/))==((void*)(NULL))){
R=X126stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
else{
R=X167stupid_switch((/*RF2*/(C)->_call/*24*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r349make(T349* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_writable)=a2;
(/*SFN*/C->_call)=a3;
}


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


void r349afd_check(T349* C){
/*[IF*/
if((r349arg_count(C))>(0)){
/*SSPRF3*//*X245afd_check*/r245afd_check((T245*)(r349run_args(C)));
}
/*FI]*/
}


T6 r349use_current(T349* C){
T6 R=0;
/*[IF*/
if((r349run_args(C))!=((void*)(NULL))){
R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)(r349run_args(C)));
}
/*FI]*/
R=(R)||(X126use_current((/*RF2*/(C)->_writable/*12*/)));
return R;
}


void r349c2c_expanded_initializer(T349* C,T0* a1){
T0* _rf3=NULL;
_rf3=X62expanded_initializer(a1);
/*[IF*/
if((_rf3)!=((void*)(NULL))){
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,(/*RF2*/(C)->_writable/*12*/),NULL);
}
/*FI]*/
}


void r349check_created_type(T349* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type(a1);
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T61*)(X62base_class(_rt)))->_is_deferred/*16*/)){
r82add_type(_rt,((T0*)ms346_2144688644));
{T104 se_tmp0;
r349warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms346_875697492));
}
}
/*FI]*/
/*[IF*/
if(X62is_formal_generic(a1)){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms346_739187517);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms346_251));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60set_at_run_time((T60*)(X62run_class(_rt)));
}


void r349check_writable(T349* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X126to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r349fatal_error(((T0*)ms346_94944730));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


void r349c2c_clear_expanded(T349* C,T2 a1){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T6 r349is_pre_computable(T349* C){
T6 R=0;
T0* _rfctbcn=NULL;
T0* _rfn=NULL;
T0* _rfct=NULL;
/*[IF*/
if(X126is_result((/*RF2*/(C)->_writable/*12*/))){
/*[IF*/
if((r349run_args(C))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245is_pre_computable*/r245is_pre_computable((T245*)(r349run_args(C)));
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X96is_pre_computable((/*RF2*/(C)->_run_feature/*16*/))){
}
else{
_rfct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
_rfctbcn=(/*RF2*/((T77*)((/*RF2*/((T61*)(X62base_class(_rfct)))->_name/*18*/)))->_to_string/*8*/);
_rfn=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_name/*16*/));
/*[IF*/
if((((T0*)ms21_16686))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_53339))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_867350214))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_324411))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_168164374))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_520438282))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_1692780980))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms21_77832))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_324411))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms21_1202672333))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms21_53339))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_867350214))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms21_168164374))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


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


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


T0* r349to_runnable(T349* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*20*/))==((void*)(NULL))){
r349check_writable(C,a1);
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
r349check_created_type(C,_t);
r349check_creation_clause(C,_t);
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T349*n=((T349*)se_malloc(sizeof(*n))/*28*/);
*n=M349;
r349make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_writable/*12*/),(/*RF2*/(C)->_call/*24*/));
R=((T0*)n);
}
}
R=r349to_runnable(((T349*)R),a1);
}
/*FI]*/
return R;
}


void r349check_creation_clause(T349* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
{T104 se_tmp0;
_top=(/*RF2*/((*(se_tmp0=X117start_position(_fn),&se_tmp0)))._base_class/*0*/);
}
_bottom=X62base_class(a1);
/*[IF*/
if(X62is_like_current(a1)){
_fn=r61new_name_of(((T61*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/);
r82feature_not_found(_fn);
/*[IRF3.6append*/{T0* b1=((T0*)ms350_1952587812);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark(a1);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r349fatal_error(((T0*)ms20_216));
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_run_feature)=r60get_feature((T60*)(X62run_class(a1)),_fn);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
r349cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if(!(X62has_creation(a1,_fn))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=X117to_string(_fn);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms350_794211032);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60add_client((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_run_class/*12*/)),X62run_class((/*RF2*/(C)->_current_type/*20*/)));
/*[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((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
r349fatal_error(((T0*)ms350_1742784741));
}
/*FI]*/
/*[IF*/
if(((r349arg_count(C))==(0))&&((X96arguments((/*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*/(C)->_start_position/*4*/));
}
r349fatal_error(((T0*)ms350_527115622));
}
/*FI]*/
/*[IF*/
if((r349arg_count(C))>(0)){
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_args=X245to_runnable(X167arguments((/*RF2*/(C)->_call/*24*/)),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
{T104 se_tmp0;
r349error((*(se_tmp0=X245start_position(X167arguments((/*RF2*/(C)->_call/*24*/))),&se_tmp0)),((T0*)ms20_1981509924));
}
}
else{
X245match_with(_args,(/*RF2*/(C)->_run_feature/*16*/),_ct);
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_call)=X167make_runnable((/*RF2*/(C)->_call/*24*/),(/*RF2*/(C)->_writable/*12*/),_args,(/*RF2*/(C)->_run_feature/*16*/));
}


void r349collect_c_tmp(T349* C){
T0* _arguments=NULL;
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*16*/));
_arguments=r349run_args(C);
/*[IF*/
if((_arguments)!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp(((T245*)_arguments));
}
/*FI]*/
}


void r349cp_not_found(T349* C,T0* a1){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*SSWARF2*//*X167feature_name*/(/*RF2*/((T166*)((/*RF2*/(C)->_call/*24*/)))->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
r349fatal_error(((T0*)ms350_1837585965));
}


void r193make(T193* C,T104 a1){
{T375*n=((T375*)se_malloc(sizeof(*n))/*16*/);
*n=M375;
r375with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
(/*SFN*/C->_start_position)=a1;
}


void r193check_generic_formal_arguments(T193* C){
T2 _i=0;
_i=(/*RF2*/((T375*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/);
while (!((_i)<((/*RF2*/((T375*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/))))
{
r374check_generic_formal_arguments((T374*)(r375item((T375*)((/*RF2*/(C)->_list/*8*/)),_i)));
_i=(_i)-(1);
}
}


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


void r193add_last(T193* C,T0* a1){
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
T0* _fga2=NULL;
_i=(/*RF2*/((T375*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/);
/*[IRF3.3set_rank*/((((T374*)(((T374*)a1))))->_rank)=((_i)+(1));
/*]*/
_n1=(/*RF2*/((T77*)((/*RF2*/(((T374*)a1))->_name/*0*/)))->_to_string/*8*/);
while (!((_i)<((/*RF2*/((T375*)((/*RF2*/(C)->_list/*8*/)))->_lower/*12*/))))
{
_fga2=r375item((T375*)((/*RF2*/(C)->_list/*8*/)),_i);
_n2=(/*RF2*/((T77*)((/*RF2*/(((T374*)_fga2))->_name/*0*/)))->_to_string/*8*/);
/*[IF*/
if((_n1)==((void*)(_n2))){
{T104 se_tmp0;
r82add_position(/*(IRF4.6start_position*/(/*RF2*/(((T77*)((/*RF2*/(((T374*)a1))->_name/*0*/))))->_start_position/*0*/)/*)*/);
}
{T104 se_tmp0;
r82add_position(/*(IRF4.6start_position*/(/*RF2*/(((T77*)((/*RF2*/(((T374*)_fga2))->_name/*0*/))))->_start_position/*0*/)/*)*/);
}
r193fatal_error(((T0*)ms193_1379248421));
}
/*FI]*/
r374constraint_substitution(((T374*)_fga2),a1,((/*RF2*/((T375*)((/*RF2*/(C)->_list/*8*/)))->_upper/*8*/))+(1));
_i=(_i)-(1);
}
r375add_last((T375*)((/*RF2*/(C)->_list/*8*/)),a1);
}


void r347c2c_opening(T347* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(/*RF2*/(C)->_start_position/*4*/));
}
/*[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*/))));
}/*]*/
/*]*/
r444allocation((T444*)(oBC19gc_handler),_rc);
r83expanded_attributes((T83*)(oBC19cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r250c_variable_name(((T250*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580a));
/*]*/
}
/*FI]*/
}


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


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


void r347compile_to_c(T347* C){
/*[IF*/
if(X62is_reference((/*RF2*/(C)->_type/*20*/))){
r347c2c_opening(C,(/*RF2*/(C)->_type/*20*/));
r347c2c_closing(C,(/*RF2*/(C)->_type/*20*/));
}
else{
r347c2c_clear_expanded(C,X62id((/*RF2*/(C)->_type/*20*/)));
}
/*FI]*/
}


void r347c2c_closing(T347* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580));
/*]*/
}
/*FI]*/
/*[IF*/
if(r83call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
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)'\73');
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)'\175');
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)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T6 r347stupid_switch(T347* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_type/*20*/))!=((void*)(NULL))){
_t=(/*RF2*/(C)->_type/*20*/);
}
else{
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
}
/*FI]*/
/*[IF*/
if(X62is_anchored(_t)){
}
 else if(X62is_generic(_t)){
}
else{
/*[IF*/
{/*AT*/R=X126stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r347make(T347* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_type)=a2;
(/*SFN*/C->_writable)=a3;
}


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


T6 r347use_current(T347* C){
T6 R=0;
R=X126use_current((/*RF2*/(C)->_writable/*12*/));
return R;
}


void r347check_created_type(T347* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type(a1);
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T61*)(X62base_class(_rt)))->_is_deferred/*16*/)){
r82add_type(_rt,((T0*)ms346_2144688644));
{T104 se_tmp0;
r347warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms346_875697492));
}
}
/*FI]*/
/*[IF*/
if(X62is_formal_generic(a1)){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms346_739187517);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms346_251));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60set_at_run_time((T60*)(X62run_class(_rt)));
}


void r347check_writable(T347* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X126to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r347fatal_error(((T0*)ms346_94944730));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


void r347c2c_clear_expanded(T347* C,T2 a1){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T6 r347is_pre_computable(T347* C){
T6 R=0;
R=X126is_result((/*RF2*/(C)->_writable/*12*/));
return R;
}


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


T0* r347to_runnable(T347* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*16*/))==((void*)(NULL))){
r347check_writable(C,a1);
r347check_explicit_type(C);
r347check_created_type(C,(/*RF2*/(C)->_type/*20*/));
r347check_creation_clause(C,(/*RF2*/(C)->_type/*20*/));
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T347*n=((T347*)se_malloc(sizeof(*n))/*24*/);
*n=M347;
r347make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_type/*20*/),(/*RF2*/(C)->_writable/*12*/));
R=((T0*)n);
}
}
R=r347to_runnable(((T347*)R),a1);
}
/*FI]*/
return R;
}


void r347check_creation_clause(T347* C,T0* a1){
/*[IF*/
if(/*(IRF4.7has_creation_clause*/((/*RF2*/((T61*)(X62base_class(a1)))->_creation_clause_list/*38*/))!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=((T0*)ms345_813171837);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms345_262));
{T104 se_tmp0;
r347error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms345_1993444075));
}
}
/*FI]*/
}


void r347check_explicit_type(T347* C){
T0* _t=NULL;
T0* _ct=NULL;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_t=X62to_runnable((/*RF2*/(C)->_type/*20*/),_ct);
/*[IF*/
if(((_t)==((void*)(NULL)))||(!(X62is_run_type(_t)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_type/*20*/)),&se_tmp0)));
}
r347fatal_error(((T0*)ms348_1864419121));
}
else{
(/*SFN*/C->_type)=_t;
}
/*FI]*/
/*[IF*/
if(!(X62is_a((/*RF2*/(C)->_type/*20*/),X126result_type((/*RF2*/(C)->_writable/*12*/))))){
r347fatal_error(((T0*)ms348_960364148));
}
/*FI]*/
}


void r344c2c_opening(T344* C,T0* a1){
T0* _once_result=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(/*RF2*/(C)->_start_position/*4*/));
}
/*[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*/))));
}/*]*/
/*]*/
r444allocation((T444*)(oBC19gc_handler),_rc);
r83expanded_attributes((T83*)(oBC19cpp),a1);
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r250c_variable_name(((T250*)_once_result)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580a));
/*]*/
}
/*FI]*/
}


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


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


void r344compile_to_c(T344* C){
T0* _t=NULL;
_t=X62run_type(X126result_type((/*RF2*/(C)->_writable/*12*/)));
/*[IF*/
if(X62is_reference(_t)){
r344c2c_opening(C,_t);
r344c2c_closing(C,_t);
}
else{
r344c2c_clear_expanded(C,X62id(_t));
}
/*FI]*/
}


void r344c2c_closing(T344* C,T0* a1){
T0* _once_result=NULL;
_once_result=(/*RF2*/(C)->_writable/*12*/);
if(NULL!=(_once_result)){
switch(((T0*)_once_result)->id){
case 250:
break;
default:
_once_result=NULL;
}
}/*[IF*/
if((_once_result)==((void*)(NULL))){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms346_696937580));
/*]*/
}
/*FI]*/
/*[IF*/
if(r83call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
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)'\73');
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)'\175');
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)'\n');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T6 r344stupid_switch(T344* C,T0* a1){
T6 R=0;
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
/*FI]*/
/*[IF*/
if(X62is_anchored(_t)){
}
 else if(X62is_generic(_t)){
}
else{
/*[IF*/
{/*AT*/R=X126stupid_switch((/*RF2*/(C)->_writable/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r344make(T344* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_writable)=a2;
}


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


T6 r344use_current(T344* C){
T6 R=0;
R=X126use_current((/*RF2*/(C)->_writable/*12*/));
return R;
}


void r344check_created_type(T344* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type(a1);
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
}
 else if((/*RF2*/((T61*)(X62base_class(_rt)))->_is_deferred/*16*/)){
r82add_type(_rt,((T0*)ms346_2144688644));
{T104 se_tmp0;
r344warning((/*RF2*/(C)->_start_position/*4*/),((T0*)ms346_875697492));
}
}
/*FI]*/
/*[IF*/
if(X62is_formal_generic(a1)){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms346_739187517);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms346_251));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r60set_at_run_time((T60*)(X62run_class(_rt)));
}


void r344check_writable(T344* C,T0* a1){
T0* _w=NULL;
(/*SFN*/C->_current_type)=a1;
_w=X126to_runnable((/*RF2*/(C)->_writable/*12*/),a1);
/*[IF*/
if((_w)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_writable/*12*/)),&se_tmp0)));
}
r344fatal_error(((T0*)ms346_94944730));
}
else{
(/*SFN*/C->_writable)=_w;
}
/*FI]*/
}


void r344c2c_clear_expanded(T344* C,T2 a1){
X126compile_to_c((/*RF2*/(C)->_writable/*12*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),a1);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T6 r344is_pre_computable(T344* C){
T6 R=0;
R=X126is_result((/*RF2*/(C)->_writable/*12*/));
return R;
}


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


T0* r344to_runnable(T344* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*16*/))==((void*)(NULL))){
r344check_writable(C,a1);
_t=X126result_type((/*RF2*/(C)->_writable/*12*/));
r344check_created_type(C,_t);
r344check_creation_clause(C,_t);
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T344*n=((T344*)se_malloc(sizeof(*n))/*20*/);
*n=M344;
r344make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_writable/*12*/));
R=((T0*)n);
}
}
R=r344to_runnable(((T344*)R),a1);
}
/*FI]*/
return R;
}


void r344check_creation_clause(T344* C,T0* a1){
/*[IF*/
if(/*(IRF4.7has_creation_clause*/((/*RF2*/((T61*)(X62base_class(a1)))->_creation_clause_list/*38*/))!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=((T0*)ms345_813171837);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms345_262));
{T104 se_tmp0;
r344error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms345_1993444075));
}
}
/*FI]*/
}


T0* r311check_assertion_mode(void){
T0* R=NULL;
R=((T0*)ms311_3118);
return R;
}


void r311compile_to_c(T311* C){
T0* _assertion=NULL;
T6 _need_se_tmp=0;
T2 _i=0;
/*[IF*/
if(r311is_always_true(C)){
r83increment_static_expression_count((T83*)(oBC19cpp),r204count((T204*)((/*RF2*/(C)->_list/*12*/))));
}
else{
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*20*/))==((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_179423058));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_3175));
/*]*/
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_1650));
/*]*/
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_9130));
/*]*/
}
/*FI]*/
_i=1;
while (!((_i)>((/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/))))
{
_assertion=r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i);
/*[IF*/
if(r203is_always_true(((T203*)_assertion))){
}
else{
r203collect_c_tmp(((T203*)_assertion));
_need_se_tmp=r83se_tmp_open_declaration((T83*)(oBC19cpp));
/*[IRF3.3set_check_assertion_mode*/((((T83*)((T83*)(oBC19cpp))))->_check_assertion_mode)=(r311check_assertion_mode());
/*]*/
r203compile_to_c(((T203*)_assertion));
/*[IF*/
if(_need_se_tmp){
r83se_tmp_close_declaration((T83*)(oBC19cpp));
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*20*/))==((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_862271166));
/*]*/
}
else{
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_229510));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r311make(T311* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_header_comment)=a2;
(/*SFN*/C->_list)=a3;
}


void r311afd_check(T311* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
while (!((_i)==(0)))
{
r203afd_check((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
}


T6 r311is_always_true(T311* C){
T6 R=0;
T0* _assertion=NULL;
T2 _i=0;
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
R=1;
while (!((!(R))||((_i)==(0))))
{
_assertion=r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i);
R=r203is_always_true(((T203*)_assertion));
_i=(_i)-(1);
}
return R;
}


T6 r311use_current(T311* C){
T6 R=0;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
while (!((R)||((_i)==(0))))
{
R=r203use_current((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T0* r311twin(T311* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T311*)R)=*C;
return R;
}


T6 r311is_pre_computable(T311* C){
T6 R=0;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))==((void*)(NULL))){
R=1;
}
else{
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
R=1;
while (!((!(R))||((_i)==(0))))
{
R=r203is_pre_computable((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T0* r311to_runnable(T311* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*16*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_run_feature)=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
(/*SFN*/C->_list)=r426runnable((/*RF2*/(C)->_list/*12*/),a1,(/*RF2*/(C)->_run_feature/*20*/),((T3)'\137'));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
R=r311twin(C);
/*[IRF3.3set_current_type*/((((T311*)(((T311*)R))))->_current_type)=(NULL);
/*]*/
R=r311to_runnable(((T311*)R),a1);
}
/*FI]*/
return R;
}


T0* r309check_assertion_mode(void){
T0* R=NULL;
R=((T0*)ms309_3190);
return R;
}


void r309make_runnable(T309* C,T104 a1,T0* a2,T0* a3,T0* a4){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_list)=a2;
(/*SFN*/C->_current_type)=a3;
(/*SFN*/C->_run_feature)=a4;
}


void r309compile_to_c(T309* C){
T0* _assertion=NULL;
T6 _need_se_tmp=0;
T2 _i=0;
/*[IF*/
if(r309is_always_true(C)){
r83increment_static_expression_count((T83*)(oBC19cpp),r204count((T204*)((/*RF2*/(C)->_list/*12*/))));
}
else{
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*20*/))==((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_179423058));
/*]*/
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_3175));
/*]*/
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_1650));
/*]*/
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_9130));
/*]*/
}
/*FI]*/
_i=1;
while (!((_i)>((/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/))))
{
_assertion=r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i);
/*[IF*/
if(r203is_always_true(((T203*)_assertion))){
}
else{
r203collect_c_tmp(((T203*)_assertion));
_need_se_tmp=r83se_tmp_open_declaration((T83*)(oBC19cpp));
/*[IRF3.3set_check_assertion_mode*/((((T83*)((T83*)(oBC19cpp))))->_check_assertion_mode)=(r309check_assertion_mode());
/*]*/
r203compile_to_c(((T203*)_assertion));
/*[IF*/
if(_need_se_tmp){
r83se_tmp_close_declaration((T83*)(oBC19cpp));
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*20*/))==((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_862271166));
/*]*/
}
else{
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*20*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms206_229510));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r309add_into(T309* C,T0* a1){
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=1;
while (!((_i)>((/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/))))
{
_a=r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i);
/*[IF*/
if(!(r204fast_has(((T204*)a1),_a))){
r204add_last(((T204*)a1),_a);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r309make(T309* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_header_comment)=a2;
(/*SFN*/C->_list)=a3;
}


void r309afd_check(T309* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
while (!((_i)==(0)))
{
r203afd_check((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
}


T6 r309is_always_true(T309* C){
T6 R=0;
T0* _assertion=NULL;
T2 _i=0;
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
R=1;
while (!((!(R))||((_i)==(0))))
{
_assertion=r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i);
R=r203is_always_true(((T203*)_assertion));
_i=(_i)-(1);
}
return R;
}


T6 r309use_current(T309* C){
T6 R=0;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/);
while (!((R)||((_i)==(0))))
{
R=r203use_current((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r309c_declare_for_old(T309* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_lower/*12*/);
while (!((_i)>((/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/))))
{
r203c_declare_for_old((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)+(1);
}
}
/*FI]*/
}


void r309compile_to_c_old(T309* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_list/*12*/))!=((void*)(NULL))){
_i=(/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_lower/*12*/);
while (!((_i)>((/*RF2*/((T204*)((/*RF2*/(C)->_list/*12*/)))->_upper/*8*/))))
{
r203compile_to_c_old((T203*)(r204item((T204*)((/*RF2*/(C)->_list/*12*/)),_i)));
_i=(_i)+(1);
}
}
/*FI]*/
}
T0*oBC42temporary_type_name=NULL;
T0*oBC42id_memory=NULL;


T0* r42system_tools(void){
if(fBC19system_tools==0){fBC19system_tools=1;{
{T48*n=((T48*)se_malloc(sizeof(*n))/*17*/);
*n=M48;
oBC19system_tools=((T0*)n);
r48make(n);
}
}}
return oBC19system_tools;
}


T2 r42item(T42* C,T0* a1){
T2 R=0;
/*[IF*/
if(r45has((T45*)(oBC42id_memory),a1)){
R=r45at((T45*)(oBC42id_memory),a1);
}
else{
(/*SFN*/C->_max_id)=((/*RF2*/(C)->_max_id/*0*/))+(1);
R=(/*RF2*/(C)->_max_id/*0*/);
r45put((T45*)(oBC42id_memory),R,a1);
}
/*FI]*/
return R;
}


void r42make(T42* C){
r45put((T45*)(oBC42id_memory),0,((T0*)ms21_12184));
r45put((T45*)(oBC42id_memory),1,((T0*)ms21_1384826));
r45put((T45*)(oBC42id_memory),2,((T0*)ms21_1447702));
r45put((T45*)(oBC42id_memory),3,((T0*)ms21_33120277));
r45put((T45*)(oBC42id_memory),4,((T0*)ms21_12376));
r45put((T45*)(oBC42id_memory),5,((T0*)ms21_274599));
r45put((T45*)(oBC42id_memory),6,((T0*)ms21_1339128));
r45put((T45*)(oBC42id_memory),7,((T0*)ms21_324411));
r45put((T45*)(oBC42id_memory),8,((T0*)ms21_1554777));
r45put((T45*)(oBC42id_memory),9,((T0*)ms21_1498845794));
r45put((T45*)(oBC42id_memory),10,((T0*)ms21_2104));
r45put((T45*)(oBC42id_memory),11,((T0*)ms21_65574));
r45put((T45*)(oBC42id_memory),12,((T0*)ms21_35866627));
r45put((T45*)(oBC42id_memory),13,((T0*)ms21_35868574));
r45put((T45*)(oBC42id_memory),14,((T0*)ms21_7173699));
r45put((T45*)(oBC42id_memory),15,((T0*)ms21_286922));
r45put((T45*)(oBC42id_memory),16,((T0*)ms21_179371455));
(/*SFN*/C->_max_id)=16;
r42disk_restore(C);
}

