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


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


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


void r140make(T140* C,T0* a1,T0* a2){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
}


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


void r140assertion_check(T140* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T68 se_tmp0;
X334vape_check_from((/*RF2*/(C)->_run_feature/*12*/),(*(se_tmp0=r140start_position(C),&se_tmp0)));
}
}
/*FI]*/
X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
}


void r140compile_to_c(T140* C){
T0* _n=NULL;
_n=X82to_string((/*RF2*/(C)->_feature_name/*8*/));
/*[IF*/
if((((T0*)ms15_34432))==((void*)(_n))){
/*[IF*/
if(X52is_expanded(X52run_type(X104result_type((/*RF2*/(C)->_target/*4*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'1');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if((((T0*)ms15_60104))==((void*)(_n))){
/*[IF*/
if(X52is_basic_eiffel_expanded(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'1');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.6call_proc_call_c2c*/{T140* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r140stupid_switch(T140* C,T0* a1){
T6 R=0;
R=r140call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r140result_type(C)));
}
/*FI]*/
return R;
}


T6 r140is_pre_computable(T140* C){
T6 R=0;
/*[IF*/
if(X104is_current((/*RF2*/(C)->_target/*4*/))){
R=X334is_pre_computable((/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
return R;
}


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


void r215make(T215* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_header_comment)=a1;
(/*SFN*/C->_first_one)=a2;
(/*SFN*/C->_remainder)=a3;
}


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


void r215afd_check(T215* C){
T2 _i=0;
_i=r215count(C);
while (!((_i)==(0)))
{
X151afd_check(r215item(C,_i));
_i=(_i)-(1);
}
}


void r215compile_to_c(T215* C){
T6 _no_check=0;
T6 _need_se_tmp=0;
T0* _instruction=NULL;
T2 _c=0;
T2 _i=0;
r325one_more_instruction_generated((T325*)(oBC13cpp));
_no_check=r47no_check((T47*)(oBC13run_control));
_i=1;
_c=r215count(C);
while (!((_i)>(_c)))
{
_instruction=r215item(C,_i);
X151collect_c_tmp(_instruction);
_need_se_tmp=r325se_tmp_open_declaration((T325*)(oBC13cpp));
X151compile_to_c(_instruction);
r325one_more_instruction_generated((T325*)(oBC13cpp));
/*[IF*/
if(_need_se_tmp){
r325se_tmp_close_declaration((T325*)(oBC13cpp));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r215stupid_switch(T215* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
_i=r215count(C);
while (!((!(R))||((_i)==(0))))
{
R=X151stupid_switch(r215item(C,_i),a1);
_i=(_i)-(1);
}
return R;
}


T6 r215use_current(T215* C){
T6 R=0;
T2 _i=0;
_i=r215count(C);
while (!((R)||((_i)==(0))))
{
R=X151use_current(r215item(C,_i));
_i=(_i)-(1);
}
return R;
}


T0* r215to_runnable(T215* C,T0* a1){
T0* R=NULL;
T0* _i2=NULL;
T0* _i1=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_first_one/*8*/))==((void*)(NULL))){
R=((T0*)(C));
}
 else if(((/*RF2*/(C)->_current_type/*4*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_i=r215count(C);
while (!((_i)==(0)))
{
_i1=r215item(C,_i);
_i2=X151to_runnable(_i1,a1);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T66*)(oBC13eh))->_error_counter/*0*/)/*)*/)>(0)){
/*[IRF3.6append*/{T0* b1=((T0*)ms215_58608);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52written_mark((/*RF2*/(C)->_current_type/*4*/));
r7append((T7*)(oBC66explanation),b1);
}/*]*/
{T68 se_tmp0;
r66add_position((*(se_tmp0=X151start_position(_i1),&se_tmp0)));
}
r215fatal_error(((T0*)ms215_174));
}
else{
r215put(C,_i2,_i);
}
/*FI]*/
_i=(_i)-(1);
}
R=((T0*)(C));
}
else{
{T215*n=((T215*)malloc(sizeof(*n))/*16*/);
*n=M215;
r215from_compound(n,(T0*)C);
R=((T0*)n);
}
R=r215to_runnable(((T215*)R),a1);
}
/*FI]*/
return R;
}


void r215put(T215* C,T0* a1,T2 a2){
/*[IF*/
if((a2)==(1)){
(/*SFN*/C->_first_one)=a1;
}
else{
/*[IRF3.5put*/((/*RF2*/((T216*)((/*RF2*/(C)->_remainder/*12*/)))->_storage/*0*/))[(a2)-(2)]=(a1);
/*]*/
}
/*FI]*/
}


T2 r215count(T215* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_first_one/*8*/))==((void*)(NULL))){
}
 else if(((/*RF2*/(C)->_remainder/*12*/))!=((void*)(NULL))){
R=((/*RF2*/((T216*)((/*RF2*/(C)->_remainder/*12*/)))->_upper/*8*/))+(2);
}
else{
R=1;
}
/*FI]*/
return R;
}


T6 r215is_pre_computable(T215* C){
T6 R=0;
T2 _i=0;
_i=r215count(C);
R=1;
while (!((!(R))||((_i)==(0))))
{
R=X151is_pre_computable(r215item(C,_i));
_i=(_i)-(1);
}
return R;
}


void r215from_compound(T215* C,T0* a1){
(/*SFN*/C->_header_comment)=(/*RF2*/(((T215*)a1))->_header_comment/*0*/);
(/*SFN*/C->_first_one)=(/*RF2*/(((T215*)a1))->_first_one/*8*/);
(/*SFN*/C->_remainder)=(/*RF2*/(((T215*)a1))->_remainder/*12*/);
/*[IF*/
if(((/*RF2*/(C)->_remainder/*12*/))!=((void*)(NULL))){
(/*SFN*/C->_remainder)=r216twin((T216*)((/*RF2*/(C)->_remainder/*12*/)));
}
/*FI]*/
}


T68 r215start_position(T215* C){
T68 R={NULL,0};
/*[IF*/
if((r215count(C))>(0)){
{T68 se_tmp0;
R=(*(se_tmp0=X151start_position((/*RF2*/(C)->_first_one/*8*/)),&se_tmp0));
}
}
/*FI]*/
return R;
}


T0* r215item(T215* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(/*RF2*/(C)->_first_one/*8*/);
}
else{
R=/*(IRF4.6item*/((/*RF2*/((T216*)((/*RF2*/(C)->_remainder/*12*/)))->_storage/*0*/))[(a1)-(2)]/*)*/;
}
/*FI]*/
return R;
}


void r298fe_c2c(T0* a1){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position(a1),&se_tmp0)));
}
r298fatal_error(((T0*)ms288_129648));
}


T6 r298stupid_switch_function(T0* a1,T0* a2){
T6 R=0;
return R;
}


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


T6 r298stupid_switch_procedure(T0* a1,T0* a2){
T6 R=0;
return R;
}


T2 r388static_value_mem(T388* C){
T2 R=0;
R=X104static_value((/*RF2*/(C)->_value/*28*/));
return R;
}


T2 r388id(T388* C){
T2 R=0;
R=X52id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


T6 r388use_current(T388* C){
T6 R=0;
{int z1=(/*RF2*/(C)->_use_current_state/*16*/);

if((22==z1)){
R=1;
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_use_current_state)=24;
/*[IRF3.3compute_use_current*/((((T388*)(C)))->_use_current_state)=(21);
/*]*/
R=((/*RF2*/(C)->_use_current_state/*16*/))==(22);
}
 else {R=1;
}}
return R;
}


