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


void r152mapping_c(T152* C){
T0* _ct=NULL;
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms152_4052132));
/*]*/
_ct=(/*RF2*/(C)->_current_type/*8*/);
/*[IF*/
if(X62is_basic_eiffel_expanded(_ct)){
r83put_target_as_value((T83*)(oBC19cpp));
}
 else if(X62is_reference(_ct)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r83put_target_as_target((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms152_6655));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T60* C1=(T60*)((/*RF2*/(C)->_run_class/*12*/));
T0* b1=(T0*)C;
r83put_recompilation_comment(r60offset_of(C1,b1));
}/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r83put_target_as_value((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms152_1350));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T60* C1=(T60*)((/*RF2*/(C)->_run_class/*12*/));
T0* b1=(T0*)C;
r83put_recompilation_comment(r60offset_of(C1,b1));
}/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r152c_frame_descriptor_name_in(T152* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r152id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


T0* r152stupid_switch(T152* C,T0* a1){
T0* R=NULL;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_stupid_switch_state/*24*/);
switch(z1){
case 12:
R=((T0*)ms152_1621200);
break;
case 11:
break;
case 13:
(/*SFN*/C->_stupid_switch_state)=14;
r152compute_stupid_switch(C,a1);
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(12)){
R=((T0*)ms152_1621200);
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
return R;
}


void r152make(T152* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_run_class)=X62run_class(a1);
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r60add_run_feature((T60*)((/*RF2*/(C)->_run_class/*12*/)),(T0*)C,a2);
r59incr_magic_count((T59*)(oBC19small_eiffel));
(/*SFN*/C->_use_current_state)=13;
(/*SFN*/C->_stupid_switch_state)=13;
r59push((T0*)C);
r152initialize(C);
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
}


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


void r152afd_check(T152* C){
T0* _rc=NULL;
_rc=X62run_class(X62run_type((/*RF2*/(C)->_result_type/*32*/)));
}


T6 r152use_current(T152* C){
T6 R=0;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_use_current_state/*20*/);
switch(z1){
case 12:
R=1;
break;
case 11:
break;
case 13:
(/*SFN*/C->_use_current_state)=14;
/*[IRF3.3compute_use_current*/((((T152*)(C)))->_use_current_state)=(12);
/*]*/
R=((/*RF2*/(C)->_use_current_state/*20*/))==(12);
break;
default:;
R=1;
}
}/*INSPECT]*/
return R;
}


void r152compute_stupid_switch(T152* C,T0* a1){
/*[IF*/
if(r83attribute_read_removal((T0*)C,a1)){
(/*SFN*/C->_stupid_switch_state)=12;
}
else{
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}


void r152c_assertion_flag(T152* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r152c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_334284767));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r152address_of_c_mapping(T152* C){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms152_230));
/*]*/
r83print_current((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms152_1530));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


void r152fall_down(T152* 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=(/*RF2*/(C)->_run_class/*12*/);
_running=(/*RF2*/(((T60*)_current_rc))->_running/*21*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T63*)_running))->_lower/*16*/);
while (!((_i)>((/*RF2*/(((T63*)_running))->_upper/*12*/))))
{
_sub_rc=r63item(((T63*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X62base_class((/*RF2*/(((T60*)_sub_rc))->_current_type/*0*/));
_sub_name=r61new_name_of(((T61*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*16*/));
_rf=r60get_feature(((T60*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r152initialize(T152* C){
(/*SFN*/C->_result_type)=(/*RF2*/((T153*)((/*RF2*/(C)->_base_feature/*28*/)))->_result_type/*20*/);
(/*SFN*/C->_result_type)=X62to_runnable((/*RF2*/(C)->_result_type/*32*/),(/*RF2*/(C)->_current_type/*8*/));
}


T0* r152clients(T152* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T153*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T153*)((/*RF2*/(C)->_base_feature/*28*/)))->_clients/*16*/);
}
else{
R=r61clients_for(((T61*)_bc),(/*RF2*/(C)->_name/*16*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r152collect_c_tmp(T152* C){
/*[IF*/
if(X62is_user_expanded((/*RF2*/(C)->_result_type/*32*/))){
/*[IF*/
if(X62is_dummy_expanded((/*RF2*/(C)->_result_type/*32*/))){
}
else{
r83se_tmp_add((T0*)C);
}
/*FI]*/
}
/*FI]*/
}


T6 r154dca(T154* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
_pc=r154body_one_dpca(C);
/*[IF*/
if(((_pc)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*40*/))==((void*)(NULL)))){
_rf=/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/);
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X62is_user_expanded(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf))->_current_type/*8*/))){
}
else{
_args=X167arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL));
}
else{
R=X245isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r154isa_in_line(T154* C){
T6 R=0;
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(/*(IRF4.7in_line_status_not_computed*/((/*RF2*/(C)->_in_line_status/*56*/))==(0)/*)*/){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
(/*SFN*/C->_in_line_status)=-(1);
}
 else if((((T0*)ms21_15831))==((void*)(X117to_string((/*RF2*/(C)->_name/*16*/))))){
(/*SFN*/C->_in_line_status)=-(1);
}
 else if(r154empty_or_null_body(C)){
(/*SFN*/C->_in_line_status)=1;
}
 else if(r154do_not_use_current(C)){
(/*SFN*/C->_in_line_status)=2;
}
 else if(r154attribute_writer(C)){
(/*SFN*/C->_in_line_status)=3;
}
 else if(r154direct_call(C)){
(/*SFN*/C->_in_line_status)=4;
}
 else if(r154dca(C)){
(/*SFN*/C->_in_line_status)=5;
}
 else if(r154one_pc(C)){
(/*SFN*/C->_in_line_status)=6;
}
else{
(/*SFN*/C->_in_line_status)=-(1);
}
/*FI]*/
}
/*FI]*/
R=((/*RF2*/(C)->_in_line_status/*56*/))>(0);
}
/*FI]*/
return R;
}