void r388fall_down(T388* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X52run_class((/*RF2*/(C)->_current_type/*8*/));
_running=(/*RF2*/(((T50*)_current_rc))->_running/*9*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T53*)_running))->_lower/*12*/);
while (!((_i)>((/*RF2*/(((T53*)_running))->_upper/*8*/))))
{
_sub_rc=r53item(((T53*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X52base_class((/*RF2*/(((T50*)_sub_rc))->_current_type/*0*/));
_sub_name=r51new_name_of(((T51*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*12*/));
_rf=r50get_feature(((T50*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


T6 r388is_static(T388* C){
T6 R=0;
R=X104is_static((/*RF2*/(C)->_value/*28*/));
return R;
}


T6 r388is_exported_in(T388* C,T0* a1){
T6 R=0;
R=r99gives_permission_to((T99*)(r388clients(C)),a1);
return R;
}


T0* r388clients(T388* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=/*SSWARF2*//*X199base_class*/(/*RF2*/((T211*)((/*RF2*/(C)->_base_feature/*24*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=/*SSWARF2*//*X199clients*/(/*RF2*/((T211*)((/*RF2*/(C)->_base_feature/*24*/)))->_clients/*16*/);
}
else{
R=r51clients_for(((T51*)_bc),(/*RF2*/(C)->_name/*12*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r388address_of_c_define(T388* C,T0* a1){
{T68 se_tmp0;
r66add_position((*(se_tmp0=r150start_position(((T150*)a1)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=r388start_position(C),&se_tmp0)));
}
r388fatal_error(((T0*)ms388_106339));
}


T0* r388run_class(T388* C){
T0* R=NULL;
R=X52run_class((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r388make(T388* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r50add_rf((T50*)(r388run_class(C)),(T0*)C,X82to_key(a2));
r49incr_magic_count((T49*)(oBC13small_eiffel));
(/*SFN*/C->_use_current_state)=23;
(/*SFN*/C->_stupid_switch_state)=23;
r49push((T49*)(oBC13small_eiffel),(T0*)C);
r388initialize(C);
r49pop((T49*)(oBC13small_eiffel));
}


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


void r388c_assertion_flag(T388* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r388c_frame_descriptor_name_in(C,oBC334c_code);
r7append((T7*)(oBC334c_code),((T0*)ms334_30285));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}


void r388initialize(T388* C){
T0* _original_name=NULL;
T0* _bc=NULL;
T2 _i=0;
(/*SFN*/C->_result_type)=/*SSWARF2*//*X199result_type*/(/*RF2*/((T211*)((/*RF2*/(C)->_base_feature/*24*/)))->_result_type/*20*/);
(/*SFN*/C->_result_type)=X52to_runnable((/*RF2*/(C)->_result_type/*32*/),(/*RF2*/(C)->_current_type/*8*/));
_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_original_name=r51original_name(((T51*)_bc),/*SSWARF2*//*X199base_class*/(/*RF2*/((T211*)((/*RF2*/(C)->_base_feature/*24*/)))->_base_class/*4*/),(/*RF2*/(C)->_name/*12*/));
_i=r83index_of((T83*)(/*SSWARF2*//*X199names*/(/*RF2*/((T211*)((/*RF2*/(C)->_base_feature/*24*/)))->_names/*8*/)),_original_name);
(/*SFN*/C->_value)=X199value((/*RF2*/(C)->_base_feature/*24*/),_i);
(/*SFN*/C->_value)=X104to_runnable((/*RF2*/(C)->_value/*28*/),(/*RF2*/(C)->_current_type/*8*/));
}


T0* r388stupid_switch(T388* C,T0* a1){
T0* R=NULL;
{int z1=(/*RF2*/(C)->_stupid_switch_state/*20*/);

if((22==z1)){
R=((T0*)ms388_5061);
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_stupid_switch_state)=24;
r388compute_stupid_switch(C,a1);
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(22)){
R=((T0*)ms388_5061);
}
/*FI]*/
}
 else {}}
return R;
}


void r388compute_stupid_switch(T388* C,T0* a1){
(/*SFN*/C->_stupid_switch_state)=22;
}


void r388mapping_c(T388* C){
T0* _real_constant=NULL;
/*[IF*/
if(X52is_double((/*RF2*/(C)->_result_type/*32*/))){
_real_constant=(/*RF2*/(C)->_value/*28*/);
if(NULL!=(_real_constant)){
switch(((T0*)_real_constant)->id){
case 164:
break;
default:
_real_constant=NULL;
}
}/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),(/*RF2*/(((T164*)_real_constant))->_to_string/*12*/));
/*]*/
}
else{
X104compile_to_c((/*RF2*/(C)->_value/*28*/));
}
/*FI]*/
}


void r388fe_vffd7(T388* C){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X52start_position((/*RF2*/(C)->_result_type/*32*/)),&se_tmp0)));
}
r388fatal_error(((T0*)ms334_203069));
}


void r388c_frame_descriptor_name_in(T388* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r388id(C),a1);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),a1);
}


T68 r388start_position(T388* C){
T68 R={NULL,0};
{T68 se_tmp0;
R=(*(se_tmp0=X199start_position((/*RF2*/(C)->_base_feature/*24*/)),&se_tmp0));
}
return R;
}


void r47set_is_deep_equal_used(T47* C){
/*[IRF3.3set_deep_twin_used*/((((T47*)(C)))->_deep_twin_used)=(1);
/*]*/
(/*SFN*/C->_is_deep_equal_used)=1;
}


T6 r47ensure_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-3);
return R;
}


T6 r47debug_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))==(1);
return R;
}


T0* r47string_aliaser(void){
if(fBC13string_aliaser==0){fBC13string_aliaser=1;{
{T21*n=((T21*)malloc(1));
oBC13string_aliaser=((T0*)n);
/*[IRF3.2make*//*[IRF3.6add1*/{T0* b1=((T0*)ms15_696);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1915);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_669);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1980);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9234);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6405);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12529);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9801);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_16393);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12550);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_4728);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_10740);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12030);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_14817);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6307);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6643);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12595);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_5508);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_17448);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1216);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7928);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6776);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12804);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1168);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7576);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_4956);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_16692);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_19124);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_921);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_10680);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_64);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_368);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_61);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_246);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_62);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9408);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_242);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_60);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_45);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_42);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_216);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1011);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_450);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_8211);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_43);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_94);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_552);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_564);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_47);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_188);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_35);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1035a);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11424);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2600);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
r21add2(((T0*)ms15_22524));
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6702);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11776);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
r21add2(((T0*)ms15_29246));
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13419);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2765a);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1644);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_19294);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1772);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_15070);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_15570);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_27034);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_15190);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_15890);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_19151);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13491);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_28490);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_8750);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_19437);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22824a);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_23829);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_27272);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_10528);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13707);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6846);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1664);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2760);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2730a);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22248);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22788);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_30660);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13995);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_432);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
r21add2(((T0*)ms15_22596));
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_60104);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_24960);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_34432);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11144);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_18964);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1724);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1744);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2765);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_6762);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1656);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
r21add2(((T0*)ms15_60016));
r21add2(((T0*)ms15_26880));
r21add2(((T0*)ms15_33240));
r21add2(((T0*)ms15_21624));
r21add2(((T0*)ms15_60060));
r21add2(((T0*)ms15_26908));
r21add2(((T0*)ms15_33270));
r21add2(((T0*)ms15_21648));
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_17886);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22824);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_21192);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2785);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11496);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_53940);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1035);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2440);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2445);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_32730);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12744);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13662);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_8547);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_8505);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9436);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_14193);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12915a);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12915);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_34528);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13752);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11336);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_26156);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_11376);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_27580);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_33990);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_27443);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_40358);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_25584);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7380);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2730);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7530);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13977);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_14175);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_16970);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_8820);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7326);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22716);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_12978);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_16770);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_16850);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9051);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_21300);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_56720);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1800);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_2780);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_27456);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_15650);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_9275);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_58075);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_22140);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_13833);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_7314);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*[IRF3.6add1*/{T0* b1=((T0*)ms15_1608);
r23put((T23*)(oBC21memory),b1,b1);
}/*]*/
/*]*/
}
}}
return oBC13string_aliaser;
}


T6 r47no_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-5);
return R;
}


T6 r47boost(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))==(-6);
return R;
}


T6 r47require_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-4);
return R;
}


void r47compute_root_class(T47* C,T0* a1){
T3 _c=0;
T2 _i=0;
(/*SFN*/C->_root_class)=r7twin(((T7*)a1));
/*[IF*/
if(r7has_suffix((T7*)((/*RF2*/(C)->_root_class/*5*/)),((T0*)ms13_294))){
r7remove_last((T7*)((/*RF2*/(C)->_root_class/*5*/)),2);
}
/*FI]*/
_i=(/*RF2*/((T7*)((/*RF2*/(C)->_root_class/*5*/)))->_count/*4*/);
while (!((_i)==(0)))
{
_c=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_root_class/*5*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
/*[IF*/
if(r3is_letter(_c)){
_i=(_i)-(1);
}
 else if((_c)==(((T3)'\137'))){
_i=(_i)-(1);
}
 else if(r3is_digit(_c)){
_i=(_i)-(1);
}
else{
r7remove_first((T7*)((/*RF2*/(C)->_root_class/*5*/)),_i);
_i=0;
}
/*FI]*/
}
r7to_upper((T7*)((/*RF2*/(C)->_root_class/*5*/)));
(/*SFN*/C->_root_class)=((/*UT*/(void)((T21*)(r47string_aliaser()))),r21item((/*RF2*/(C)->_root_class/*5*/)));
}


T6 r47loop_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-1);
return R;
}


T6 r47invariant_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-2);
return R;
}


T6 r47all_check(T47* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(0);
return R;
}


T0* r47root_procedure(T47* C){
T0* R=NULL;
R=(/*RF2*/(C)->_root_procedure_memory/*21*/);
/*[IF*/
if((R)==((void*)(NULL))){
R=((T0*)ms15_1656);
}
/*FI]*/
return R;
}


T0* r280generic_list(T280* C){
T0* R=NULL;
/*[IF*/
if(r280is_generic(C)){
R=X52generic_list((/*RF2*/(C)->_run_type/*12*/));
}
else{
r280fatal_error_generic_list(C);
}
/*FI]*/
return R;
}