T6 r154direct_call(T154* C){
T6 R=0;
T0* _rf3=NULL;
T0* _args=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*44*/);
/*[IF*/
if(((((_rb)!=((void*)(NULL)))&&((r159count(((T159*)_rb)))==(1)))&&(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_local_vars/*40*/))==((void*)(NULL)))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T159*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 166:case 255:case 256:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
/*[IF*/
if(X126is_current(/*SSWARF2*//*X167target*/(/*RF2*/(((T166*)_pc))->_target/*4*/))){
_rf3=/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/);
if(NULL!=(_rf3)){
switch(((T0*)_rf3)->id){
case 154:
break;
default:
_rf3=NULL;
}
}/*[IF*/
if((_rf3)!=((void*)(NULL))){
_args=X167arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245is_static*/r245is_static(((T245*)_args));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r154run_ensure(T154* C){
T0* R=NULL;
R=r61run_ensure((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T0* r154body_one_dpca(T154* 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/*40*/))==((void*)(NULL))){
_rb=(/*RF2*/(C)->_routine_body/*44*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r159count(((T159*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T159*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 166:case 255:case 256:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
_c0c=/*SSWARF2*//*X167target*/(/*RF2*/(((T166*)_pc))->_target/*4*/);
if(NULL!=(_c0c)){
switch(((T0*)_c0c)->id){
case 246:
break;
default:
_c0c=NULL;
}
}/*[IF*/
if(((_c0c)!=((void*)(NULL)))&&(X126is_current((/*RF2*/(((T246*)_c0c))->_target/*4*/)))){
_rf2=(/*RF2*/(((T246*)_c0c))->_run_feature/*12*/);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 152:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
_r=(/*RF2*/((T60*)((/*RF2*/(((T152*)_rf2))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r63count(((T63*)_r)))==(1))){
_r=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)(/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/)))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r63count(((T63*)_r)))==(1))){
R=_pc;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r154do_not_use_current(T154* C){
T6 R=0;
/*[IF*/
if(!(r159use_current((T159*)((/*RF2*/(C)->_routine_body/*44*/))))){
R=((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL));
}
/*FI]*/
return R;
}


void r154define_prototype(T154* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3reset*/((((T297*)((T297*)(oBC19c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r154id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(_mem_id,oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC96c_code),((T0*)ms96_826425832));
/*[IF*/
if((r154use_current(C))||(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r154use_current(C)){
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
X62c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r154use_current(C))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
}
else{
r121compile_to_c_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
}


void r154default_mapping_procedure(T154* C){
r154default_mapping_function(C);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T0* r154run_require(T154* C){
T0* R=NULL;
R=r61run_require((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r154is_exported_in(T154* C,T0* a1){
T6 R=0;
R=r200gives_permission_to((T200*)(r154clients(C)),a1);
return R;
}


T0* r154memory_dispose(T154* C){
T0* R=NULL;
/*[IF*/
if((!((/*RF2*/((T59*)(oBC19small_eiffel))->_is_ready/*4*/)))||(!(r154is_empty_or_null_body(C)))){
R=((T0*)(C));
(/*SFN*/C->_in_line_status)=-(1);
}
/*FI]*/
return R;
}


T2 r154id(T154* C){
T2 R=0;
R=X62id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r154in_line(T154* 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*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_4670426));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/(C)->_in_line_status/*56*/));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_257));
/*]*/
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_in_line_status/*56*/);
switch(z1){
case 1:
/*[IF*/
if(r83cannot_drop_all((T83*)(oBC19cpp))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1330));
/*]*/
}
/*FI]*/
/*[IF*/
if(r154need_local_vars(C)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r154c_define_opening(C);
r154c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r83target_cannot_be_dropped((T83*)(oBC19cpp))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1330));
/*]*/
}
/*FI]*/
_flag=r154need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r154c_define_opening(C);
}
/*FI]*/
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
/*[IF*/
if(_flag){
r154c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 3:
_flag=r154need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r154c_define_opening(C);
}
/*FI]*/
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*44*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_sfn=(/*RF2*/(((T379*)_a))->_left_side/*4*/);
if(NULL!=(_sfn)){
switch(((T0*)_sfn)->id){
case 143:
break;
default:
_sfn=NULL;
}
}/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_1240));
/*]*/
X62mapping_cast((/*RF2*/(C)->_current_type/*8*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r83put_target_as_target((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_160405));
/*]*/
_rf2=(/*RF2*/(((T143*)_sfn))->_run_feature_2/*16*/);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)_rf2))->_name/*16*/)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_1370));
/*]*/
_e=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
X126compile_to_c(_e);
}
else{
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_1330));
/*]*/
/*[IF*/
if(_flag){
r154c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 4:
_flag=r154need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r154c_define_opening(C);
}
/*FI]*/
_pc=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*44*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 166:case 255:case 256:
break;
default:
_pc=NULL;
}
}_rf=/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/);
r83push_same_target((T83*)(oBC19cpp),_rf,X167arguments(_pc));
X96mapping_c(_rf);
r83pop((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
r154c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 5:
_pc=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*44*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 166:case 255:case 256:
break;
default:
_pc=NULL;
}
}/*SSPRF3*//*X167finalize*/r166finalize(((T166*)_pc));
r83push_inline_dca((T83*)(oBC19cpp),(T0*)C,_pc);
X96mapping_c(/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/));
r83pop((T83*)(oBC19cpp));
break;
default:;
/*[IF*/
if(!(r154use_current(C))){
/*[IF*/
if(r83target_cannot_be_dropped((T83*)(oBC19cpp))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1330));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(r154use_current(C)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC154tmp_string))))->_count)=(0);
/*]*/
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC154tmp_string);
r7extend((T7*)(oBC154tmp_string),((T3)'\40'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC154tmp_string);
/*]*/
r83inline_level_incr((T83*)(oBC19cpp));
r83print_current((T83*)(oBC19cpp));
r83inline_level_decr((T83*)(oBC19cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\75');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r83put_target_as_target((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r121inline_one_pc((T121*)((/*RF2*/(C)->_arguments/*32*/)));
}
/*FI]*/
/*[IF*/
if(r154need_local_vars(C)){
r171inline_one_pc((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
r83inline_level_incr((T83*)(oBC19cpp));
r171initialize_expanded((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
r83inline_level_decr((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.4push_inline_one_pc*/r83stack_push((T83*)(oBC19cpp),8);
/*]*/
r83inline_level_incr((T83*)(oBC19cpp));
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
r83inline_level_decr((T83*)(oBC19cpp));
r83pop((T83*)(oBC19cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
}/*INSPECT]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms154_186045));
/*]*/
}


void r154address_of_wrapper_name_in(T154* C,T0* a1){
r7extend(((T7*)a1),((T3)'W'));
r2append_in(r154id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r154mapping_c(T154* C){
/*[IF*/
if(r154isa_in_line(C)){
/*[IF*/
if(/*(IRF4.6stack_not_full*/((/*RF2*/((T83*)(oBC19cpp))->_top/*32*/))<(50)/*)*/){
r154in_line(C);
}
else{
(/*SFN*/C->_in_line_status)=-(1);
/*[IRF3.6register_for_c_define*/{T0* b1=(T0*)C;
r479add_last((T479*)(oBC59registered_for_c_define),b1);
}/*]*/
r154mapping_c(C);
}
/*FI]*/
}
else{
r154default_mapping_procedure(C);
}
/*FI]*/
}


void r154c_frame_descriptor_name_in(T154* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r154id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}
T0*oBC154tmp_string=NULL;


void r154mapping_name(T154* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(r154id(C),oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


T6 r154is_empty_or_null_body(T154* C){
T6 R=0;
/*[IF*/
if(r154isa_in_line(C)){
R=((/*RF2*/(C)->_in_line_status/*56*/))==(1);
}
/*FI]*/
return R;
}


void r154put_c_name_tag(T154* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_names/*8*/))))->_first/*0*/)/*)*/;
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
X117put_cpp_tag((/*RF2*/(C)->_name/*16*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X117put_cpp_tag(_fn);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_7317));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/((T77*)(/*(IRF4.6base_class_name*/(/*RF2*/(((T61*)((/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/))))->_name/*18*/)/*)*/))->_to_string/*8*/));
/*]*/
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r154stupid_switch(T154* C,T0* a1){
T0* R=NULL;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_stupid_switch_state/*24*/);
switch(z1){
case 12:
R=((T0*)ms154_323701);
break;
case 11:
break;
case 13:
(/*SFN*/C->_stupid_switch_state)=14;
/*[IRF3.6compute_stupid_switch*/{T154* C1=C;
T0* b1=a1;
r154std_compute_stupid_switch(C1,b1);
}/*]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(12)){
R=((T0*)ms154_323701);
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
return R;
}


void r154std_compute_use_current(T154* C){
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
/*[IF*/
if(r427use_current((T427*)((/*RF2*/(C)->_require_assertion/*36*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_routine_body/*44*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
/*[IF*/
if(r309use_current((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
(/*SFN*/C->_use_current_state)=11;
}
/*FI]*/
}


void r154address_of_c_mapping_wrapper(T154* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r154address_of_wrapper_name_in(C,oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r154c_frame_descriptor(T154* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1200006371));
r154c_frame_descriptor_name_in(C,oBC96c_code);
r83put_extern7((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r154put_c_name_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IF*/
if(r154use_current(C)){
r7extend((T7*)(oBC96c_code),((T3)'1'));
}
else{
r7extend((T7*)(oBC96c_code),((T3)'0'));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r7append((T7*)(oBC96c_code),oBC19c_frame_descriptor_format);
r7append((T7*)(oBC96c_code),((T0*)ms96_143305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
}


void r154make(T154* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_run_class)=X62run_class(a1);
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r60add_run_feature((T60*)((/*RF2*/(C)->_run_class/*12*/)),(T0*)C,a2);
r59incr_magic_count((T59*)(oBC19small_eiffel));
(/*SFN*/C->_use_current_state)=13;
(/*SFN*/C->_stupid_switch_state)=13;
r59push((T0*)C);
r154initialize(C);
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
}


T6 r154empty_or_null_body(T154* C){
T6 R=0;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*44*/);
R=((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((/*RF2*/(((T159*)_rb))->_first_one/*8*/))==(NULL)/*)*/);
return R;
}


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


void r154routine_afd_check(T154* C){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
r427afd_check((T427*)((/*RF2*/(C)->_require_assertion/*36*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309afd_check((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}


T6 r154use_current(T154* C){
T6 R=0;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_use_current_state/*20*/);
switch(z1){
case 12:
R=1;
break;
case 11:
break;
case 13:
(/*SFN*/C->_use_current_state)=14;
r154compute_use_current(C);
R=((/*RF2*/(C)->_use_current_state/*20*/))==(12);
break;
default:;
R=1;
}
}/*INSPECT]*/
return R;
}


void r154compute_use_current(T154* C){
T0* _ct=NULL;
_ct=(/*RF2*/(C)->_current_type/*8*/);
/*[IF*/
if(X62is_reference(_ct)){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
(/*SFN*/C->_use_current_state)=12;
}
else{
r154std_compute_use_current(C);
}
/*FI]*/
}
else{
r154std_compute_use_current(C);
}
/*FI]*/
}


void r154std_compute_stupid_switch(T154* C,T0* a1){
T0* _rt=NULL;
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if(((_rt)!=((void*)(NULL)))&&(X62is_user_expanded(_rt))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_routine_body/*44*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
(/*SFN*/C->_stupid_switch_state)=12;
}
/*FI]*/
}


T6 r154one_pc(T154* C){
T6 R=0;
T0* _r=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*44*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r159count(((T159*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(/*RF2*/(((T159*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_pc)){
switch(((T0*)_pc)->id){
case 166:case 255:case 256:
break;
default:
_pc=NULL;
}
}/*[IF*/
if((_pc)!=((void*)(NULL))){
_rf=/*SSWARF2*//*X167run_feature*/(/*RF2*/(((T166*)_pc))->_run_feature/*12*/);
/*[IF*/
if(((_rf)!=((void*)(NULL)))&&((_rf)!=((void*)(C)))){
_r=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r63count(((T63*)_r)))==(1))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r154c_define_opening(T154* C){
T0* _rf3=NULL;
T0* _oresult=NULL;
T6 _ensure_check=0;
T6 _no_check=0;
T0* _t=NULL;
_no_check=r57no_check((T57*)(oBC19run_control));
_ensure_check=r57ensure_check((T57*)(oBC19run_control));
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2072064738));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
r171c_declare((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309c_declare_for_old((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_no_check){
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1111279623));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\135'));
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
r154c_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*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))==(_i)))
{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2111741));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_i);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_526));
/*]*/
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
while (!((_c)==(((T3)'\54'))))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=_c;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094a));
/*]*/
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309compile_to_c_old((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1555607831));
/*]*/
r159compile_to_c((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_560761477));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
r171initialize_expanded((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1367040625));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
r427compile_to_c((T427*)((/*RF2*/(C)->_require_assertion/*36*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_759184012));
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1484470448));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r154need_local_vars(T154* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
R=r171produce_c((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
}
/*FI]*/
return R;
}


void r154c_initialize_ds_one_by_one(T154* C){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1775507635));
r154c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IF*/
if(r154use_current(C)){
r7append((T7*)(oBC96c_code),((T0*)ms96_803430551));
}
else{
r7append((T7*)(oBC96c_code),((T0*)ms96_1677173506));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
{T104 se_tmp0;
r83put_position_in_ds(/*(IRF4.6start_position*/(*(se_tmp0=r150start_position(((T150*)((/*RF2*/(C)->_base_feature/*28*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_208313786));
/*]*/
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_430519127));
/*]*/
}
/*FI]*/
}


void r154c_assertion_flag(T154* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r154c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_334284767));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


T6 r154attribute_writer(T154* C){
T6 R=0;
T0* _sfn=NULL;
T0* _an2=NULL;
T0* _args=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*44*/);
_args=(/*RF2*/(C)->_arguments/*32*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r159count(((T159*)_rb)))==(1))){
_a=/*(IRF4.3first*/(/*RF2*/(((T159*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}/*[IF*/
if((_a)!=((void*)(NULL))){
_sfn=(/*RF2*/(((T379*)_a))->_left_side/*4*/);
if(NULL!=(_sfn)){
switch(((T0*)_sfn)->id){
case 143:
break;
default:
_sfn=NULL;
}
}/*[IF*/
if((_sfn)!=((void*)(NULL))){
/*[IF*/
if((_args)==((void*)(NULL))){
R=!(X126use_current((/*RF2*/(((T379*)_a))->_right_side/*8*/)));
}
 else if((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/(((T121*)_args))->_flat_list/*8*/))))/*)*/)==(1)){
_an2=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_an2)){
switch(((T0*)_an2)->id){
case 275:
break;
default:
_an2=NULL;
}
}R=(_an2)!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r154address_of_c_mapping(T154* C){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r154isa_in_line(C)){
r154address_of_c_mapping_wrapper(C);
}
 else if(r154use_current(C)){
r154mapping_name(C);
}
else{
r154address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r154address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


void r154c_define(T154* C){
/*[IF*/
if(r154isa_in_line(C)){
r83incr_inlined_procedure_count((T83*)(oBC19cpp));
}
 else if(/*(IRF4.7c_define_done*/((/*RF2*/(C)->_in_line_status/*56*/))==(-(2))/*)*/){
}
else{
(/*SFN*/C->_in_line_status)=-(2);
/*[IF*/
if(r154use_current(C)){
r83incr_procedure_count((T83*)(oBC19cpp));
}
else{
r83incr_real_procedure_count((T83*)(oBC19cpp));
}
/*FI]*/
r154define_prototype(C);
r154c_define_opening(C);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
}
/*FI]*/
r154c_define_closing(C);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_635));
/*]*/
r154c_frame_descriptor(C);
}
/*FI]*/
}


void r154address_of_c_define(T154* C,T0* a1){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r154isa_in_line(C)){
r154address_of_c_define_wrapper(C,a1);
}
 else if(r154use_current(C)){
}
else{
r154address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r154address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}


T6 r154is_pre_computable(T154* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))==((void*)(NULL))){
R=1;
}
else{
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))==((void*)(NULL))){
R=r159is_pre_computable((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r154fall_down(T154* 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=(/*RF2*/(C)->_run_class/*12*/);
_running=(/*RF2*/(((T60*)_current_rc))->_running/*21*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T63*)_running))->_lower/*16*/);
while (!((_i)>((/*RF2*/(((T63*)_running))->_upper/*12*/))))
{
_sub_rc=r63item(((T63*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X62base_class((/*RF2*/(((T60*)_sub_rc))->_current_type/*0*/));
_sub_name=r61new_name_of(((T61*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*16*/));
_rf=r60get_feature(((T60*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r154initialize(T154* C){
(/*SFN*/C->_arguments)=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_arguments/*20*/);
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if(!(r121is_runnable((T121*)((/*RF2*/(C)->_arguments/*32*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121with(n,(/*RF2*/(C)->_arguments/*32*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_local_vars/*40*/);
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
(/*SFN*/C->_local_vars)=r171to_runnable((T171*)((/*RF2*/(C)->_local_vars/*40*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
(/*SFN*/C->_routine_body)=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_routine_body/*44*/);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
(/*SFN*/C->_routine_body)=r159to_runnable((T159*)((/*RF2*/(C)->_routine_body/*44*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
/*[IF*/
if(r57require_check((T57*)(oBC19run_control))){
(/*SFN*/C->_require_assertion)=r154run_require(C);
}
/*FI]*/
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
(/*SFN*/C->_ensure_assertion)=r154run_ensure(C);
}
/*FI]*/
(/*SFN*/C->_rescue_compound)=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_rescue_compound/*48*/);
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))==((void*)(NULL))){
(/*SFN*/C->_rescue_compound)=r154default_rescue_compound(C);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T165*)((T165*)(oBC19exceptions_handler))))->_used)=(1);
/*]*/
(/*SFN*/C->_rescue_compound)=r159to_runnable((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}


T0* r154clients(T154* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T150*)((/*RF2*/(C)->_base_feature/*28*/)))->_clients/*16*/);
}
else{
R=r61clients_for(((T61*)_bc),(/*RF2*/(C)->_name/*16*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r154address_of_c_define_wrapper(T154* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r154address_of_wrapper_name_in(C,oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
X62c_type_for_external_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r121external_prototype_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
r131define_body_of((T0*)C);
}


T0* r154default_rescue_compound(T154* C){
T0* R=NULL;
R=r60get_default_rescue((T60*)((/*RF2*/(C)->_run_class/*12*/)),(/*RF2*/(C)->_name/*16*/));
return R;
}


void r154default_mapping_function(T154* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r57no_check((T57*)(oBC19run_control));
_uc=r154use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r154mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1565));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_target_as_target((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r154c_define_closing(T154* C){
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309compile_to_c((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r154use_current(C)){
/*[IF*/
if((X117to_string((/*RF2*/(C)->_name/*16*/)))!=((void*)(((T0*)ms21_1979951)))){
r83current_class_invariant((/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1905406134));
/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_943110089));
/*]*/
}
/*FI]*/
}


T6 r523dca(T523* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r523body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_rf=X222run_feature(_c);
/*[IF*/
if((_rf)!=((void*)(NULL))){
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X62is_user_expanded(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf))->_current_type/*8*/))){
}
else{
_args=X222arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL));
}
else{
R=X245isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r523isa_in_line(T523* C){
T6 R=0;
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_in_line_status/*64*/);
switch(z1){
case -1:
break;
case 0:
R=1;
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
(/*SFN*/C->_in_line_status)=-(1);
R=0;
}
 else if(r523empty_or_null_body(C)){
(/*SFN*/C->_in_line_status)=1;
}
 else if(r523value_reader(C)){
(/*SFN*/C->_in_line_status)=2;
}
 else if(r523attribute_reader(C)){
(/*SFN*/C->_in_line_status)=3;
}
 else if(r523result_is_current(C)){
(/*SFN*/C->_in_line_status)=4;
}
 else if(r523direct_call(C)){
(/*SFN*/C->_in_line_status)=5;
}
 else if(r523dca(C)){
(/*SFN*/C->_in_line_status)=6;
}
 else if(r523a_eq_neq(C)){
(/*SFN*/C->_in_line_status)=7;
}
 else if(r523dc_pco1(C)){
(/*SFN*/C->_in_line_status)=8;
}
 else if(r523dc_pco2(C)){
(/*SFN*/C->_in_line_status)=9;
}
 else if(r523direct_cse_call(C)){
(/*SFN*/C->_in_line_status)=10;
}
else{
(/*SFN*/C->_in_line_status)=-(1);
R=0;
}
/*FI]*/
break;
default:;
R=1;
}
}/*INSPECT]*/
}
/*FI]*/
return R;
}


T6 r523direct_call(T523* C){
T6 R=0;
T0* _rf4=NULL;
T0* _args=NULL;
T0* _c=NULL;
T0* _e=NULL;
_e=r523body_one_result(C);
/*[IF*/
if((((_e)!=((void*)(NULL)))&&(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_c=_e;
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}/*[IF*/
if((_c)!=((void*)(NULL))){
/*[IF*/
if(X126is_current(/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/))){
_rf4=X222run_feature(_c);
if(NULL!=(_rf4)){
switch(((T0*)_rf4)->id){
case 523:
break;
default:
_rf4=NULL;
}
}/*[IF*/
if((_rf4)!=((void*)(NULL))){
_args=X222arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245is_static*/r245is_static(((T245*)_args));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r523run_ensure(T523* C){
T0* R=NULL;
R=r61run_ensure((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r523can_be_dropped(T523* C){
T6 R=0;
R=((((((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_require_assertion/*40*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_ensure_assertion/*56*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_rescue_compound/*52*/))==((void*)(NULL)));
/*[IF*/
if(R){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
R=0;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523define_prototype(T523* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3reset*/((((T297*)((T297*)(oBC19c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r523id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))==((void*)(NULL))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
else{
X62c_type_for_result_in(X62run_type((/*RF2*/(C)->_result_type/*36*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(_mem_id,oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC96c_code),((T0*)ms96_826425832));
/*[IF*/
if((r523use_current(C))||(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r523use_current(C)){
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
X62c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r523use_current(C))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
}
else{
r121compile_to_c_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
}


void r523fe_vffd7(T523* C){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_result_type/*36*/)),&se_tmp0)));
}
r523fatal_error(((T0*)ms96_1888555933));
}


T0* r523run_require(T523* C){
T0* R=NULL;
R=r61run_require((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r523is_exported_in(T523* C,T0* a1){
T6 R=0;
R=r200gives_permission_to((T200*)(r523clients(C)),a1);
return R;
}


T6 r523direct_cse_call(T523* C){
T6 R=0;
T0* _rf8=NULL;
T0* _c=NULL;
/*[IF*/
if((((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_c=r523body_one_result(C);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}/*[IF*/
if(((_c)!=((void*)(NULL)))&&((X222arguments(_c))==((void*)(NULL)))){
_c=/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X126is_current(/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/)))){
/*[IF*/
if((X222arguments(_c))==((void*)(NULL))){
_rf8=X222run_feature(_c);
if(NULL!=(_rf8)){
switch(((T0*)_rf8)->id){
case 95:
break;
default:
_rf8=NULL;
}
}/*[IF*/
if((_rf8)!=((void*)(NULL))){
R=(X117to_string((/*RF2*/(((T95*)_rf8))->_name/*16*/)))==((void*)(((T0*)ms21_279523519)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r523is_static(T523* C){
T6 R=0;
/*[IF*/
if(r523isa_in_line(C)){
R=(/*RF2*/(C)->_is_static_flag/*68*/);
}
/*FI]*/
return R;
}


T6 r523a_eq_neq(T523* C){
T6 R=0;
T0* _e=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r523body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_rf=X222run_feature(_c);
/*[IF*/
if(((_rf)==((void*)(NULL)))&&((X222arg_count(_c))==(1))){
_e=/*SSFRF4*//*X245expression*/r245expression((T245*)(X222arguments(_c)),1);
/*[INSPECT*/
{int z1=X126isa_dca_inline_argument(_e);
switch(z1){
case 0:
break;
case -1:
R=((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL));
break;
default:;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
R=(/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*32*/)))->_flat_list/*8*/))))/*)*/)==(1);
}
/*FI]*/
}
}/*INSPECT]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r523id(T523* C){
T2 R=0;
R=X62id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


T0* r523body_one_dc_pco(T523* C){
T0* R=NULL;
T0* _args=NULL;
T0* _c=NULL;
_c=r523body_one_result(C);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}/*[IF*/
if((((_c)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL))))&&(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL)))){
_args=X222arguments(_c);
/*[IF*/
if(((_args)==((void*)(NULL)))||(/*SSFRF4*//*X245is_static*/r245is_static(((T245*)_args)))){
R=_c;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r523body_one_result(T523* C){
T0* R=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*48*/);
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r159count(((T159*)_rb)))==(1))){
_a=/*(IRF4.3first*/(/*RF2*/(((T159*)_rb))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}/*[IF*/
if((_a)!=((void*)(NULL))){
/*[IF*/
if(X126is_result((/*RF2*/(((T379*)_a))->_left_side/*4*/))){
R=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523in_line(T523* C){
T0* _rt=NULL;
T0* _cien=NULL;
T0* _rf=NULL;
T0* _c=NULL;
T6 _flag=0;
T0* _e=NULL;
T0* _a=NULL;
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms523_4511056));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/(C)->_in_line_status/*64*/));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_257));
/*]*/
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_in_line_status/*64*/);
switch(z1){
case 1:
_flag=r83cannot_drop_all((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
_rt=X62run_type((/*RF2*/(C)->_result_type/*36*/));
/*[IF*/
if(X62is_user_expanded(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'M');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X62id(_rt));
/*]*/
}
else{
X62c_initialize(_rt);
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 2:
_flag=r83cannot_drop_all((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_e=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
X126compile_to_c(_e);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 3:
_flag=r83arguments_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}_rf=X222run_feature(_c);
X96mapping_c(_rf);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 4:
_flag=r83arguments_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
_rt=X62run_type((/*RF2*/(C)->_result_type/*36*/));
/*[IF*/
if(X62is_basic_eiffel_expanded(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r83put_target_as_value((T83*)(oBC19cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r7copy((T7*)(oBC523tmp_string),((T0*)ms20_240a));
X62c_type_for_result_in(_rt,oBC523tmp_string);
r7append((T7*)(oBC523tmp_string),((T0*)ms20_245));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC523tmp_string);
/*]*/
r83put_target_as_value((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_246));
/*]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
case 5:
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}_rf=X222run_feature(_c);
r83push_same_target((T83*)(oBC19cpp),_rf,X222arguments(_c));
X96mapping_c(_rf);
r83pop((T83*)(oBC19cpp));
break;
case 6:
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}X222finalize(_c);
r83push_inline_dca((T83*)(oBC19cpp),(T0*)C,_c);
X96mapping_c(X222run_feature(_c));
r83pop((T83*)(oBC19cpp));
break;
case 7:
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_cien=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_cien)){
switch(((T0*)_cien)->id){
case 280:case 278:
break;
default:
_cien=NULL;
}
}r83push_inline_dca((T83*)(oBC19cpp),(T0*)C,_cien);
X279dca_inline(_cien,X126result_type(/*SSFRF4*//*X279arg1*/r280arg1(((T280*)_cien))));
r83pop((T83*)(oBC19cpp));
break;
case 8:
case 9:
_flag=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}_rf=X222run_feature(_c);
r83push_direct((T83*)(oBC19cpp),_rf,/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/),X222arguments(_c));
X96mapping_c(_rf);
r83pop((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
break;
default:;
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}_rf=X222run_feature(_c);
r83push_same_target((T83*)(oBC19cpp),_rf,X222arguments(_c));
X96mapping_c(_rf);
r83pop((T83*)(oBC19cpp));
}
}/*INSPECT]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms523_35907));
/*]*/
}


T6 r523result_is_current(T523* C){
T6 R=0;
T0* _e=NULL;
/*[IF*/
if(X62is_reference((/*RF2*/(C)->_current_type/*8*/))){
_e=r523body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
R=X126is_current(_e);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523address_of_wrapper_name_in(T523* C,T0* a1){
r7extend(((T7*)a1),((T3)'W'));
r2append_in(r523id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r523mapping_c(T523* C){
T2 _tmp_expanded_idx=0;
/*[IF*/
if(r523isa_in_line(C)){
r523in_line(C);
}
else{
_tmp_expanded_idx=r83se_tmp_open((T0*)C);
r523default_mapping_function(C);
/*[IF*/
if((_tmp_expanded_idx)>=(0)){
r83se_tmp_close(_tmp_expanded_idx);
}
/*FI]*/
}
/*FI]*/
}


void r523c_frame_descriptor_name_in(T523* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r523id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}
T0*oBC523tmp_string=NULL;


void r523mapping_name(T523* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(r523id(C),oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


T6 r523attribute_reader(T523* C){
T6 R=0;
T0* _rf2=NULL;
T0* _c0=NULL;
T0* _e=NULL;
_e=r523body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0)){
switch(((T0*)_c0)->id){
case 241:case 242:case 240:case 236:case 246:
break;
default:
_c0=NULL;
}
}/*[IF*/
if((_c0)!=((void*)(NULL))){
/*[IF*/
if(X126is_current(/*SSWARF2*//*X238target*/(/*RF2*/(((T241*)_c0))->_target/*4*/))){
_rf2=X238run_feature(_c0);
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 152:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)!=((void*)(NULL))){
R=!(X62is_user_expanded((/*RF2*/(((T152*)_rf2))->_result_type/*32*/)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523put_c_name_tag(T523* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_names/*8*/))))->_first/*0*/)/*)*/;
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
X117put_cpp_tag((/*RF2*/(C)->_name/*16*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X117put_cpp_tag(_fn);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_7317));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/((T77*)(/*(IRF4.6base_class_name*/(/*RF2*/(((T61*)((/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/))))->_name/*18*/)/*)*/))->_to_string/*8*/));
/*]*/
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r523stupid_switch(T523* C,T0* a1){
T0* R=NULL;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_stupid_switch_state/*24*/);
switch(z1){
case 12:
R=((T0*)ms523_322452);
break;
case 11:
break;
case 13:
(/*SFN*/C->_stupid_switch_state)=14;
/*[IRF3.6compute_stupid_switch*/{T523* C1=C;
T0* b1=a1;
r523std_compute_stupid_switch(C1,b1);
}/*]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(12)){
R=((T0*)ms523_322452);
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
return R;
}


void r523std_compute_use_current(T523* C){
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
/*[IF*/
if(r427use_current((T427*)((/*RF2*/(C)->_require_assertion/*40*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_routine_body/*48*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
/*[IF*/
if(r309use_current((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
(/*SFN*/C->_use_current_state)=11;
}
/*FI]*/
}


void r523address_of_c_mapping_wrapper(T523* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r523address_of_wrapper_name_in(C,oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r523c_frame_descriptor(T523* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1200006371));
r523c_frame_descriptor_name_in(C,oBC96c_code);
r83put_extern7((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r523put_c_name_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IF*/
if(r523use_current(C)){
r7extend((T7*)(oBC96c_code),((T3)'1'));
}
else{
r7extend((T7*)(oBC96c_code),((T3)'0'));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r7append((T7*)(oBC96c_code),oBC19c_frame_descriptor_format);
r7append((T7*)(oBC96c_code),((T0*)ms96_143305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
}


void r523make(T523* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_run_class)=X62run_class(a1);
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r60add_run_feature((T60*)((/*RF2*/(C)->_run_class/*12*/)),(T0*)C,a2);
r59incr_magic_count((T59*)(oBC19small_eiffel));
(/*SFN*/C->_use_current_state)=13;
(/*SFN*/C->_stupid_switch_state)=13;
r59push((T0*)C);
r523initialize(C);
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
}


T6 r523empty_or_null_body(T523* C){
T6 R=0;
T0* _rb=NULL;
_rb=(/*RF2*/(C)->_routine_body/*48*/);
/*[IF*/
if(((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((/*RF2*/(((T159*)_rb))->_first_one/*8*/))==(NULL)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL))){
/*[IF*/
if((X62expanded_initializer((/*RF2*/(C)->_result_type/*36*/)))==((void*)(NULL))){
(/*SFN*/C->_static_value_mem)=0;
(/*SFN*/C->_is_static_flag)=1;
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


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


void r523routine_afd_check(T523* C){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
r427afd_check((T427*)((/*RF2*/(C)->_require_assertion/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_routine_body/*48*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309afd_check((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}


T6 r523use_current(T523* C){
T6 R=0;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_use_current_state/*20*/);
switch(z1){
case 12:
R=1;
break;
case 11:
break;
case 13:
(/*SFN*/C->_use_current_state)=14;
r523compute_use_current(C);
R=((/*RF2*/(C)->_use_current_state/*20*/))==(12);
break;
default:;
R=1;
}
}/*INSPECT]*/
return R;
}


void r523compute_use_current(T523* C){
T0* _ct=NULL;
_ct=(/*RF2*/(C)->_current_type/*8*/);
/*[IF*/
if(X62is_reference(_ct)){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
(/*SFN*/C->_use_current_state)=12;
}
else{
r523std_compute_use_current(C);
}
/*FI]*/
}
else{
r523std_compute_use_current(C);
}
/*FI]*/
}


void r523std_compute_stupid_switch(T523* C,T0* a1){
T0* _rt=NULL;
_rt=(/*RF2*/(C)->_result_type/*36*/);
/*[IF*/
if(((_rt)!=((void*)(NULL)))&&(X62is_user_expanded(_rt))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_routine_body/*48*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
(/*SFN*/C->_stupid_switch_state)=12;
}
/*FI]*/
}


void r523c_define_opening(T523* C){
T0* _rf3=NULL;
T0* _oresult=NULL;
T6 _ensure_check=0;
T6 _no_check=0;
T0* _t=NULL;
_no_check=r57no_check((T57*)(oBC19run_control));
_ensure_check=r57ensure_check((T57*)(oBC19run_control));
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2072064738));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*/if(((/*RF2*/(C)->_result_type/*36*/))!=((void*)(NULL))){
_t=X62run_type((/*RF2*/(C)->_result_type/*36*/));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
X62c_type_for_result_in(_t,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_1271));
X62c_initialize_in(_t,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
/*[IF*/
if(_no_check){
r7append((T7*)(oBC19c_frame_descriptor_locals),((T0*)ms96_674382779));
r297increment((T297*)(oBC19c_frame_descriptor_local_count));
r7append((T7*)(oBC19c_frame_descriptor_format),((T0*)ms21_337331));
X62c_frame_descriptor(_t);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
r171c_declare((T171*)((/*RF2*/(C)->_local_vars/*44*/)));
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309c_declare_for_old((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_no_check){
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1111279623));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\135'));
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
r523c_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*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))==(_i)))
{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2111741));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_i);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_526));
/*]*/
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
while (!((_c)==(((T3)'\54'))))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=_c;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094a));
/*]*/
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309compile_to_c_old((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1555607831));
/*]*/
r159compile_to_c((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_560761477));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))!=((void*)(NULL))){
_rf3=X62expanded_initializer((/*RF2*/(C)->_result_type/*36*/));
/*[IF*/
if((_rf3)!=((void*)(NULL))){
/*[IF*/
if((_oresult)!=((void*)(NULL))){
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,NULL,_oresult);
}
else{
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,NULL,((T0*)ms96_82));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
r171initialize_expanded((T171*)((/*RF2*/(C)->_local_vars/*44*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1367040625));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
r427compile_to_c((T427*)((/*RF2*/(C)->_require_assertion/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_759184012));
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1484470448));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r523c_initialize_ds_one_by_one(T523* C){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1775507635));
r523c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IF*/
if(r523use_current(C)){
r7append((T7*)(oBC96c_code),((T0*)ms96_803430551));
}
else{
r7append((T7*)(oBC96c_code),((T0*)ms96_1677173506));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
{T104 se_tmp0;
r83put_position_in_ds(/*(IRF4.6start_position*/(*(se_tmp0=r393start_position(((T393*)((/*RF2*/(C)->_base_feature/*28*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_208313786));
/*]*/
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_430519127));
/*]*/
}
/*FI]*/
}


void r523c_assertion_flag(T523* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r523c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_334284767));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r523address_of_c_mapping(T523* C){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r523isa_in_line(C)){
r523address_of_c_mapping_wrapper(C);
}
 else if(r523use_current(C)){
r523mapping_name(C);
}
else{
r523address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r523address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


T0* r523body_one_result_dca(T523* C){
T0* R=NULL;
T0* _bf=NULL;
T0* _r=NULL;
T0* _rf=NULL;
T0* _writable_attribute=NULL;
T0* _c0c=NULL;
T0* _c=NULL;
_c=r523body_one_result(C);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}/*[IF*/
if((_c)!=((void*)(NULL))){
_c0c=/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/);
if(NULL!=(_c0c)){
switch(((T0*)_c0c)->id){
case 246:
break;
default:
_c0c=NULL;
}
}/*[IF*/
if((_c0c)!=((void*)(NULL))){
/*[IF*/
if(X126is_current((/*RF2*/(((T246*)_c0c))->_target/*4*/))){
_writable_attribute=(/*RF2*/(((T246*)_c0c))->_run_feature/*12*/);
if(NULL!=(_writable_attribute)){
switch(((T0*)_writable_attribute)->id){
case 152:
break;
default:
_writable_attribute=NULL;
}
}/*[IF*/
if((_writable_attribute)!=((void*)(NULL))){
_r=(/*RF2*/((T60*)((/*RF2*/(((T152*)_writable_attribute))->_run_class/*12*/)))->_running/*21*/);
_rf=X222run_feature(_c);
/*[IF*/
if((_rf)==((void*)(NULL))){
R=_c;
}
 else if(((_r)!=((void*)(NULL)))&&((r63count(((T63*)_r)))==(1))){
_r=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/(((T154*)_rf))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r63count(((T63*)_r)))==(1))){
_bf=(/*RF2*/(((T152*)_writable_attribute))->_base_feature/*28*/);
R=_c;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523c_define(T523* C){
/*[IF*/
if(r523isa_in_line(C)){
r83incr_inlined_function_count((T83*)(oBC19cpp));
}
else{
/*[IF*/
if(r523use_current(C)){
r83incr_function_count((T83*)(oBC19cpp));
}
else{
r83incr_real_function_count((T83*)(oBC19cpp));
}
/*FI]*/
r523define_prototype(C);
r523c_define_opening(C);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*48*/)));
}
/*FI]*/
r523c_define_closing(C);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_1754150081));
/*]*/
r523c_frame_descriptor(C);
}
/*FI]*/
}


T6 r523value_reader(T523* C){
T6 R=0;
T0* _c0=NULL;
T0* _e=NULL;
_e=r523body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((/*RF2*/(C)->_local_vars/*44*/))==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0)){
switch(((T0*)_c0)->id){
case 241:case 242:case 240:case 236:case 246:
break;
default:
_c0=NULL;
}
}/*[IF*/
if((((_c0)!=((void*)(NULL)))&&(X126is_current(/*SSWARF2*//*X238target*/(/*RF2*/(((T241*)_c0))->_target/*4*/))))&&((X238run_feature(_c0))==((void*)(C)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
r523fatal_error(((T0*)ms523_1026466011));
}
 else if(X126is_static(_e)){
R=1;
(/*SFN*/C->_static_value_mem)=X126static_value(_e);
(/*SFN*/C->_is_static_flag)=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523address_of_c_define(T523* C,T0* a1){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r523isa_in_line(C)){
r523address_of_c_define_wrapper(C,a1);
}
 else if(r523use_current(C)){
}
else{
r523address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r523address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}


void r523fall_down(T523* 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=(/*RF2*/(C)->_run_class/*12*/);
_running=(/*RF2*/(((T60*)_current_rc))->_running/*21*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T63*)_running))->_lower/*16*/);
while (!((_i)>((/*RF2*/(((T63*)_running))->_upper/*12*/))))
{
_sub_rc=r63item(((T63*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X62base_class((/*RF2*/(((T60*)_sub_rc))->_current_type/*0*/));
_sub_name=r61new_name_of(((T61*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*16*/));
_rf=r60get_feature(((T60*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r523initialize(T523* C){
(/*SFN*/C->_arguments)=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_arguments/*20*/);
(/*SFN*/C->_result_type)=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_result_type/*56*/);
/*[IF*/
if(X62is_like_argument((/*RF2*/(C)->_result_type/*36*/))){
/*[IF*/
if(!(r121is_runnable((T121*)((/*RF2*/(C)->_arguments/*32*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121with(n,(/*RF2*/(C)->_arguments/*32*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
(/*SFN*/C->_result_type)=X62to_runnable((/*RF2*/(C)->_result_type/*36*/),(/*RF2*/(C)->_current_type/*8*/));
}
else{
(/*SFN*/C->_result_type)=X62to_runnable((/*RF2*/(C)->_result_type/*36*/),(/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if(!(r121is_runnable((T121*)((/*RF2*/(C)->_arguments/*32*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121with(n,(/*RF2*/(C)->_arguments/*32*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_local_vars/*40*/);
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
(/*SFN*/C->_local_vars)=r171to_runnable((T171*)((/*RF2*/(C)->_local_vars/*44*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
(/*SFN*/C->_routine_body)=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_routine_body/*44*/);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
(/*SFN*/C->_routine_body)=r159to_runnable((T159*)((/*RF2*/(C)->_routine_body/*48*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
/*[IF*/
if(r57require_check((T57*)(oBC19run_control))){
(/*SFN*/C->_require_assertion)=r523run_require(C);
}
/*FI]*/
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
(/*SFN*/C->_ensure_assertion)=r523run_ensure(C);
}
/*FI]*/
(/*SFN*/C->_rescue_compound)=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_rescue_compound/*48*/);
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))==((void*)(NULL))){
(/*SFN*/C->_rescue_compound)=r523default_rescue_compound(C);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T165*)((T165*)(oBC19exceptions_handler))))->_used)=(1);
/*]*/
(/*SFN*/C->_rescue_compound)=r159to_runnable((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}


T0* r523clients(T523* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T393*)((/*RF2*/(C)->_base_feature/*28*/)))->_clients/*16*/);
}
else{
R=r61clients_for(((T61*)_bc),(/*RF2*/(C)->_name/*16*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r523address_of_c_define_wrapper(T523* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))==((void*)(NULL))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
else{
X62c_type_for_external_in((/*RF2*/(C)->_result_type/*36*/),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r523address_of_wrapper_name_in(C,oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
X62c_type_for_external_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r121external_prototype_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
r131define_body_of((T0*)C);
}


void r523collect_c_tmp(T523* C){
T0* _c=NULL;
T0* _a=NULL;
/*[IF*/
if(X62is_user_expanded((/*RF2*/(C)->_result_type/*36*/))){
/*[IF*/
if(X62is_dummy_expanded((/*RF2*/(C)->_result_type/*36*/))){
}
 else if(r523isa_in_line(C)){
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_in_line_status/*64*/);
switch(z1){
case 6:
_a=/*(IRF4.3first*/(/*RF2*/((T159*)((/*RF2*/(C)->_routine_body/*48*/)))->_first_one/*8*/)/*)*/;
if(NULL!=(_a)){
switch(((T0*)_a)->id){
case 379:
break;
default:
_a=NULL;
}
}_c=(/*RF2*/(((T379*)_a))->_right_side/*8*/);
if(NULL!=(_c)){
switch(((T0*)_c)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c=NULL;
}
}X96collect_c_tmp(X222run_feature(_c));
break;
}
}/*INSPECT]*/
}
else{
r83se_tmp_add((T0*)C);
}
/*FI]*/
}
/*FI]*/
}


T0* r523default_rescue_compound(T523* C){
T0* R=NULL;
R=r60get_default_rescue((T60*)((/*RF2*/(C)->_run_class/*12*/)),(/*RF2*/(C)->_name/*16*/));
return R;
}


T6 r523dc_pco1(T523* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c=NULL;
_c=r523body_one_dc_pco(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X126is_current(/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c))->_target/*4*/)))){
_rf6=X222run_feature(_c);
if(NULL!=(_rf6)){
switch(((T0*)_rf6)->id){
case 525:
break;
default:
_rf6=NULL;
}
}/*[IF*/
if((_rf6)!=((void*)(NULL))){
R=!(r525use_current(((T525*)_rf6)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r523dc_pco2(T523* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c2=NULL;
T0* _c1=NULL;
_c1=r523body_one_dc_pco(C);
/*[IF*/
if((_c1)!=((void*)(NULL))){
_c2=/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c1))->_target/*4*/);
if(NULL!=(_c2)){
switch(((T0*)_c2)->id){
case 225:case 277:case 248:case 280:case 241:case 230:case 226:case 232:case 242:case 231:case 229:case 233:case 240:case 236:case 218:case 224:case 283:case 281:case 284:case 278:case 282:case 227:case 246:case 247:case 228:case 234:case 223:
break;
default:
_c2=NULL;
}
}/*[IF*/
if((_c2)!=((void*)(NULL))){
_rf6=X222run_feature(_c2);
if(NULL!=(_rf6)){
switch(((T0*)_rf6)->id){
case 525:
break;
default:
_rf6=NULL;
}
}/*[IF*/
if((((_rf6)!=((void*)(NULL)))&&(!(r525use_current(((T525*)_rf6)))))&&(X126is_current(/*SSWARF2*//*X222target*/(/*RF2*/(((T225*)_c2))->_target/*4*/)))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r523c_define_closing(T523* C){
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309compile_to_c((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r523use_current(C)){
/*[IF*/
if((X117to_string((/*RF2*/(C)->_name/*16*/)))!=((void*)(((T0*)ms21_1979951)))){
r83current_class_invariant((/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1905406134));
/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_943110089));
/*]*/
}
/*FI]*/
}


void r523default_mapping_function(T523* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r57no_check((T57*)(oBC19run_control));
_uc=r523use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r523mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1565));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_target_as_target((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r524run_ensure(T524* C){
T0* R=NULL;
R=r61run_ensure((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


void r524define_prototype(T524* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3reset*/((((T297*)((T297*)(oBC19c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r524id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(_mem_id,oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC96c_code),((T0*)ms96_826425832));
/*[IF*/
if((r524use_current(C))||(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r524use_current(C)){
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
X62c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r524use_current(C))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
}
else{
r121compile_to_c_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
}


void r524default_mapping_procedure(T524* C){
r524default_mapping_function(C);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}


T0* r524run_require(T524* C){
T0* R=NULL;
R=r61run_require((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r524is_exported_in(T524* C,T0* a1){
T6 R=0;
R=r200gives_permission_to((T200*)(r524clients(C)),a1);
return R;
}


T2 r524id(T524* C){
T2 R=0;
R=X62id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r524address_of_wrapper_name_in(T524* C,T0* a1){
r7extend(((T7*)a1),((T3)'W'));
r2append_in(r524id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r524c_frame_descriptor_name_in(T524* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r524id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r524mapping_name(T524* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(r524id(C),oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r524put_c_name_tag(T524* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_names/*8*/))))->_first/*0*/)/*)*/;
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
X117put_cpp_tag((/*RF2*/(C)->_name/*16*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X117put_cpp_tag(_fn);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_7317));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/((T77*)(/*(IRF4.6base_class_name*/(/*RF2*/(((T61*)((/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/))))->_name/*18*/)/*)*/))->_to_string/*8*/));
/*]*/
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r524stupid_switch(T524* C,T0* a1){
T0* R=NULL;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_stupid_switch_state/*24*/);
switch(z1){
case 12:
R=((T0*)ms524_1618328);
break;
case 11:
break;
case 13:
(/*SFN*/C->_stupid_switch_state)=14;
/*[IRF3.6compute_stupid_switch*/{T524* C1=C;
T0* b1=a1;
r524std_compute_stupid_switch(C1,b1);
}/*]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(12)){
R=((T0*)ms524_1618328);
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
return R;
}


void r524std_compute_use_current(T524* C){
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
/*[IF*/
if(r427use_current((T427*)((/*RF2*/(C)->_require_assertion/*36*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_routine_body/*44*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
/*[IF*/
if(r309use_current((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
(/*SFN*/C->_use_current_state)=11;
}
/*FI]*/
}


void r524address_of_c_mapping_wrapper(T524* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r524address_of_wrapper_name_in(C,oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r524c_frame_descriptor(T524* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1200006371));
r524c_frame_descriptor_name_in(C,oBC96c_code);
r83put_extern7((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r524put_c_name_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IF*/
if(r524use_current(C)){
r7extend((T7*)(oBC96c_code),((T3)'1'));
}
else{
r7extend((T7*)(oBC96c_code),((T3)'0'));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r7append((T7*)(oBC96c_code),oBC19c_frame_descriptor_format);
r7append((T7*)(oBC96c_code),((T0*)ms96_143305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
}


void r524make(T524* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_run_class)=X62run_class(a1);
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r60add_run_feature((T60*)((/*RF2*/(C)->_run_class/*12*/)),(T0*)C,a2);
r59incr_magic_count((T59*)(oBC19small_eiffel));
(/*SFN*/C->_use_current_state)=13;
(/*SFN*/C->_stupid_switch_state)=13;
r59push((T0*)C);
r524initialize(C);
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
}


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


void r524routine_afd_check(T524* C){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
r427afd_check((T427*)((/*RF2*/(C)->_require_assertion/*36*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309afd_check((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}


T6 r524use_current(T524* C){
T6 R=0;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_use_current_state/*20*/);
switch(z1){
case 12:
R=1;
break;
case 11:
break;
case 13:
(/*SFN*/C->_use_current_state)=14;
/*[IRF3.4compute_use_current*/r524std_compute_use_current(C);
/*]*/
R=((/*RF2*/(C)->_use_current_state/*20*/))==(12);
break;
default:;
R=1;
}
}/*INSPECT]*/
return R;
}


void r524std_compute_stupid_switch(T524* C,T0* a1){
T0* _rt=NULL;
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if(((_rt)!=((void*)(NULL)))&&(X62is_user_expanded(_rt))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_routine_body/*44*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
(/*SFN*/C->_stupid_switch_state)=12;
}
/*FI]*/
}


void r524c_define_opening(T524* C){
T0* _rf3=NULL;
T0* _oresult=NULL;
T6 _ensure_check=0;
T6 _no_check=0;
T0* _t=NULL;
_no_check=r57no_check((T57*)(oBC19run_control));
_ensure_check=r57ensure_check((T57*)(oBC19run_control));
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2072064738));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
r171c_declare((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309c_declare_for_old((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_no_check){
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1111279623));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\135'));
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
r524c_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*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))==(_i)))
{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2111741));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_i);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_526));
/*]*/
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
while (!((_c)==(((T3)'\54'))))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=_c;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094a));
/*]*/
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309compile_to_c_old((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1555607831));
/*]*/
r159compile_to_c((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_560761477));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
r171initialize_expanded((T171*)((/*RF2*/(C)->_local_vars/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1367040625));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*36*/))!=((void*)(NULL))){
r427compile_to_c((T427*)((/*RF2*/(C)->_require_assertion/*36*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_759184012));
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1484470448));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r524c_initialize_ds_one_by_one(T524* C){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1775507635));
r524c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IF*/
if(r524use_current(C)){
r7append((T7*)(oBC96c_code),((T0*)ms96_803430551));
}
else{
r7append((T7*)(oBC96c_code),((T0*)ms96_1677173506));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
{T104 se_tmp0;
r83put_position_in_ds(/*(IRF4.6start_position*/(*(se_tmp0=r395start_position(((T395*)((/*RF2*/(C)->_base_feature/*28*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_208313786));
/*]*/
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_430519127));
/*]*/
}
/*FI]*/
}


void r524c_assertion_flag(T524* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r524c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_334284767));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r524address_of_c_mapping(T524* C){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r524use_current(C)){
r524mapping_name(C);
}
else{
r524address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r524address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


void r524c_define(T524* C){
r465c_define_o_flag((T0*)C);
r524define_prototype(C);
r465c_test_o_flag((T0*)C);
r524c_define_opening(C);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*44*/)));
}
/*FI]*/
r524c_define_closing(C);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms524_19385));
/*]*/
r524c_frame_descriptor(C);
}


void r524address_of_c_define(T524* C,T0* a1){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r524use_current(C)){
}
else{
r524address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r524address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}


void r524fall_down(T524* 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=(/*RF2*/(C)->_run_class/*12*/);
_running=(/*RF2*/(((T60*)_current_rc))->_running/*21*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T63*)_running))->_lower/*16*/);
while (!((_i)>((/*RF2*/(((T63*)_running))->_upper/*12*/))))
{
_sub_rc=r63item(((T63*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X62base_class((/*RF2*/(((T60*)_sub_rc))->_current_type/*0*/));
_sub_name=r61new_name_of(((T61*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*16*/));
_rf=r60get_feature(((T60*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r524initialize(T524* C){
(/*SFN*/C->_arguments)=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_arguments/*20*/);
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if(!(r121is_runnable((T121*)((/*RF2*/(C)->_arguments/*32*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121with(n,(/*RF2*/(C)->_arguments/*32*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_local_vars/*40*/);
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*40*/))!=((void*)(NULL))){
(/*SFN*/C->_local_vars)=r171to_runnable((T171*)((/*RF2*/(C)->_local_vars/*40*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
(/*SFN*/C->_routine_body)=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_routine_body/*44*/);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*44*/))!=((void*)(NULL))){
(/*SFN*/C->_routine_body)=r159to_runnable((T159*)((/*RF2*/(C)->_routine_body/*44*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
/*[IF*/
if(r57require_check((T57*)(oBC19run_control))){
(/*SFN*/C->_require_assertion)=r524run_require(C);
}
/*FI]*/
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
(/*SFN*/C->_ensure_assertion)=r524run_ensure(C);
}
/*FI]*/
(/*SFN*/C->_rescue_compound)=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_rescue_compound/*48*/);
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))==((void*)(NULL))){
(/*SFN*/C->_rescue_compound)=r524default_rescue_compound(C);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T165*)((T165*)(oBC19exceptions_handler))))->_used)=(1);
/*]*/
(/*SFN*/C->_rescue_compound)=r159to_runnable((T159*)((/*RF2*/(C)->_rescue_compound/*48*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
r465register_procedure((T0*)C);
}


T0* r524clients(T524* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T395*)((/*RF2*/(C)->_base_feature/*28*/)))->_clients/*16*/);
}
else{
R=r61clients_for(((T61*)_bc),(/*RF2*/(C)->_name/*16*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r524address_of_c_define_wrapper(T524* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r524address_of_wrapper_name_in(C,oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
X62c_type_for_external_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r121external_prototype_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
r131define_body_of((T0*)C);
}


T0* r524default_rescue_compound(T524* C){
T0* R=NULL;
R=r60get_default_rescue((T60*)((/*RF2*/(C)->_run_class/*12*/)),(/*RF2*/(C)->_name/*16*/));
return R;
}


void r524c_define_closing(T524* C){
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*52*/))!=((void*)(NULL))){
r309compile_to_c((T309*)((/*RF2*/(C)->_ensure_assertion/*52*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r524use_current(C)){
/*[IF*/
if((X117to_string((/*RF2*/(C)->_name/*16*/)))!=((void*)(((T0*)ms21_1979951)))){
r83current_class_invariant((/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*48*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1905406134));
/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_943110089));
/*]*/
}
/*FI]*/
}


void r524default_mapping_function(T524* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r57no_check((T57*)(oBC19run_control));
_uc=r524use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r524mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1565));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_target_as_target((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r525run_ensure(T525* C){
T0* R=NULL;
R=r61run_ensure((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


void r525define_prototype(T525* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3reset*/((((T297*)((T297*)(oBC19c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r525id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))==((void*)(NULL))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
else{
X62c_type_for_result_in(X62run_type((/*RF2*/(C)->_result_type/*36*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(_mem_id,oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC96c_code),((T0*)ms96_826425832));
/*[IF*/
if((r525use_current(C))||(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r525use_current(C)){
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
X62c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r525use_current(C))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
}
else{
r121compile_to_c_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
}


void r525fe_vffd7(T525* C){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_result_type/*36*/)),&se_tmp0)));
}
r525fatal_error(((T0*)ms96_1888555933));
}


T0* r525run_require(T525* C){
T0* R=NULL;
R=r61run_require((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


T6 r525is_exported_in(T525* C,T0* a1){
T6 R=0;
R=r200gives_permission_to((T200*)(r525clients(C)),a1);
return R;
}


T2 r525id(T525* C){
T2 R=0;
R=X62id((/*RF2*/(C)->_current_type/*8*/));
return R;
}


void r525address_of_wrapper_name_in(T525* C,T0* a1){
r7extend(((T7*)a1),((T3)'W'));
r2append_in(r525id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r525mapping_c(T525* C){
T2 _tmp_expanded_idx=0;
/*[IF*/
if(r525is_pre_computable(C)){
/*[IRF3.6c_put_o_result*/{T0* b1=(T0*)C;
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),r465o_result(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)b1))->_base_feature/*28*/)));
/*]*/
}/*]*/
}
else{
_tmp_expanded_idx=r83se_tmp_open((T0*)C);
r525default_mapping_function(C);
/*[IF*/
if((_tmp_expanded_idx)>=(0)){
r83se_tmp_close(_tmp_expanded_idx);
}
/*FI]*/
}
/*FI]*/
}


void r525c_frame_descriptor_name_in(T525* C,T0* a1){
r7extend(((T7*)a1),((T3)'f'));
r2append_in(r525id(C),a1);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),a1);
}


void r525mapping_name(T525* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(r525id(C),oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r525put_c_name_tag(T525* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_names/*8*/))))->_first/*0*/)/*)*/;
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
X117put_cpp_tag((/*RF2*/(C)->_name/*16*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/(C)->_name/*16*/)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\40');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
X117put_cpp_tag(_fn);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_7317));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),(/*RF2*/((T77*)(/*(IRF4.6base_class_name*/(/*RF2*/(((T61*)((/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/))))->_name/*18*/)/*)*/))->_to_string/*8*/));
/*]*/
/*[IF*/
if((X117to_key(_fn))!=((void*)(X117to_key((/*RF2*/(C)->_name/*16*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\42');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}


T0* r525stupid_switch(T525* C,T0* a1){
T0* R=NULL;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_stupid_switch_state/*24*/);
switch(z1){
case 12:
R=((T0*)ms525_1618329);
break;
case 11:
break;
case 13:
(/*SFN*/C->_stupid_switch_state)=14;
/*[IRF3.6compute_stupid_switch*/{T525* C1=C;
T0* b1=a1;
r525std_compute_stupid_switch(C1,b1);
}/*]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(12)){
R=((T0*)ms525_1618329);
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
return R;
}


void r525std_compute_use_current(T525* C){
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
/*[IF*/
if(r427use_current((T427*)((/*RF2*/(C)->_require_assertion/*40*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_routine_body/*48*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IF*/
if(r159use_current((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
/*[IF*/
if(r309use_current((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)))){
(/*SFN*/C->_use_current_state)=12;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_use_current_state/*20*/))==(14)){
(/*SFN*/C->_use_current_state)=11;
}
/*FI]*/
}


void r525address_of_c_mapping_wrapper(T525* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r525address_of_wrapper_name_in(C,oBC96c_code);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r525c_frame_descriptor(T525* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1200006371));
r525c_frame_descriptor_name_in(C,oBC96c_code);
r83put_extern7((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r525put_c_name_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IF*/
if(r525use_current(C)){
r7extend((T7*)(oBC96c_code),((T3)'1'));
}
else{
r7extend((T7*)(oBC96c_code),((T3)'0'));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r7append((T7*)(oBC96c_code),oBC19c_frame_descriptor_format);
r7append((T7*)(oBC96c_code),((T0*)ms96_143305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
}


void r525make(T525* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_run_class)=X62run_class(a1);
(/*SFN*/C->_current_type)=a1;
(/*SFN*/C->_name)=a2;
(/*SFN*/C->_base_feature)=a3;
r60add_run_feature((T60*)((/*RF2*/(C)->_run_class/*12*/)),(T0*)C,a2);
r59incr_magic_count((T59*)(oBC19small_eiffel));
(/*SFN*/C->_use_current_state)=13;
(/*SFN*/C->_stupid_switch_state)=13;
r59push((T0*)C);
r525initialize(C);
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
}


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


void r525routine_afd_check(T525* C){
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
r427afd_check((T427*)((/*RF2*/(C)->_require_assertion/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_routine_body/*48*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309afd_check((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}


T6 r525use_current(T525* C){
T6 R=0;
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_use_current_state/*20*/);
switch(z1){
case 12:
R=1;
break;
case 11:
break;
case 13:
(/*SFN*/C->_use_current_state)=14;
/*[IRF3.4compute_use_current*/r525std_compute_use_current(C);
/*]*/
R=((/*RF2*/(C)->_use_current_state/*20*/))==(12);
break;
default:;
R=1;
}
}/*INSPECT]*/
return R;
}


void r525std_compute_stupid_switch(T525* C,T0* a1){
T0* _rt=NULL;
_rt=(/*RF2*/(C)->_result_type/*36*/);
/*[IF*/
if(((_rt)!=((void*)(NULL)))&&(X62is_user_expanded(_rt))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_routine_body/*48*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IF*/
if(!(r159stupid_switch((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)),a1))){
(/*SFN*/C->_stupid_switch_state)=11;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_stupid_switch_state/*24*/))==(14)){
(/*SFN*/C->_stupid_switch_state)=12;
}
/*FI]*/
}


void r525c_define_opening(T525* C){
T0* _rf3=NULL;
T0* _oresult=NULL;
T6 _ensure_check=0;
T6 _no_check=0;
T0* _t=NULL;
_no_check=r57no_check((T57*)(oBC19run_control));
_ensure_check=r57ensure_check((T57*)(oBC19run_control));
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2072064738));
/*]*/
}
/*FI]*/
/*[IF*/
{/*AT*/_oresult=r465o_result((/*RF2*/(C)->_base_feature/*28*/));
/*[IF*/
if(_no_check){
_t=X62run_type((/*RF2*/(C)->_result_type/*36*/));
r7append((T7*)(oBC19c_frame_descriptor_locals),((T0*)ms96_26975293));
r7append((T7*)(oBC19c_frame_descriptor_locals),_oresult);
r7extend((T7*)(oBC19c_frame_descriptor_locals),((T3)'\54'));
r297increment((T297*)(oBC19c_frame_descriptor_local_count));
r7append((T7*)(oBC19c_frame_descriptor_format),((T0*)ms21_337331));
X62c_frame_descriptor(_t);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
r171c_declare((T171*)((/*RF2*/(C)->_local_vars/*44*/)));
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309c_declare_for_old((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_no_check){
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1111279623));
/*[IRF3.5append_in*/r2append_in(((T2)((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))),oBC96c_code);
/*]*/
r7extend((T7*)(oBC96c_code),((T3)'\135'));
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}
/*FI]*/
r525c_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*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))==(_i)))
{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_2111741));
/*]*/
/*[IRF3.5put_integer*/r58put_integer(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),_i);
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_526));
/*]*/
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
while (!((_c)==(((T3)'\54'))))
{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=_c;
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/((/*RF2*/((T7*)(oBC19c_frame_descriptor_locals))->_storage/*0*/))[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094a));
/*]*/
}
/*FI]*/
/*[IF*/
if(_ensure_check){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309compile_to_c_old((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1555607831));
/*]*/
r159compile_to_c((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_560761477));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))!=((void*)(NULL))){
_rf3=X62expanded_initializer((/*RF2*/(C)->_result_type/*36*/));
/*[IF*/
if((_rf3)!=((void*)(NULL))){
/*[IF*/
if((_oresult)!=((void*)(NULL))){
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,NULL,_oresult);
}
else{
r83put_proc_call_0((T83*)(oBC19cpp),_rf3,NULL,((T0*)ms96_82));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
r171initialize_expanded((T171*)((/*RF2*/(C)->_local_vars/*44*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1367040625));
/*]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_require_assertion/*40*/))!=((void*)(NULL))){
r427compile_to_c((T427*)((/*RF2*/(C)->_require_assertion/*40*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_759184012));
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1484470448));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1660308094));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r525c_initialize_ds_one_by_one(T525* C){
r7copy((T7*)(oBC96c_code),((T0*)ms96_1775507635));
r525c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms20_305));
/*[IF*/
if(r525use_current(C)){
r7append((T7*)(oBC96c_code),((T0*)ms96_803430551));
}
else{
r7append((T7*)(oBC96c_code),((T0*)ms96_1677173506));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
{T104 se_tmp0;
r83put_position_in_ds(/*(IRF4.6start_position*/(*(se_tmp0=r396start_position(((T396*)((/*RF2*/(C)->_base_feature/*28*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_208313786));
/*]*/
/*[IF*/
if(((/*RF2*/((T297*)(oBC19c_frame_descriptor_local_count))->_value/*0*/))>(0)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_430519127));
/*]*/
}
/*FI]*/
}


void r525c_assertion_flag(T525* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
r525c_frame_descriptor_name_in(C,oBC96c_code);
r7append((T7*)(oBC96c_code),((T0*)ms96_334284767));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC96c_code);
/*]*/
}


void r525address_of_c_mapping(T525* C){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r525use_current(C)){
r525mapping_name(C);
}
else{
r525address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r525address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


void r525c_define(T525* C){
r465c_define_o_result((T0*)C);
/*[IF*/
if(!(r525is_pre_computable(C))){
r465c_define_o_flag((T0*)C);
r525define_prototype(C);
r465c_test_o_flag((T0*)C);
r525c_define_opening(C);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_routine_body/*48*/)));
}
/*FI]*/
r525c_define_closing(C);
r465c_return_o_result((T0*)C);
r525c_frame_descriptor(C);
}
/*FI]*/
}


void r525address_of_c_define(T525* C,T0* a1){
/*[IF*/
if(r57boost((T57*)(oBC19run_control))){
/*[IF*/
if(r525use_current(C)){
}
else{
r525address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r525address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}


void r525fall_down(T525* 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=(/*RF2*/(C)->_run_class/*12*/);
_running=(/*RF2*/(((T60*)_current_rc))->_running/*21*/);
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_i=(/*RF2*/(((T63*)_running))->_lower/*16*/);
while (!((_i)>((/*RF2*/(((T63*)_running))->_upper/*12*/))))
{
_sub_rc=r63item(((T63*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X62base_class((/*RF2*/(((T60*)_sub_rc))->_current_type/*0*/));
_sub_name=r61new_name_of(((T61*)_sub_bc),_current_bc,(/*RF2*/(C)->_name/*16*/));
_rf=r60get_feature(((T60*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


T6 r525is_pre_computable(T525* C){
T6 R=0;
R=r465is_pre_computable((T0*)C);
return R;
}


void r525initialize(T525* C){
(/*SFN*/C->_result_type)=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_result_type/*56*/);
(/*SFN*/C->_arguments)=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_arguments/*20*/);
/*[IF*/
if(X62is_anchored((/*RF2*/(C)->_result_type/*36*/))){
r525fe_vffd7(C);
}
 else if(X62is_formal_generic((/*RF2*/(C)->_result_type/*36*/))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(C)->_result_type/*36*/)),&se_tmp0)));
}
r525fatal_error(((T0*)ms525_322003652));
}
/*FI]*/
(/*SFN*/C->_result_type)=X62to_runnable((/*RF2*/(C)->_result_type/*36*/),(/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if(!(r121is_runnable((T121*)((/*RF2*/(C)->_arguments/*32*/)),(/*RF2*/(C)->_current_type/*8*/)))){
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121with(n,(/*RF2*/(C)->_arguments/*32*/),(/*RF2*/(C)->_current_type/*8*/));
(/*SFN*/C->_arguments)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_local_vars/*40*/);
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*44*/))!=((void*)(NULL))){
(/*SFN*/C->_local_vars)=r171to_runnable((T171*)((/*RF2*/(C)->_local_vars/*44*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
(/*SFN*/C->_routine_body)=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_routine_body/*44*/);
/*[IF*/
if(((/*RF2*/(C)->_routine_body/*48*/))!=((void*)(NULL))){
(/*SFN*/C->_routine_body)=r159to_runnable((T159*)((/*RF2*/(C)->_routine_body/*48*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
/*[IF*/
if(r57require_check((T57*)(oBC19run_control))){
(/*SFN*/C->_require_assertion)=r525run_require(C);
}
/*FI]*/
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
(/*SFN*/C->_ensure_assertion)=r525run_ensure(C);
}
/*FI]*/
(/*SFN*/C->_rescue_compound)=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_rescue_compound/*48*/);
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))==((void*)(NULL))){
(/*SFN*/C->_rescue_compound)=r525default_rescue_compound(C);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T165*)((T165*)(oBC19exceptions_handler))))->_used)=(1);
/*]*/
(/*SFN*/C->_rescue_compound)=r159to_runnable((T159*)((/*RF2*/(C)->_rescue_compound/*52*/)),(/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
r465register_function((T0*)C);
}


T0* r525clients(T525* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_clients_memory/*4*/))==((void*)(NULL))){
_bc=X62base_class((/*RF2*/(C)->_current_type/*8*/));
_bfbc=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=(/*RF2*/((T396*)((/*RF2*/(C)->_base_feature/*28*/)))->_clients/*16*/);
}
else{
R=r61clients_for(((T61*)_bc),(/*RF2*/(C)->_name/*16*/));
}
/*FI]*/
(/*SFN*/C->_clients_memory)=R;
}
else{
R=(/*RF2*/(C)->_clients_memory/*4*/);
}
/*FI]*/
return R;
}


void r525address_of_c_define_wrapper(T525* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_result_type/*36*/))==((void*)(NULL))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
else{
X62c_type_for_external_in((/*RF2*/(C)->_result_type/*36*/),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r525address_of_wrapper_name_in(C,oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
X62c_type_for_external_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
r121external_prototype_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
r131define_body_of((T0*)C);
}


void r525collect_c_tmp(T525* C){
/*[IF*/
if(X62is_user_expanded((/*RF2*/(C)->_result_type/*36*/))){
/*[IF*/
if(X62is_dummy_expanded((/*RF2*/(C)->_result_type/*36*/))){
}
 else if(r525is_pre_computable(C)){
}
else{
r83se_tmp_add((T0*)C);
}
/*FI]*/
}
/*FI]*/
}


T0* r525default_rescue_compound(T525* C){
T0* R=NULL;
R=r60get_default_rescue((T60*)((/*RF2*/(C)->_run_class/*12*/)),(/*RF2*/(C)->_name/*16*/));
return R;
}


void r525c_define_closing(T525* C){
/*[IF*/
if(r57ensure_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_ensure_assertion/*56*/))!=((void*)(NULL))){
r309compile_to_c((T309*)((/*RF2*/(C)->_ensure_assertion/*56*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r525use_current(C)){
/*[IF*/
if((X117to_string((/*RF2*/(C)->_name/*16*/)))!=((void*)(((T0*)ms21_1979951)))){
r83current_class_invariant((/*RF2*/(C)->_current_type/*8*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_rescue_compound/*52*/))!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1905406134));
/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_943110089));
/*]*/
}
/*FI]*/
}


void r525default_mapping_function(T525* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r57no_check((T57*)(oBC19run_control));
_uc=r525use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r525mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms96_1565));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_target_as_target((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r115run_ensure(T115* C){
T0* R=NULL;
R=r61run_ensure((T61*)(X62base_class((/*RF2*/(C)->_current_type/*8*/))),(T0*)C);
return R;
}


void r115define_prototype(T115* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r57no_check((T57*)(oBC19run_control));
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3reset*/((((T297*)((T297*)(oBC19c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\42'));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC19c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r115id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC96c_code))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'r'));
r2append_in(_mem_id,oBC96c_code);
X117mapping_c_in((/*RF2*/(C)->_name/*16*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\50'));
/*[IF*/
if(_no_check){
r7append((T7*)(oBC96c_code),((T0*)ms96_826425832));
/*[IF*/
if((r115use_current(C))||(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL)))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r115use_current(C)){
X62c_type_for_target_in((/*RF2*/(C)->_current_type/*8*/),oBC96c_code);
r7extend((T7*)(oBC96c_code),((T3)'\40'));
r7extend((T7*)(oBC96c_code),((T3)'C'));
X62c_frame_descriptor((/*RF2*/(C)->_current_type/*8*/));
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))!=((void*)(NULL))){
r7extend((T7*)(oBC96c_code),((T3)'\54'));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*32*/))==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r115use_current(C))){
r7append((T7*)(oBC96c_code),((T0*)ms20_18150));
}
/*FI]*/
}
else{
r121compile_to_c_in((T121*)((/*RF2*/(C)->_arguments/*32*/)),oBC96c_code);
}
/*FI]*/
r7extend((T7*)(oBC96c_code),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC96c_code);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
}