T6 r280need_gc_mark_function(T280* C){
T6 R=0;
R=X52need_gc_mark_function((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T2 r280id(T280* C){
T2 R=0;
R=(/*RF2*/((T50*)(r280run_class(C)))->_id/*4*/);
return R;
}


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


void r280cast_to_ref(T280* C){
X52cast_to_ref((/*RF2*/(C)->_run_type/*12*/));
}


void r280c_header_pass1(T280* C){
X52c_header_pass1((/*RF2*/(C)->_run_type/*12*/));
}


void r280just_before_gc_mark_in(T280* C,T0* a1){
X52just_before_gc_mark_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


void r280c_header_pass3(T280* C){
X52c_header_pass3((/*RF2*/(C)->_run_type/*12*/));
}


void r280gc_call_new_in(T280* C,T0* a1){
r7append(((T7*)a1),((T0*)ms14_990));
r2append_in(r280id(C),a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


T6 r280is_array(T280* C){
T6 R=0;
R=X52is_array((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T0* r280base_class(T280* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r280base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r61base_class(((T61*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms52_36693);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66add_type((T0*)C,((T0*)ms14_46));
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}


T0* r280look_up_for(T280* C,T0* a1,T0* a2){
T0* R=NULL;
R=r51look_up_for((T51*)(r280base_class(C)),a1,a2);
return R;
}


T2 r280c_sizeof(T280* C){
T2 R=0;
R=X52c_sizeof((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280has_creation(T280* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)((/*RF2*/(C)->_run_type/*12*/)))){
R=r51has_creation((T51*)(r280base_class(C)),a1);
}
else{
R=X52has_creation((/*RF2*/(C)->_run_type/*12*/),a1);
}
/*FI]*/
return R;
}


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


T6 r280need_c_struct(T280* C){
T6 R=0;
R=X52need_c_struct((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280mapping_cast(T280* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms52_15456)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms52_15456)),((T3)'\50'));
r280c_type_for_target_in(C,((T0*)ms52_15456));
r7extend((T7*)(((T0*)ms52_15456)),((T3)'\51'));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms52_15456));
/*]*/
}


T0* r280actual_reference(T280* C,T0* a1){
T0* R=NULL;
R=X52actual_reference((/*RF2*/(C)->_run_type/*12*/),a1);
return R;
}


T6 r280is_a_in(T280* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_to_string/*8*/)/*)*/)==((void*)(X52written_mark(a1)))){
R=1;
}
else{
_ct=(/*RF2*/(((T50*)a2))->_current_type/*0*/);
_t1=r280to_runnable(C,_ct);
_t2=X52to_runnable(a1,_ct);
/*[IF*/
if((X52run_time_mark(_t1))==((void*)(X52run_time_mark(_t2)))){
R=1;
}
else{
R=X52is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


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


T6 r280is_boolean(T280* C){
T6 R=0;
R=X52is_boolean((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_a(T280* C,T0* a1){
T6 R=0;
R=X52is_a((/*RF2*/(C)->_run_type/*12*/),a1);
return R;
}


T6 r280is_generic(T280* C){
T6 R=0;
R=X52is_generic((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280make(T280* C,T0* a1,T2 a2){
(/*SFN*/C->_rank)=a2;
(/*SFN*/C->_formal_name)=a1;
}


T0* r280formal_generic_list(T280* C){
T0* R=NULL;
R=(/*RF2*/((T51*)((/*RF2*/(/*(IRF4.6start_position*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_start_position/*0*/)/*)*/)._base_class/*0*/)))->_formal_generic_list/*22*/);
return R;
}


T6 r280is_reference(T280* C){
T6 R=0;
R=X52is_reference((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_real(T280* C){
T6 R=0;
R=X52is_real((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_user_expanded(T280* C){
T6 R=0;
R=X52is_user_expanded((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_integer(T280* C){
T6 R=0;
R=X52is_integer((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_any(T280* C){
T6 R=0;
R=X52is_any((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280fatal_error_generic_list(T280* C){
r66add_type((T0*)C,((T0*)ms52_28899));
r66print_as_fatal_error((T66*)(oBC13eh));
}


T6 r280is_string(T280* C){
T6 R=0;
R=X52is_string((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280c_initialize_in(T280* C,T0* a1){
X52c_initialize_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


T0* r280constraint(T280* C){
T0* R=NULL;
R=(/*RF2*/((T278*)(r280formal_arg(C)))->_constraint/*4*/);
return R;
}


T0* r280smallest_ancestor(T280* C,T0* a1){
T0* R=NULL;
R=X52smallest_ancestor((/*RF2*/(C)->_run_type/*12*/),a1);
return R;
}


void r280c_header_pass2(T280* C){
X52c_header_pass2((/*RF2*/(C)->_run_type/*12*/));
}


void r280c_header_pass4(T280* C){
X52c_header_pass4((/*RF2*/(C)->_run_type/*12*/));
}


T6 r280is_double(T280* C){
T6 R=0;
R=X52is_double((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_none(T280* C){
T6 R=0;
R=X52is_none((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T0* r280to_runnable(T280* C,T0* a1){
T0* R=NULL;
T0* _gl=NULL;
T0* _t=NULL;
T0* _p=NULL;
T0* _bc_ct=NULL;
T0* _bc_written=NULL;
_bc_written=(/*RF2*/(/*(IRF4.6start_position*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_start_position/*0*/)/*)*/)._base_class/*0*/);
_bc_ct=X52base_class(a1);
/*[IF*/
if((_bc_written)==((void*)(_bc_ct))){
_gl=X52generic_list(a1);
/*[IF*/
if(((_gl)==((void*)(NULL)))||(((/*RF2*/(C)->_rank/*8*/))>((/*RF2*/(((T258*)_gl))->_upper/*8*/)))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X52start_position(a1),&se_tmp0)));
}
r66add_position(/*(IRF4.6start_position*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_start_position/*0*/)/*)*/);
r280fatal_error(((T0*)ms14_60064));
}
else{
R=r280make_runnable(C,r258item(((T258*)_gl),(/*RF2*/(C)->_rank/*8*/)));
}
/*FI]*/
}
else{
_p=/*(IRF4.6first_parent_for*/r57first_parent_for(((T57*)((/*RF2*/(((T51*)_bc_ct))->_parent_list/*34*/))),_bc_written)/*)*/;
while (!((_p)==((void*)(NULL))))
{
_t=(/*RF2*/(((T58*)_p))->_type/*4*/);
_t=X52run_type(X52to_runnable(_t,a1));
/*[IF*/
if((R)==((void*)(NULL))){
R=r280to_runnable(C,_t);
_p=NULL;
}
else{
_p=/*(IRF4.6next_parent_for*/r57next_parent_for(((T57*)((/*RF2*/(((T51*)_bc_ct))->_parent_list/*34*/))),_bc_written,_p)/*)*/;
}
/*FI]*/
}
/*[IF*/
if((R)==((void*)(NULL))){
r66add_type(a1,((T0*)ms280_18176));
r280warning(/*(IRF4.6start_position*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_start_position/*0*/)/*)*/,((T0*)ms280_50008));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r280make_runnable(T280* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
_rt2=X52run_type(a1);
/*[IF*/
if((_rt2)==((void*)(NULL))){
/*[IF*/
if((a1)!=((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X52start_position(a1),&se_tmp0)));
}
}
/*FI]*/
r280error(/*(IRF4.6start_position*/(/*RF2*/(((T61*)((/*RF2*/(C)->_formal_name/*4*/))))->_start_position/*0*/)/*)*/,((T0*)ms14_28644));
}
 else if(((/*RF2*/(C)->_run_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_run_type)=_rt2;
R=((T0*)(C));
}
else{
R=r280twin(C);
/*[IRF3.3set_run_type*/((((T280*)(((T280*)R))))->_run_type)=(_rt2);
/*]*/
}
/*FI]*/
return R;
}


T0* r280twin(T280* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T280*)R)=*C;
return R;
}


T6 r280is_pointer(T280* C){
T6 R=0;
R=X52is_pointer((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T0* r280formal_arg(T280* C){
T0* R=NULL;
R=/*(IRF4.6item*/r279item(((T279*)((/*RF2*/((T94*)(r280formal_generic_list(C)))->_list/*8*/))),(/*RF2*/(C)->_rank/*8*/))/*)*/;
return R;
}


void r280id_extra_information(T280* C,T0* a1){
r48put_string(((T48*)a1),((T0*)ms52_9724));
/*[IF*/
if(r280is_reference(C)){
r48put_string(((T48*)a1),((T0*)ms52_1476));
}
else{
r48put_string(((T48*)a1),((T0*)ms52_759));
}
/*FI]*/
}


void r280gc_define1(T280* C){
X52gc_define1((/*RF2*/(C)->_run_type/*12*/));
}


void r280gc_mark_in(T280* C,T0* a1){
r7append(((T7*)a1),((T0*)ms14_8764));
r2append_in(r280id(C),a1);
}


T0* r280static_base_class_name(T280* C){
T0* R=NULL;
T0* _t=NULL;
_t=r280constraint(C);
/*[IF*/
if((_t)!=((void*)(NULL))){
R=X52static_base_class_name(_t);
}
/*FI]*/
return R;
}


void r280c_type_for_external_in(T280* C,T0* a1){
/*[IF*/
if(r280is_reference(C)){
r7append(((T7*)a1),((T0*)ms14_1736a));
r7extend(((T7*)a1),((T3)'\52'));
}
else{
r280c_type_for_result_in(C,a1);
}
/*FI]*/
}


void r280c_type_for_argument_in(T280* C,T0* a1){
X52c_type_for_argument_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


T0* r280run_time_mark(T280* C){
T0* R=NULL;
R=X52run_time_mark((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T0* r280run_class(T280* C){
T0* R=NULL;
R=r49run_class((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_dummy_expanded(T280* C){
T6 R=0;
R=X52is_dummy_expanded((/*RF2*/(C)->_run_type/*12*/));
return R;
}


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


T6 r280is_expanded(T280* C){
T6 R=0;
R=X52is_expanded((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280c_type_for_result_in(T280* C,T0* a1){
X52c_type_for_result_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


void r280c_type_for_target_in(T280* C,T0* a1){
X52c_type_for_target_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


T0* r280expanded_initializer(T280* C){
T0* R=NULL;
R=X52expanded_initializer((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280is_basic_eiffel_expanded(T280* C){
T6 R=0;
R=X52is_basic_eiffel_expanded((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T6 r280stupid_switch(T280* C,T0* a1){
T6 R=0;
R=r280standard_stupid_switch(C,a1);
return R;
}


T6 r280standard_stupid_switch(T280* C,T0* a1){
T6 R=0;
T2 _i=0;
T0* _rtm2=NULL;
T0* _rtm1=NULL;
T0* _dyn_t=NULL;
T0* _ct=NULL;
T0* _rc=NULL;
R=1;
_i=(/*RF2*/(((T53*)a1))->_upper/*8*/);
_rc=r53item(((T53*)a1),_i);
_i=(_i)-(1);
_ct=(/*RF2*/(((T50*)_rc))->_current_type/*0*/);
_dyn_t=r280to_runnable(C,_ct);
/*[IF*/
if((_dyn_t)==((void*)(NULL))){
R=0;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
_rtm1=X52run_time_mark(_dyn_t);
}
/*FI]*/
while (!((!(R))||((_i)==(0))))
{
_rc=r53item(((T53*)a1),_i);
_i=(_i)-(1);
_ct=(/*RF2*/(((T50*)_rc))->_current_type/*0*/);
_dyn_t=r280to_runnable(C,_ct);
/*[IF*/
if((_dyn_t)==((void*)(NULL))){
R=0;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC66explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T67*)((T67*)(oBC66positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
_rtm2=X52run_time_mark(_dyn_t);
/*[IF*/
if((_rtm1)!=((void*)(_rtm2))){
R=0;
}
/*FI]*/
}
/*FI]*/
}
return R;
}


void r280demangling_in(T280* C,T0* a1){
/*[IF*/
if(r280is_reference(C)){
r7extend(((T7*)a1),((T3)'R'));
}
else{
r7extend(((T7*)a1),((T3)'E'));
}
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),r280run_time_mark(C));
}


void r280c_initialize(T280* C){
X52c_initialize((/*RF2*/(C)->_run_type/*12*/));
}


T6 r280is_character(T280* C){
T6 R=0;
R=X52is_character((/*RF2*/(C)->_run_type/*12*/));
return R;
}


T0* r280base_class_name(T280* C){
T0* R=NULL;
R=X52base_class_name((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280c_frame_descriptor(T280* C){
r7extend((T7*)(oBC13c_frame_descriptor_format),((T3)'\45'));
/*[IF*/
if(r280is_reference(C)){
r7extend((T7*)(oBC13c_frame_descriptor_format),((T3)'R'));
}
else{
r7extend((T7*)(oBC13c_frame_descriptor_format),((T3)'E'));
}
/*FI]*/
r2append_in(r280id(C),oBC13c_frame_descriptor_format);
r7extend((T7*)(oBC13c_frame_descriptor_format),((T3)'\45'));
}


T6 r280is_bit(T280* C){
T6 R=0;
R=X52is_bit((/*RF2*/(C)->_run_type/*12*/));
return R;
}


void r280gc_info_in(T280* C,T0* a1){
X52gc_info_in((/*RF2*/(C)->_run_type/*12*/),a1);
}


void r280gc_define2(T280* C){
X52gc_define2((/*RF2*/(C)->_run_type/*12*/));
}


void r317make(T317* C,T0* a1,T0* a2){
(/*SFN*/C->_clients)=a1;
(/*SFN*/C->_list)=a2;
}


void r317make_all(T317* C,T0* a1){
(/*SFN*/C->_clients)=a1;
(/*SFN*/C->_list)=NULL;
}


T6 r317affect(T317* C,T0* a1){
T6 R=0;
/*[IF*/
if(/*(IRF4.7for_all*/((/*RF2*/(C)->_list/*4*/))==(NULL)/*)*/){
R=1;
}
else{
R=r83has((T83*)((/*RF2*/(C)->_list/*4*/)),a1);
}
/*FI]*/
return R;
}


void r105make(T105* C,T0* a1,T68 a2){
(/*SFN*/C->_to_string)=a1;
(/*SFN*/C->_start_position)=a2;
}


T0* r383runnable(T0* a1,T0* a2,T0* a3,T3 a4){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r101is_empty(((T101*)a1)))){
R=r101twin(((T101*)a1));
_i=(/*RF2*/(((T101*)R))->_upper/*8*/);
while (!((_i)==(0)))
{
r49push((T49*)(oBC13small_eiffel),a3);
_a=r100to_runnable((T100*)(r101item(((T101*)R),_i)),a2,a4);
/*[IF*/
if((_a)==((void*)(NULL))){
{T68 se_tmp0;
r383error((*(se_tmp0=r100start_position((T100*)(r101item(((T101*)R),_i))),&se_tmp0)),((T0*)ms14_14056));
}
}
else{
/*[IRF3.6put*/{T101* C1=((T101*)R);
T0* b1=_a;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
r49pop((T49*)(oBC13small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T0* r383require_end(T383* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _er=NULL;
T0* _r2=NULL;
T0* _r=NULL;
T0* _a=NULL;
T0* _bc=NULL;
T68 _sp={NULL,0};
T2 _i=0;
(/*SFN*/C->_processing_require)=0;
_r=r383runnable(oBC383collector,a2,a1,((T3)'R'));
/*[IF*/
if((_r)!=((void*)(NULL))){
{T101*n=((T101*)malloc(sizeof(*n))/*16*/);
*n=M101;
r101with_capacity(n,r101count(((T101*)_r)),1);
_r2=((T0*)n);
}
_a=r101item(((T101*)_r),1);
r101add_last(((T101*)_r2),_a);
{T68 se_tmp0;
_sp=(*(se_tmp0=r100start_position(((T100*)_a)),&se_tmp0));
}
_bc=(/*RF2*/(_sp)._base_class/*0*/);
_i=2;
{T68 se_tmp0;
while (!(((_i)>((/*RF2*/(((T101*)_r))->_upper/*8*/)))||(((/*RF2*/((*(se_tmp0=r100start_position((T100*)(r101item(((T101*)_r),_i))),&se_tmp0)))._base_class/*0*/))!=((void*)(_bc)))))
{
r101add_last(((T101*)_r2),r101item(((T101*)_r),_i));
_i=(_i)+(1);
}
}
{T286*n=((T286*)malloc(sizeof(*n))/*25*/);
*n=M286;
r286make_runnable(n,_sp,_r2,a2,a1);
_er=((T0*)n);
}
{T376*n=((T376*)malloc(sizeof(*n))/*4*/);
*n=M376;
r376make(n,_er);
R=((T0*)n);
}
while (!((_i)>((/*RF2*/(((T101*)_r))->_upper/*8*/))))
{
{T101*n=((T101*)malloc(sizeof(*n))/*16*/);
*n=M101;
r101with_capacity(n,r101count(((T101*)_r)),1);
_r2=((T0*)n);
}
_a=r101item(((T101*)_r),_i);
r101add_last(((T101*)_r2),_a);
{T68 se_tmp0;
_sp=(*(se_tmp0=r100start_position(((T100*)_a)),&se_tmp0));
}
_bc=(/*RF2*/(_sp)._base_class/*0*/);
_i=(_i)+(1);
{T68 se_tmp0;
while (!(((_i)>((/*RF2*/(((T101*)_r))->_upper/*8*/)))||(((/*RF2*/((*(se_tmp0=r100start_position((T100*)(r101item(((T101*)_r),_i))),&se_tmp0)))._base_class/*0*/))!=((void*)(_bc)))))
{
r101add_last(((T101*)_r2),r101item(((T101*)_r),_i));
_i=(_i)+(1);
}
}
{T286*n=((T286*)malloc(sizeof(*n))/*25*/);
*n=M286;
r286make_runnable(n,_sp,_r2,a2,a1);
_er=((T0*)n);
}
r376add(((T376*)R),_er);
}
}
/*FI]*/
return R;
}


void r383assertion_add_last(T383* C,T0* a1){
T0* _e=NULL;
T0* _r=NULL;
/*[IF*/
if((/*RF2*/(C)->_processing_require/*0*/)){
_r=X90require_assertion(a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=(/*RF2*/(((T286*)_r))->_header_comment/*8*/);
}
/*FI]*/
r286add_into(((T286*)_r),oBC383collector);
}
/*FI]*/
}
else{
_e=X90ensure_assertion(a1);
/*[IF*/
if((_e)!=((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=(/*RF2*/(((T214*)_e))->_header_comment/*8*/);
}
/*FI]*/
r214add_into(((T214*)_e),oBC383collector);
}
/*FI]*/
}
/*FI]*/
}


T0* r383ensure_end(T383* C,T0* a1,T0* a2){
T0* R=NULL;
T68 _position={NULL,0};
T0* _r=NULL;
_r=r383runnable(oBC383collector,a2,a1,((T3)'E'));
/*[IF*/
if((_r)!=((void*)(NULL))){
_position=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(a2)))->_name/*18*/)))->_start_position/*0*/);
{T214*n=((T214*)malloc(sizeof(*n))/*25*/);
*n=M214;
r214make_runnable(n,_position,_r,a2,a1);
R=((T0*)n);
}
/*[IRF3.3set_header_comment*/((((T214*)(((T214*)R))))->_header_comment)=((/*RF2*/(C)->_header_comment/*1*/));
/*]*/
}
/*FI]*/
return R;
}


void r383invariant_add_last(T383* C,T0* a1){
T0* _bc2=NULL;
T0* _bc=NULL;
T0* _hc2=NULL;
r102add_into(((T102*)a1),oBC383collector);
_hc2=(/*RF2*/(((T102*)a1))->_header_comment/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=_hc2;
}
 else if((_hc2)==((void*)(NULL))){
}
else{
_bc=(/*RF2*/((/*RF2*/((T81*)((/*RF2*/(C)->_header_comment/*1*/)))->_start_position/*0*/))._base_class/*0*/);
_bc2=(/*RF2*/((/*RF2*/(((T81*)_hc2))->_start_position/*0*/))._base_class/*0*/);
/*[IF*/
if(((_bc2)==((void*)(_bc)))||(r51is_subclass_of(((T51*)_bc2),_bc))){
(/*SFN*/C->_header_comment)=_hc2;
}
/*FI]*/
}
/*FI]*/
}
T0*oBC383collector=NULL;


void r383ensure_start(T383* C){
r101clear((T101*)(oBC383collector));
(/*SFN*/C->_header_comment)=NULL;
}


void r383require_start(T383* C){
r101clear((T101*)(oBC383collector));
(/*SFN*/C->_header_comment)=NULL;
(/*SFN*/C->_processing_require)=1;
}


T0* r383invariant_end(T383* C,T0* a1){
T0* R=NULL;
T68 _position={NULL,0};
T0* _r=NULL;
_r=r383runnable(oBC383collector,a1,NULL,((T3)'\137'));
/*[IF*/
if((_r)!=((void*)(NULL))){
r49incr_magic_count((T49*)(oBC13small_eiffel));
_position=(/*RF2*/((T61*)((/*RF2*/((T51*)(X52base_class(a1)))->_name/*18*/)))->_start_position/*0*/);
{T102*n=((T102*)malloc(sizeof(*n))/*24*/);
*n=M102;
r102make_runnable(n,_position,_r,a1,NULL);
R=((T0*)n);
}
/*[IRF3.3set_header_comment*/((((T102*)(((T102*)R))))->_header_comment)=((/*RF2*/(C)->_header_comment/*1*/));
/*]*/
}
/*FI]*/
return R;
}


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


void r383invariant_start(T383* C){
r101clear((T101*)(oBC383collector));
(/*SFN*/C->_header_comment)=NULL;
}


T2 r345id(T345* C){
T2 R=0;
R=X52id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r345afd_check(T345* C){
T0* _rc=NULL;
_rc=X52run_class(X52run_type((/*RF2*/(C)->_result_type/*28*/)));
}


T6 r345use_current(T345* C){
T6 R=0;
{int z1=(/*RF2*/(C)->_use_current_state/*16*/);

if((22==z1)){
R=1;
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_use_current_state)=24;
/*[IRF3.3compute_use_current*/((((T345*)(C)))->_use_current_state)=(22);
/*]*/
R=((/*RF2*/(C)->_use_current_state/*16*/))==(22);
}
 else {R=1;
}}
return R;
}


void r345fall_down(T345* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X52run_class((/*RF2*/(C)->_current_type/*8*/));
_running=(/*RF2*/(((T50*)_current_rc))->_running/*9*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T53*)_running))->_lower/*12*/);
while (!((_i)>((/*RF2*/(((T53*)_running))->_upper/*8*/))))
{
_sub_rc=r53item(((T53*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X52base_class((/*RF2*/(((T50*)_sub_rc))->_current_type/*0*/));
_sub_name=r51new_name_of(((T51*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*12*/));
_rf=r50get_feature(((T50*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


T6 r345is_exported_in(T345* C,T0* a1){
T6 R=0;
R=r99gives_permission_to((T99*)(r345clients(C)),a1);
return R;
}


T0* r345clients(T345* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T315*)((/*RF2*/(C)->_base_feature/*24*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T315*)((/*RF2*/(C)->_base_feature/*24*/)))->_clients/*16*/);
}
else{
R=r51clients_for(((T51*)_bc),(/*RF2*/(C)->_name/*12*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


T0* r345run_class(T345* C){
T0* R=NULL;
R=X52run_class((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r345make(T345* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r50add_rf((T50*)(r345run_class(C)),(T0*)C,X82to_key(a2));
r49incr_magic_count((T49*)(oBC13small_eiffel));
(/*SFN*/C->_use_current_state)=23;
(/*SFN*/C->_stupid_switch_state)=23;
r49push((T49*)(oBC13small_eiffel),(T0*)C);
r345initialize(C);
r49pop((T49*)(oBC13small_eiffel));
}


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


void r345c_assertion_flag(T345* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r345c_frame_descriptor_name_in(C,oBC334c_code);
r7append((T7*)(oBC334c_code),((T0*)ms334_30285));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}


void r345initialize(T345* C){
(/*SFN*/C->_result_type)=(/*RF2*/((T315*)((/*RF2*/(C)->_base_feature/*24*/)))->_result_type/*20*/);
(/*SFN*/C->_result_type)=X52to_runnable((/*RF2*/(C)->_result_type/*28*/),(/*RF2*/(C)->_current_type/*8*/));
}


T0* r345stupid_switch(T345* C,T0* a1){
T0* R=NULL;
{int z1=(/*RF2*/(C)->_stupid_switch_state/*20*/);

if((22==z1)){
R=((T0*)ms345_5250);
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_stupid_switch_state)=24;
r345compute_stupid_switch(C,a1);
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(22)){
R=((T0*)ms345_5250);
}
/*FI]*/
}
 else {}}
return R;
}


void r345compute_stupid_switch(T345* C,T0* a1){
/*[IF*/
if(r325attribute_read_removal((T0*)C,a1)){
(/*SFN*/C->_stupid_switch_state)=22;
}
else{
(/*SFN*/C->_stupid_switch_state)=21;
}
/*FI]*/
}


void r345mapping_c(T345* C){
T0* _ct=NULL;
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms345_5256));
/*]*/
_ct=(/*RF2*/(C)->_current_type/*8*/);
/*[IF*/
if(X52is_basic_eiffel_expanded(_ct)){
r325put_target_as_value((T325*)(oBC13cpp));
}
 else if(X52is_reference(_ct)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r325put_target_as_target((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms345_972));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/(C)->_name/*12*/)));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T50* C1=(T50*)(r345run_class(C));
T0* b1=(T0*)C;
r325put_recompilation_comment(r50offset_of(C1,b1));
}/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r325put_target_as_value((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms345_546));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/(C)->_name/*12*/)));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T50* C1=(T50*)(r345run_class(C));
T0* b1=(T0*)C;
r325put_recompilation_comment(r50offset_of(C1,b1));
}/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r345address_of_c_mapping(T345* C){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms345_156));
/*]*/
r325print_current((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms345_606));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/(C)->_name/*12*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r345fe_vffd7(T345* C){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X52start_position((/*RF2*/(C)->_result_type/*28*/)),&se_tmp0)));
}
r345fatal_error(((T0*)ms334_203069));
}


void r345c_frame_descriptor_name_in(T345* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r345id(C),a1);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),a1);
}


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


void r138with(T138* C,T0* a1,T0* a2){
(/*SFN*/C->_to_string)=(/*RF2*/(((T138*)a1))->_to_string/*12*/);
(/*SFN*/C->_start_position)=(/*RF2*/(((T138*)a1))->_start_position/*4*/);
(/*SFN*/C->_run_feature_2)=a2;
}


void r138mapping_c_target(T138* C,T0* a1){
T6 _flag=0;
_flag=r325call_invariant_start(a1);
r138compile_to_c(C);
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r138to_runnable(T138* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
_wbc=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
_new_name=r51new_name_of((T51*)(X52base_class(a1)),_wbc,(T0*)C);
_rf=r50get_feature((T50*)(X52run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r66add_feature_name(_new_name);
r138fatal_error(((T0*)ms14_37417));
}
else{
_rf2=_rf;
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 345:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position(_rf),&se_tmp0)));
}
r138error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms138_56430));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_run_feature_2/*16*/))==((void*)(NULL))){
(/*SFN*/C->_run_feature_2)=_rf2;
R=((T0*)(C));
}
 else if(((/*RF2*/(C)->_run_feature_2/*16*/))==((void*)(_rf))){
R=((T0*)(C));
}
else{
{T138*n=((T138*)malloc(sizeof(*n))/*20*/);
*n=M138;
r138with(n,(T0*)C,_rf2);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r138to_integer(T138* C){
T2 R=0;
r138error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms14_45441));
return R;
}


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


T6 r138can_be_dropped(T138* C){
T6 R=0;
r66add_position((/*RF2*/(C)->_start_position/*4*/));
r138fatal_error(((T0*)ms138_73044));
return R;
}


T0* r138run_feature(T138* C,T0* a1){
T0* R=NULL;
R=r50get_rf_with((T50*)(X52run_class(a1)),(T0*)C);
return R;
}


T0* r138static_result_base_class(T138* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r51e_feature(((T51*)_bc),(T0*)C);
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X90result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X52static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r61base_class(((T61*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r138make(T138* C,T0* a1,T68 a2){
(/*SFN*/C->_to_string)=a1;
(/*SFN*/C->_start_position)=a2;
}


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


void r138undefine_in(T138* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r138origin_base_class(T138* C){
T0* R=NULL;
R=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
return R;
}


void r138compile_to_c(T138* C){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms138_17064));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/((T345*)((/*RF2*/(C)->_run_feature_2/*16*/)))->_name/*12*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T6 r138stupid_switch(T138* C,T0* a1){
T6 R=0;
T0* _rf2=NULL;
_rf2=(/*RF2*/(C)->_run_feature_2/*16*/);
/*[IF*/
if((_rf2)!=((void*)(NULL))){
/*[IF*/
if(r49same_base_feature(_rf2,a1)){
R=(r345stupid_switch(((T345*)_rf2),a1))!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
return R;
}


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


void r155run_feature_match(T155* C,T0* a1){
r155run_feature_has_no_result(C);
X139match_with((/*RF2*/(C)->_arguments/*16*/),(/*RF2*/(C)->_run_feature/*12*/),a1);
}


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


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


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


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


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


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


T0* r155to_runnable(T155* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r155runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r155runnable_args((/*RF2*/(C)->_arguments/*16*/),a1);
_rf=r155run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r155run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*16*/))))){
R=((T0*)(C));
}
else{
{T155*n=((T155*)malloc(sizeof(*n))/*20*/);
*n=M155;
r155with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r155make_runnable(T155* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_arguments)=a2;
(/*SFN*/C->_run_feature)=a3;
R=((T0*)(C));
}
else{
{T155*n=((T155*)malloc(sizeof(*n))/*20*/);
*n=M155;
r155make(n,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
R=((T0*)n);
}
/*[IRF3.3set_run_feature*/((((T155*)(((T155*)R))))->_run_feature)=(a3);
/*]*/
}
/*FI]*/
return R;
}


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


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


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


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


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


void r155run_feature_has_no_result(T155* C){
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*12*/)))!=((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
{T68 se_tmp0;
r66add_position((*(se_tmp0=X82start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r155fatal_error(((T0*)ms152_66627));
}
/*FI]*/
}


void r155compile_to_c(T155* C){
{T68 se_tmp0;
r325se_trace_ins((T325*)(oBC13cpp),(*(se_tmp0=r155start_position(C),&se_tmp0)));
}
/*[IRF3.6call_proc_call_c2c*/{T155* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
}


T2 r155arg_count(T155* C){
T2 R=0;
R=/*SSFRF4*//*X139count*/r139count((T139*)((/*RF2*/(C)->_arguments/*16*/)));
return R;
}


T6 r155stupid_switch(T155* C,T0* a1){
T6 R=0;
R=r155call_proc_call_stupid_switch(C,a1);
return R;
}


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


void r316declaration_in(T316* C,T0* a1){
X82declaration_in((/*RF2*/(C)->_feature_name/*4*/),a1);
}


void r316undefine_in(T316* C,T0* a1){
/*[IF*/
{/*AT*/{T68 se_tmp0;
r316error((*(se_tmp0=r316start_position(C),&se_tmp0)),((T0*)ms82_116840));
}
r51fatal_undefine(((T51*)a1),(T0*)C);
}
/*FI]*/
}


T0* r316origin_base_class(T316* C){
T0* R=NULL;
{T68 se_tmp0;
R=(/*RF2*/((*(se_tmp0=r316start_position(C),&se_tmp0)))._base_class/*0*/);
}
return R;
}


T0* r316to_key(T316* C){
T0* R=NULL;
R=X82to_key((/*RF2*/(C)->_feature_name/*4*/));
return R;
}


void r316put_cpp_tag(T316* C){
X82put_cpp_tag((/*RF2*/(C)->_feature_name/*4*/));
}


T0* r316to_string(T316* C){
T0* R=NULL;
R=X82to_string((/*RF2*/(C)->_feature_name/*4*/));
return R;
}


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


void r316mapping_c_in(T316* C,T0* a1){
X82mapping_c_in((/*RF2*/(C)->_feature_name/*4*/),a1);
}


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


void r368default_mapping_procedure(T368* C){
r368default_mapping_function(C);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
}
T0*oBC368tmp_string=NULL;


T2 r368id(T368* C){
T2 R=0;
R=X52id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r368address_of_c_mapping_wrapper(T368* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r368address_of_wrapper_name_in(C,oBC334c_code);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}


void r368fall_down(T368* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X52run_class((/*RF2*/(C)->_current_type/*8*/));
_running=(/*RF2*/(((T50*)_current_rc))->_running/*9*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T53*)_running))->_lower/*12*/);
while (!((_i)>((/*RF2*/(((T53*)_running))->_upper/*8*/))))
{
_sub_rc=r53item(((T53*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X52base_class((/*RF2*/(((T50*)_sub_rc))->_current_type/*0*/));
_sub_name=r51new_name_of(((T51*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*12*/));
_rf=r50get_feature(((T50*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r368compute_use_current(T368* C){
T0* _ct=NULL;
_ct=(/*RF2*/(C)->_current_type/*8*/);
/*[IF*/
if(X52is_reference(_ct)){
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
(/*SFN*/C->_use_current_state)=22;
}
else{
r368std_compute_use_current(C);
}
/*FI]*/
}
else{
r368std_compute_use_current(C);
}
/*FI]*/
}
T0*oBC13exceptions_handler=NULL;
T0*oBC13c_frame_descriptor_locals=NULL;


void r368c_define(T368* C){
/*[IF*/
if(r368isa_in_line(C)){
r325incr_inlined_procedure_count((T325*)(oBC13cpp));
}
 else if(/*(IRF4.7c_define_done*/((/*RF2*/(C)->_in_line_status/*52*/))==(-(2))/*)*/){
}
else{
(/*SFN*/C->_in_line_status)=-(2);
/*[IF*/
if(r368use_current(C)){
r325incr_procedure_count((T325*)(oBC13cpp));
}
else{
r325incr_real_procedure_count((T325*)(oBC13cpp));
}
/*FI]*/
r368define_prototype(C);
r368c_define_opening(C);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))!=((void*)(NULL))){
r215compile_to_c((T215*)((/*RF2*/(C)->_routine_body/*40*/)));
}
/*FI]*/
r368c_define_closing(C);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_270a));
/*]*/
r368c_frame_descriptor(C);
}
/*FI]*/
}


T6 r368need_local_vars(T368* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))!=((void*)(NULL))){
R=r169produce_c((T169*)((/*RF2*/(C)->_local_vars/*36*/)));
}
/*FI]*/
return R;
}


T0* r368clients(T368* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X52base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_clients/*16*/);
}
else{
R=r51clients_for(((T51*)_bc),(/*RF2*/(C)->_name/*12*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r368put_c_name_tag(T368* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/(/*RF2*/(((T83*)((/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_names/*8*/))))->_first/*0*/)/*)*/;
/*[IF*/
if((X82to_key(_fn))!=((void*)(X82to_key((/*RF2*/(C)->_name/*12*/))))){
X82put_cpp_tag((/*RF2*/(C)->_name/*12*/));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/(C)->_name/*12*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X82put_cpp_tag(_fn);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_1108));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),(/*RF2*/((T61*)(/*(IRF4.6base_class_name*/(/*RF2*/(((T51*)((/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_base_class/*4*/))))->_name/*18*/)/*)*/))->_to_string/*8*/));
/*]*/
/*[IF*/
if((X82to_key(_fn))!=((void*)(X82to_key((/*RF2*/(C)->_name/*12*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r368std_compute_use_current(T368* C){
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*16*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*32*/))!=((void*)(NULL))){
/*[IF*/
if(r376use_current((T376*)((/*RF2*/(C)->_require_assertion/*32*/)))){
(/*SFN*/C->_use_current_state)=22;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*16*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))!=((void*)(NULL))){
/*[IF*/
if(r215use_current((T215*)((/*RF2*/(C)->_routine_body/*40*/)))){
(/*SFN*/C->_use_current_state)=22;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*16*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IF*/
if(r215use_current((T215*)((/*RF2*/(C)->_rescue_compound/*44*/)))){
(/*SFN*/C->_use_current_state)=22;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*16*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*48*/))!=((void*)(NULL))){
/*[IF*/
if(r214use_current((T214*)((/*RF2*/(C)->_ensure_assertion/*48*/)))){
(/*SFN*/C->_use_current_state)=22;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*16*/))==(24)){
(/*SFN*/C->_use_current_state)=21;
}
/*FI]*/
}


void r368address_of_c_define(T368* C,T0* a1){
/*[IF*/
if(r47boost((T47*)(oBC13run_control))){
/*[IF*/
if(r368isa_in_line(C)){
r368address_of_c_define_wrapper(C,a1);
}
 else if(r368use_current(C)){
}
else{
r368address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r368address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}


T0* r368run_ensure(T368* C){
T0* R=NULL;
R=r51run_ensure((T51*)(X52base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r368empty_or_null_body(T368* C){
T6 R=0;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*40*/);
R=((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((/*RF2*/(((T215*)_rb))->_first_one/*8*/))==(NULL)/*)*/);
return R;
}


void r368address_of_wrapper_name_in(T368* C,T0* a1){
r7extend(((T7*)a1),((T3)'W'));
r2append_in(r368id(C),a1);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),a1);
}


void r368make(T368* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r50add_rf((T50*)(r368run_class(C)),(T0*)C,X82to_key(a2));
r49incr_magic_count((T49*)(oBC13small_eiffel));
(/*SFN*/C->_use_current_state)=23;
(/*SFN*/C->_stupid_switch_state)=23;
r49push((T49*)(oBC13small_eiffel),(T0*)C);
r368initialize(C);
r49pop((T49*)(oBC13small_eiffel));
}


T6 r368dca(T368* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
_pc=r368body_one_dpca(C);
/*[IF*/
if(((_pc)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*36*/))==((void*)(NULL)))){
_rf=/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/);
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X52is_user_expanded(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/))){
}
else{
_args=X152arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL));
}
else{
R=X139isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368default_mapping_function(T368* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r47no_check((T47*)(oBC13run_control));
_uc=r368use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r325target_cannot_be_dropped((T325*)(oBC13cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r368mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_759));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r325put_target_as_target((T325*)(oBC13cpp));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r325put_arguments((T325*)(oBC13cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r368c_assertion_flag(T368* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r368c_frame_descriptor_name_in(C,oBC334c_code);
r7append((T7*)(oBC334c_code),((T0*)ms334_30285));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}


void r368c_define_opening(T368* C){
T0* _oresult=NULL;
T6 _ensure_check=0;
T6 _no_check=0;
T0* _t=NULL;
_no_check=r47no_check((T47*)(oBC13run_control));
_ensure_check=r47ensure_check((T47*)(oBC13run_control));
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_21346));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))!=((void*)(NULL))){
r169c_declare((T169*)((/*RF2*/(C)->_local_vars/*36*/)));
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*48*/))!=((void*)(NULL))){
r214c_declare_for_old((T214*)((/*RF2*/(C)->_ensure_assertion/*48*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_no_check){
/*[IF*/
if(((/*RF2*/((T203*)(oBC13c_frame_descriptor_local_count))->_value/*0*/))>(0)){
r7copy((T7*)(oBC334c_code),((T0*)ms334_21567));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T203*)(oBC13c_frame_descriptor_local_count))->_value/*0*/))),oBC334c_code);
/*]*/
r7extend((T7*)(oBC334c_code),((T3)'\135'));
r7append((T7*)(oBC334c_code),((T0*)ms14_138));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}
/*FI]*/
r368c_initialize_ds_one_by_one(C);
/*[IRF3.2c_initialize_locals_one_by_one*/{T3 _c=0;
T2 _j=0;
T2 _i=0;
_j=1;
while (!(((/*RF2*/((T203*)(oBC13c_frame_descriptor_local_count))->_value/*0*/))==(_i)))
{
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_8120));
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),_i);
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_308));
/*]*/
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC13c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
while (!((_c)==(((T3)'\54'))))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=_c;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC13c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_14520a));
/*]*/
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*48*/))!=((void*)(NULL))){
r214compile_to_c_old((T214*)((/*RF2*/(C)->_ensure_assertion/*48*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_23008));
/*]*/
r215compile_to_c((T215*)((/*RF2*/(C)->_rescue_compound/*44*/)));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_47752));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))!=((void*)(NULL))){
r169initialize_expanded((T169*)((/*RF2*/(C)->_local_vars/*36*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_7436));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*32*/))!=((void*)(NULL))){
r376compile_to_c((T376*)((/*RF2*/(C)->_require_assertion/*32*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_57680));
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_11988));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_14520));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r368c_define_closing(T368* C){
/*[IF*/
if(r47ensure_check((T47*)(oBC13run_control))){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*48*/))!=((void*)(NULL))){
r214compile_to_c((T214*)((/*RF2*/(C)->_ensure_assertion/*48*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r368use_current(C)){
/*[IF*/
if((X82to_string((/*RF2*/(C)->_name/*12*/)))!=((void*)(((T0*)ms15_8750)))){
r325current_class_invariant((/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_25380));
/*]*/
}
/*FI]*/
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_19400));
/*]*/
}
/*FI]*/
}


T0* r368memory_dispose(T368* C){
T0* R=NULL;
/*[IF*/
if(!(r368is_empty_or_null_body(C))){
R=((T0*)(C));
(/*SFN*/C->_in_line_status)=-(1);
}
/*FI]*/
return R;
}


void r368initialize(T368* C){
(/*SFN*/C->_arguments)=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_arguments/*20*/);
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL))){
/*[IF*/
if(!(r178is_runnable((T178*)((/*RF2*/(C)->_arguments/*28*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T178*n=((T178*)malloc(sizeof(*n))/*12*/);
*n=M178;
r178with(n,(/*RF2*/(C)->_arguments/*28*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_local_vars/*40*/);
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))!=((void*)(NULL))){
(/*SFN*/C->_local_vars)=r169to_runnable((T169*)((/*RF2*/(C)->_local_vars/*36*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
(/*SFN*/C->_routine_body)=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_routine_body/*44*/);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))!=((void*)(NULL))){
(/*SFN*/C->_routine_body)=r215to_runnable((T215*)((/*RF2*/(C)->_routine_body/*40*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
/*[IF*/
if(r47require_check((T47*)(oBC13run_control))){
(/*SFN*/C->_require_assertion)=r368run_require(C);
}
/*FI]*/
/*[IF*/
if(r47ensure_check((T47*)(oBC13run_control))){
(/*SFN*/C->_ensure_assertion)=r368run_ensure(C);
}
/*FI]*/
(/*SFN*/C->_rescue_compound)=(/*RF2*/((T303*)((/*RF2*/(C)->_base_feature/*24*/)))->_rescue_compound/*48*/);
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))==((void*)(NULL))){
(/*SFN*/C->_rescue_compound)=r368default_rescue_compound(C);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T380*)((T380*)(oBC13exceptions_handler))))->_used)=(1);
/*]*/
(/*SFN*/C->_rescue_compound)=r215to_runnable((T215*)((/*RF2*/(C)->_rescue_compound/*44*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}


void r368address_of_c_define_wrapper(T368* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC334c_code),((T0*)ms14_1736a));
}
/*FI]*/
r7extend((T7*)(oBC334c_code),((T3)'\40'));
r368address_of_wrapper_name_in(C,oBC334c_code);
r7extend((T7*)(oBC334c_code),((T3)'\50'));
X52c_type_for_external_in((/*RF2*/(C)->_current_type/*8*/),oBC334c_code);
r7extend((T7*)(oBC334c_code),((T3)'\40'));
r7extend((T7*)(oBC334c_code),((T3)'C'));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL))){
r7extend((T7*)(oBC334c_code),((T3)'\54'));
r178external_prototype_in((T178*)((/*RF2*/(C)->_arguments/*28*/)),oBC334c_code);
}
/*FI]*/
r7extend((T7*)(oBC334c_code),((T3)'\51'));
r325put_c_heading((T325*)(oBC13cpp),oBC334c_code);
r338define_body_of((T0*)C);
}


void r368in_line(T368* C){
T0* _rf2=NULL;
T0* _sfn=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
T0* _e=NULL;
T0* _a=NULL;
T6 _flag=0;
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_5624));
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),(/*RF2*/(C)->_in_line_status/*52*/));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string((/*RF2*/(C)->_name/*12*/)));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_178));
/*]*/
{int z1=(/*RF2*/(C)->_in_line_status/*52*/);

if((1==z1)){
/*[IF*/
if(r325cannot_drop_all((T325*)(oBC13cpp))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_330));
/*]*/
}
/*FI]*/
/*[IF*/
if(r368need_local_vars(C)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r368c_define_opening(C);
r368c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((2==z1)){
/*[IF*/
if(r325target_cannot_be_dropped((T325*)(oBC13cpp))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_330));
/*]*/
}
/*FI]*/
_flag=r368need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r368c_define_opening(C);
}
/*FI]*/
r215compile_to_c((T215*)((/*RF2*/(C)->_routine_body/*40*/)));
/*[IF*/
if(_flag){
r368c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((3==z1)){
_flag=r368need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r368c_define_opening(C);
}
/*FI]*/
_a=/*(IRF4.3first*/(/*RF2*/((T215*)((/*RF2*/(C)->_routine_body/*40*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 282:
break;
default:
_a=NULL;
}
}_sfn=(/*RF2*/(((T282*)_a))->_left_side/*4*/);
if(NULL!=(_sfn)){
switch(((T0*)_sfn)->id){
case 138:
break;
default:
_sfn=NULL;
}
}/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_360));
/*]*/
X52mapping_cast((/*RF2*/(C)->_current_type/*8*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r325put_target_as_target((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_4800));
/*]*/
_rf2=(/*RF2*/(((T138*)_sfn))->_run_feature_2/*16*/);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X82to_string(/*SSWARF2*//*X334name*/(/*RF2*/(((T368*)_rf2))->_name/*12*/)));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_426));
/*]*/
_e=(/*RF2*/(((T282*)_a))->_right_side/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL))){
X104compile_to_c(_e);
}
else{
r325put_arguments((T325*)(oBC13cpp));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_330));
/*]*/
/*[IF*/
if(_flag){
r368c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((4==z1)){
_flag=r368need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r368c_define_opening(C);
}
/*FI]*/
_pc=/*(IRF4.3first*/(/*RF2*/((T215*)((/*RF2*/(C)->_routine_body/*40*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 155:case 153:case 154:
break;
default:
_pc=NULL;
}
}_rf=/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/);
r325push_same_target((T325*)(oBC13cpp),_rf,X152arguments(_pc));
X334mapping_c(_rf);
r325pop((T325*)(oBC13cpp));
/*[IF*/
if(_flag){
r368c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((5==z1)){
_pc=/*(IRF4.3first*/(/*RF2*/((T215*)((/*RF2*/(C)->_routine_body/*40*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 155:case 153:case 154:
break;
default:
_pc=NULL;
}
}/*SSPRF3*//*X152finalize*/r155finalize(((T155*)_pc));
r325push_inline_dca((T325*)(oBC13cpp),(T0*)C,_pc);
X334mapping_c(/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/));
r325pop((T325*)(oBC13cpp));
}
 else {/*[IF*/
if(!(r368use_current(C))){
/*[IF*/
if(r325target_cannot_be_dropped((T325*)(oBC13cpp))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_330));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(r368use_current(C)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC368tmp_string))))->_count)=(0);
/*]*/
X52c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC368tmp_string);
r7extend((T7*)(oBC368tmp_string),((T3)'\40'));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC368tmp_string);
/*]*/
r325inline_level_incr((T325*)(oBC13cpp));
r325print_current((T325*)(oBC13cpp));
r325inline_level_decr((T325*)(oBC13cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r325put_target_as_target((T325*)(oBC13cpp));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_138));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL))){
r178inline_one_pc((T178*)((/*RF2*/(C)->_arguments/*28*/)));
}
/*FI]*/
/*[IF*/
if(r368need_local_vars(C)){
r169inline_one_pc((T169*)((/*RF2*/(C)->_local_vars/*36*/)));
r325inline_level_incr((T325*)(oBC13cpp));
r169initialize_expanded((T169*)((/*RF2*/(C)->_local_vars/*36*/)));
r325inline_level_decr((T325*)(oBC13cpp));
}
/*FI]*/
/*[IRF3.4push_inline_one_pc*/r325stack_push((T325*)(oBC13cpp),18);
/*]*/
r325inline_level_incr((T325*)(oBC13cpp));
r215compile_to_c((T215*)((/*RF2*/(C)->_routine_body/*40*/)));
r325inline_level_decr((T325*)(oBC13cpp));
r325pop((T325*)(oBC13cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}}
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms368_1986));
/*]*/
}


void r368mapping_c(T368* C){
/*[IF*/
if(r368isa_in_line(C)){
/*[IF*/
if(/*(IRF4.6stack_not_full*/((/*RF2*/((T325*)(oBC13cpp))->_top/*32*/))<(50)/*)*/){
r368in_line(C);
}
else{
(/*SFN*/C->_in_line_status)=-(1);
/*[IRF3.6register_for_c_define*/{T0* b1=(T0*)C;
r372add_last((T372*)(oBC49registered_for_c_define),b1);
}/*]*/
r368mapping_c(C);
}
/*FI]*/
}
else{
r368default_mapping_procedure(C);
}
/*FI]*/
}


void r368std_compute_stupid_switch(T368* C,T0* a1){
T0* _rt=NULL;
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if(((_rt)!=((void*)(NULL)))&&(X52is_user_expanded(_rt))){
(/*SFN*/C->_stupid_switch_state)=21;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))!=((void*)(NULL))){
/*[IF*/
if(!(r215stupid_switch((T215*)((/*RF2*/(C)->_routine_body/*40*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=21;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(24)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
/*[IF*/
if(!(r215stupid_switch((T215*)((/*RF2*/(C)->_rescue_compound/*44*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=21;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(24)){
(/*SFN*/C->_stupid_switch_state)=22;
}
/*FI]*/
}


void r368routine_afd_check(T368* C){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*32*/))!=((void*)(NULL))){
r376afd_check((T376*)((/*RF2*/(C)->_require_assertion/*32*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_routine_body/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
r215afd_check((T215*)((/*RF2*/(C)->_rescue_compound/*44*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*48*/))!=((void*)(NULL))){
r214afd_check((T214*)((/*RF2*/(C)->_ensure_assertion/*48*/)));
}
/*FI]*/
}


T0* r368body_one_dpca(T368* C){
T0* R=NULL;
T0* _r=NULL;
T0* _rf2=NULL;
T0* _c0c=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))==((void*)(NULL))){
_rb=(/*RF2*/(C)->_routine_body/*40*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r215count(((T215*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T215*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 155:case 153:case 154:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
_c0c=/*SSWARF2*//*X152target*/(/*RF2*/(((T155*)_pc))->_target/*4*/);
if(NULL!=(_c0c)){
switch(((T0*)_c0c)->id){
case 140:
break;
default:
_c0c=NULL;
}
}/*[IF*/
if(((_c0c)!=((void*)(NULL)))&&(X104is_current((/*RF2*/(((T140*)_c0c))->_target/*4*/)))){
_rf2=(/*RF2*/(((T140*)_c0c))->_run_feature/*12*/);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 345:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
_r=(/*RF2*/((T50*)(r345run_class(((T345*)_rf2))))->_running/*9*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r53count(((T53*)_r)))==(1))){
_r=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class((T368*)(/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/)))))->_running/*9*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r53count(((T53*)_r)))==(1))){
R=_pc;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC13c_frame_descriptor_local_count=NULL;


T6 r368one_pc(T368* C){
T6 R=0;
T0* _r=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*40*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r215count(((T215*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T215*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 155:case 153:case 154:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
_rf=/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/);
/*[IF*/
if(((_rf)!=((void*)(NULL)))&&((_rf)!=((void*)(C)))){
_r=(/*RF2*/((T50*)(/*SSFRF4*//*X334run_class*/r368run_class(((T368*)_rf))))->_running/*9*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r53count(((T53*)_r)))==(1))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r368do_not_use_current(T368* C){
T6 R=0;
/*[IF*/
if(!(r215use_current((T215*)((/*RF2*/(C)->_routine_body/*40*/))))){
R=((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL));
}
/*FI]*/
return R;
}


T0* r368run_require(T368* C){
T0* R=NULL;
R=r51run_require((T51*)(X52base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


void r368mapping_name(T368* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC334c_code),((T3)'r'));
r2append_in(r368id(C),oBC334c_code);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),oBC334c_code);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}


void r368c_initialize_ds_one_by_one(T368* C){
r7copy((T7*)(oBC334c_code),((T0*)ms334_36950));
r368c_frame_descriptor_name_in(C,oBC334c_code);
r7append((T7*)(oBC334c_code),((T0*)ms14_138));
/*[IF*/
if(r368use_current(C)){
r7append((T7*)(oBC334c_code),((T0*)ms334_18175));
}
else{
r7append((T7*)(oBC334c_code),((T0*)ms334_10999));
}
/*FI]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
{T68 se_tmp0;
r325put_position_in_ds(/*(IRF4.6start_position*/(*(se_tmp0=r303start_position(((T303*)((/*RF2*/(C)->_base_feature/*24*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_11466));
/*]*/
/*[IF*/
if(((/*RF2*/((T203*)(oBC13c_frame_descriptor_local_count))->_value/*0*/))>(0)){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms334_11880));
/*]*/
}
/*FI]*/
}


T6 r368isa_in_line(T368* C){
T6 R=0;
/*[IF*/
if(r47boost((T47*)(oBC13run_control))){
/*[IF*/
if(/*(IRF4.7in_line_status_not_computed*/((/*RF2*/(C)->_in_line_status/*52*/))==(0)/*)*/){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*44*/))!=((void*)(NULL))){
(/*SFN*/C->_in_line_status)=-(1);
}
 else if((((T0*)ms15_1772))==((void*)(X82to_string((/*RF2*/(C)->_name/*12*/))))){
(/*SFN*/C->_in_line_status)=-(1);
}
 else if(r368empty_or_null_body(C)){
(/*SFN*/C->_in_line_status)=1;
}
 else if(r368do_not_use_current(C)){
(/*SFN*/C->_in_line_status)=2;
}
 else if(r368attribute_writer(C)){
(/*SFN*/C->_in_line_status)=3;
}
 else if(r368direct_call(C)){
(/*SFN*/C->_in_line_status)=4;
}
 else if(r368dca(C)){
(/*SFN*/C->_in_line_status)=5;
}
 else if(r368one_pc(C)){
(/*SFN*/C->_in_line_status)=6;
}
else{
(/*SFN*/C->_in_line_status)=-(1);
}
/*FI]*/
}
/*FI]*/
R=((/*RF2*/(C)->_in_line_status/*52*/))>(0);
}
/*FI]*/
return R;
}


T6 r368use_current(T368* C){
T6 R=0;
{int z1=(/*RF2*/(C)->_use_current_state/*16*/);

if((22==z1)){
R=1;
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_use_current_state)=24;
r368compute_use_current(C);
R=((/*RF2*/(C)->_use_current_state/*16*/))==(22);
}
 else {R=1;
}}
return R;
}


T6 r368is_empty_or_null_body(T368* C){
T6 R=0;
/*[IF*/
if(r368isa_in_line(C)){
R=((/*RF2*/(C)->_in_line_status/*52*/))==(1);
}
/*FI]*/
return R;
}


T6 r368is_exported_in(T368* C,T0* a1){
T6 R=0;
R=r99gives_permission_to((T99*)(r368clients(C)),a1);
return R;
}


T0* r368default_rescue_compound(T368* C){
T0* R=NULL;
R=r50get_default_rescue((T50*)(r368run_class(C)),(/*RF2*/(C)->_name/*12*/));
return R;
}


T0* r368run_class(T368* C){
T0* R=NULL;
R=X52run_class((/*RF2*/(C)->_current_type/*8*/));
return R;
}


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


T6 r368attribute_writer(T368* C){
T6 R=0;
T0* _sfn=NULL;
T0* _an2=NULL;
T0* _args=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*40*/);
_args=(/*RF2*/(C)->_arguments/*28*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r215count(((T215*)_rb)))==(1))){
_a=/*(IRF4.3first*/(/*RF2*/(((T215*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 282:
break;
default:
_a=NULL;
}
}/*[IF*/
if((_a)!=((void*)(NULL))){
_sfn=(/*RF2*/(((T282*)_a))->_left_side/*4*/);
if(NULL!=(_sfn)){
switch(((T0*)_sfn)->id){
case 138:
break;
default:
_sfn=NULL;
}
}/*[IF*/
if((_sfn)!=((void*)(NULL))){
/*[IF*/
if((_args)==((void*)(NULL))){
R=!(X104use_current((/*RF2*/(((T282*)_a))->_right_side/*8*/)));
}
 else if((/*(IRF4.6count*/(/*RF2*/(((T182*)((/*RF2*/(((T178*)_args))->_flat_list/*8*/))))->_upper/*12*/)/*)*/)==(1)){
_an2=(/*RF2*/(((T282*)_a))->_right_side/*8*/);
if(NULL!=(_an2)){
switch(((T0*)_an2)->id){
case 179:
break;
default:
_an2=NULL;
}
}R=(_an2)!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r368stupid_switch(T368* C,T0* a1){
T0* R=NULL;
{int z1=(/*RF2*/(C)->_stupid_switch_state/*20*/);

if((22==z1)){
R=((T0*)ms368_4224);
}
 else 
if((21==z1)){
}
 else 
if((23==z1)){
(/*SFN*/C->_stupid_switch_state)=24;
/*[IRF3.6compute_stupid_switch*/{T368* C1=C;
T0* b1=a1;
r368std_compute_stupid_switch(C1,b1);
}/*]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*20*/))==(22)){
R=((T0*)ms368_4224);
}
/*FI]*/
}
 else {}}
return R;
}


T6 r368direct_call(T368* C){
T6 R=0;
T0* _rf3=NULL;
T0* _args=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*40*/);
/*[IF*/
if(((((_rb)!=((void*)(NULL)))&&((r215count(((T215*)_rb)))==(1)))&&(((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_local_vars/*36*/))==((void*)(NULL)))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T215*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 155:case 153:case 154:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
/*[IF*/
if(X104is_current(/*SSWARF2*//*X152target*/(/*RF2*/(((T155*)_pc))->_target/*4*/))){
_rf3=/*SSWARF2*//*X152run_feature*/(/*RF2*/(((T155*)_pc))->_run_feature/*12*/);
if(NULL!=(_rf3)){
switch(((T0*)_rf3)->id){
case 368:
break;
default:
_rf3=NULL;
}
}/*[IF*/
if((_rf3)!=((void*)(NULL))){
_args=X152arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X139is_static*/r139is_static(((T139*)_args));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368define_prototype(T368* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r47no_check((T47*)(oBC13run_control));
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
/*[IRF3.3reset*/((((T203*)((T203*)(oBC13c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC13c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC13c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC13c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r368id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC334c_code),((T0*)ms14_1736a));
}
/*FI]*/
r7extend((T7*)(oBC334c_code),((T3)'\40'));
r7extend((T7*)(oBC334c_code),((T3)'r'));
r2append_in(_mem_id,oBC334c_code);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),oBC334c_code);
r7extend((T7*)(oBC334c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC334c_code),((T0*)ms334_56160));
/*[IF*/
if((r368use_current(C))||(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC334c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r368use_current(C)){
X52c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC334c_code);
r7extend((T7*)(oBC334c_code),((T3)'\40'));
r7extend((T7*)(oBC334c_code),((T3)'C'));
X52c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))!=((void*)(NULL))){
r7extend((T7*)(oBC334c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r368use_current(C))){
r7append((T7*)(oBC334c_code),((T0*)ms14_1736a));
}
/*FI]*/
}
else{
r178compile_to_c_in((T178*)((/*RF2*/(C)->_arguments/*28*/)),oBC334c_code);
}
/*FI]*/
r7extend((T7*)(oBC334c_code),((T3)'\51'));
r325put_c_heading((T325*)(oBC13cpp),oBC334c_code);
/*[IRF3.3swap_on_c*/((((T325*)((T325*)(oBC13cpp))))->_current_out)=(oBC325out_c);
/*]*/
}


void r368c_frame_descriptor(T368* C){
/*[IF*/
if(r47no_check((T47*)(oBC13run_control))){
r7copy((T7*)(oBC334c_code),((T0*)ms334_23340));
r368c_frame_descriptor_name_in(C,oBC334c_code);
r325put_extern7((T325*)(oBC13cpp),oBC334c_code);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r368put_c_name_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC334c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC334c_code),((T3)'\54'));
/*[IF*/
if(r368use_current(C)){
r7extend((T7*)(oBC334c_code),((T3)'1'));
}
else{
r7extend((T7*)(oBC334c_code),((T3)'0'));
}
/*FI]*/
r7extend((T7*)(oBC334c_code),((T3)'\54'));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T203*)(oBC13c_frame_descriptor_local_count))->_value/*0*/))),oBC334c_code);
/*]*/
r7extend((T7*)(oBC334c_code),((T3)'\54'));
r7append((T7*)(oBC334c_code),oBC13c_frame_descriptor_format);
r7append((T7*)(oBC334c_code),((T0*)ms334_2226));
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),oBC334c_code);
/*]*/
}
/*FI]*/
}


void r368address_of_c_mapping(T368* C){
/*[IF*/
if(r47boost((T47*)(oBC13run_control))){
/*[IF*/
if(r368isa_in_line(C)){
r368address_of_c_mapping_wrapper(C);
}
 else if(r368use_current(C)){
r368mapping_name(C);
}
else{
r368address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r368address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


T6 r368is_pre_computable(T368* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*28*/))==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*40*/))==((void*)(NULL))){
R=1;
}
else{
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*36*/))==((void*)(NULL))){
R=r215is_pre_computable((T215*)((/*RF2*/(C)->_routine_body/*40*/)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368c_frame_descriptor_name_in(T368* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r368id(C),a1);
X82mapping_c_in((/*RF2*/(C)->_name/*12*/),a1);
}

