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


T0* r291run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r358clear((T358*)(oBC93require_collector));
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),1,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
/*[IF*/
if(!(r358empty((T358*)(oBC93require_collector)))){
_i=1;
while (!((_i)>(((T358*)(oBC93require_collector))->_upper/*8*/))) {
_er=r358item((T358*)(oBC93require_collector),_i);
_hc=(((T286*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T286*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r291runnable((((T286*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T286*n=malloc(sizeof(*n));
*n=M286;
r286make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T286*)(((T286*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma358(1,
_er);
}
else{
r358add_last(((T358*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T357*n=malloc(sizeof(*n));
*n=M357;
/*[IRF3.3make*/((((T357*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.base_class*/


void r291set_rescue_compound(T291* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r21add_position(r216start_position(((T216*)a1)));
}
else{
r21add_position(r291start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms289_126759);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:EXTERNAL_FUNCTION.base_class_name*/


T0* r291start_position(T291* C){
T0* R=NULL;
R=X83start_position(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r291is_merge_with(T291* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*48*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)((C)->_arguments/*20*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*48*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r291merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r291runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r106empty(((T106*)a1)))){
R=r106twin(((T106*)a1));
_i=(((T106*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r103to_runnable((T103*)(r106item(((T106*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r291error(r103start_position((T103*)(r106item(((T106*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T106* C1=((T106*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.first_name*/
/*No:EXTERNAL_FUNCTION.em1*/


T6 r291use_current(T291* C){
T6 R=0;
R=X288use_current((C)->_native/*40*/,(T0*)C);
return R;
}
/*No:EXTERNAL_FUNCTION.header_comment*/
/*No:EXTERNAL_FUNCTION.names*/


void r291mapping_c_name_in(T291* C,T0* a1){
r63mapping_c_in((T63*)((C)->_base_class/*4*/),a1);
r7append(((T7*)a1),X83to_key(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/));
}
/*No:EXTERNAL_FUNCTION.fz_03*/


void r291make_external_routine(T291* C,T0* a1,T0* a2){
C->_native=a1;
C->_alias_string=a2;
}
/*No:EXTERNAL_FUNCTION.result_type*/
/*No:EXTERNAL_FUNCTION.code_require*/
/*No:EXTERNAL_FUNCTION.make_e_feature*/


void r291add_into(T291* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r70base_class((T70*)(X83start_position(r85item((T85*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r85count((T85*)((C)->_names/*8*/))))) {
_fn=r85item((T85*)((C)->_names/*8*/),_i);
/*[IF*/
if(r92has(((T92*)a1),X83to_key(_fn))){
_fn=/*X93first_name*/((T0*)/*(IRF4.6first_name*/r85item(((T85*)(((T199*)(r92at(((T92*)a1),X83to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X83start_position(_fn));
r21add_position(X83start_position(r85item((T85*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms93_41905));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r92put(((T92*)a1),(T0*)C,X83to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r291can_hide(T291* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r291error(r291start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X93arguments(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r291error(r291start_position(C),((T0*)ms93_83182));
}
 else if((/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T191*)(((T187*)(X93arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r21add_position(X93start_position(a1));
r291error(r291start_position(C),((T0*)ms93_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*48*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_a_in((T187*)((C)->_arguments/*20*/),X93arguments(a1),a2))){
r21add_position(X93start_position(a1));
r21add_position(r291start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r291merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.ensure_assertion*/


T0* r291run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r106clear((T106*)(oBC93assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X54base_class(_ct)),2,/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
_r=r291runnable(oBC93assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T215*n=malloc(sizeof(*n));
*n=M215;
r215make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T215*)(((T215*)R))))->_header_comment)=(((T371*)(oBC93header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r291check_obsolete(T291* C){
/*[IF*/
if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms214_39396);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T171*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r291warning(r291start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r291try_to_undefine(T291* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X83start_position(a1));
_fn2=r85feature_name((T85*)((C)->_names/*8*/),X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X83undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r291try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X284set_clients*//*[IRF3.3set_clients*/((((T287*)(((T287*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r291merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.is_deferred*/
/*No:EXTERNAL_FUNCTION.set_clients*/
/*No:EXTERNAL_FUNCTION.native*/
/*No:EXTERNAL_FUNCTION.code_ensure*/
/*No:EXTERNAL_FUNCTION.nb_errors*/


void r291make_routine(T291* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
/*[IRF3.3make_e_feature*/((((T291*)(C)))->_names)=(a1);
/*]*/
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}


T0* r291to_run_feature(T291* C,T0* a1,T0* a2){
T0* R=NULL;
r291check_obsolete(C);
{T384*n=malloc(sizeof(*n));
*n=M384;
r384make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r291merge_header_comments(T291* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/);
}
 else if((/*X93header_comment*/((T0*)(((T199*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X93set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.arguments*/
/*No:EXTERNAL_FUNCTION.require_assertion*/


T0* r291external_c_name(T291* C){
T0* R=NULL;
/*[IF*/
if(((C)->_alias_string/*44*/)==((void*)(NULL))){
R=X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/);
}
else{
R=(C)->_alias_string/*44*/;
}
/*FI]*/
return R;
}


void r291warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}


T0* r291try_to_undefine_aux(T291* C,T0* a1,T0* a2){
T0* R=NULL;
{T287*n=malloc(sizeof(*n));
*n=M287;
r287from_effective(n,a1,(C)->_arguments/*20*/,(C)->_result_type/*48*/,(C)->_require_assertion/*28*/,(C)->_ensure_assertion/*32*/,a2);
R=(T0*)n;
}
return R;
}
/*No:EXTERNAL_FUNCTION.set_ensure_assertion*/
/*No:EXTERNAL_FUNCTION.fz_bad_assertion*/
/*No:EXTERNAL_FUNCTION.fz_dot*/


T6 r291stupid_switch(T291* C,T0* a1,T0* a2){
T6 R=0;
R=X288stupid_switch((C)->_native/*40*/,X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((C)->_names/*8*/)),1)/*)*/));
return R;
}
/*No:EXTERNAL_FUNCTION.alias_string*/


void r291error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r291make(T291* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r291make_routine(C,a1,a2,a4,a5,a6);
C->_result_type=a3;
r291make_external_routine(C,a7,a8);
}
/*No:EXTERNAL_FUNCTION.end_comment*/


void r291collect_for(T291* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T371*)((T371*)(oBC93header_comment_memory))))->_item)=(((T215*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r215add_into((T215*)((C)->_ensure_assertion/*32*/),oBC93assertion_collector);
}
/*FI]*/
}
/*FI]*/
}


void r291set_header_comment(T291* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.clients*/
/*No:EXTERNAL_FUNCTION.obsolete_mark*/
/*No:CREATION_CALL_3.fz_cast_t0_star*/
/*No:CREATION_CALL_3.start_position*/
/*No:CREATION_CALL_3.us_std_file_read*/


void r252c2c_closing(T252* C,T0* a1){
X56compile_to_c((C)->_writable/*8*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
/*[IF*/
if(r25call_invariant_start(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\73';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}


T0* r252add_comment(T252* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T6 r252use_current(T252* C){
T6 R=0;
/*[IF*/
if((r252run_args(C))!=((void*)(NULL))){
R=X149use_current(r252run_args(C));
}
/*FI]*/
R=(R)||(X56use_current((C)->_writable/*8*/));
return R;
}


T0* r252run_args(T252* C){
T0* R=NULL;
R=X162arguments((C)->_call/*20*/);
return R;
}


T0* r252to_runnable(T252* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
r252check_writable(C,a1);
_t=X56result_type((C)->_writable/*8*/);
r252check_created_type(C,_t);
r252check_creation_clause(C,_t);
R=(T0*)C;
}
else{
{T252*n=malloc(sizeof(*n));
*n=M252;
r252make(n,(C)->_start_position/*4*/,(C)->_writable/*8*/,(C)->_call/*20*/);
R=(T0*)n;
}
R=r252to_runnable(((T252*)R),a1);
}
/*FI]*/
return R;
}
/*No:CREATION_CALL_3.fz_00*/
/*No:CREATION_CALL_3.writable*/


T6 r252is_pre_computable(T252* C){
T6 R=0;
T0* _rfctbcn=NULL;
T0* _rfn=NULL;
T0* _rfct=NULL;
/*[IF*/
if(X56is_result((C)->_writable/*8*/)){
/*[IF*/
if((r252run_args(C))==((void*)(NULL))){
R=1;
}
else{
R=X149is_pre_computable(r252run_args(C));
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X51is_pre_computable((C)->_run_feature/*16*/)){
}
else{
_rfct=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
_rfctbcn=((T64*)(((T63*)(X54base_class(_rfct)))->_name/*24*/))->_to_string/*0*/;
_rfn=X83to_string(/*X51name*/((T0*)((T324*)((C)->_run_feature/*16*/))->_name/*16*/));
/*[IF*/
if((((T0*)ms14_1696))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms14_1990))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_14982))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_5046))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_12700))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_16887))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_19334))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms14_2675))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms14_5046))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
 else if((((T0*)ms14_27651))==((void*)(_rfn))){
/*[IF*/
if((((T0*)ms14_1990))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_14982))==((void*)(_rfctbcn))){
}
 else if((((T0*)ms14_12700))==((void*)(_rfctbcn))){
}
else{
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CREATION_CALL_3.fz_03*/
/*No:CREATION_CALL_3.collect_c_tmp*/
/*No:CREATION_CALL_3.us_string*/
/*No:CREATION_CALL_3.run_feature*/
/*No:CREATION_CALL_3.us_array*/


void r252c2c_expanded_initializer(T252* C,T0* a1){
T0* _rf3=NULL;
_rf3=X54expanded_initializer(a1);
/*[IF*/
if((_rf3)!=((void*)(NULL))){
r25expanded_writable((T25*)(oBC12cpp),_rf3,(C)->_writable/*8*/);
}
/*FI]*/
}


void r252check_writable(T252* C,T0* a1){
T0* _w=NULL;
C->_current_type=a1;
_w=X56to_runnable((C)->_writable/*8*/,a1);
/*[IF*/
if((_w)==((void*)(NULL))){
r21add_position(X56start_position((C)->_writable/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms249_64251);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
C->_writable=_w;
}
/*FI]*/
}


void r252check_creation_clause(T252* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*X162feature_name*/((T0*)((T165*)((C)->_call/*20*/))->_feature_name/*8*/);
_top=r70base_class((T70*)(X83start_position(_fn)));
_bottom=X54base_class(a1);
/*[IF*/
if(X54is_like_current(a1)){
_fn=r63new_name_of(((T63*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*X162feature_name*/((T0*)((T165*)((C)->_call/*20*/))->_feature_name/*8*/);
r21add_position(X83start_position(_fn));
/*[IRF3.6append*/{T0* b1=((T0*)ms13_7398);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms253_25652);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark(a1);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_166);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
C->_run_feature=r24get_feature((T24*)(X54run_class(a1)),_fn);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
r252cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
}
 else if(!(X54has_creation(a1,_fn))){
r21add_position(X83start_position(/*X162feature_name*/((T0*)((T165*)((C)->_call/*20*/))->_feature_name/*8*/)));
r21add_position(X83start_position(_fn));
/*[IRF3.6append*/{T0* b1=X83to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms253_45856);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(a1,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
X51add_client((C)->_run_feature/*16*/,X54run_class((C)->_current_type/*12*/));
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))!=((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(X83start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms253_67122);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((r252arg_count(C))==(0))&&((X51arguments((C)->_run_feature/*16*/))!=((void*)(NULL)))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms253_63744);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if((r252arg_count(C))>(0)){
_ct=/*X51current_type*/((T0*)((T324*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
_args=X149to_runnable(X162arguments((C)->_call/*20*/),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
r252error(X149start_position(X162arguments((C)->_call/*20*/)),((T0*)ms13_14714));
}
else{
X149match_with(_args,(C)->_run_feature/*16*/,_ct);
}
/*FI]*/
}
/*FI]*/
C->_call=X162make_runnable((C)->_call/*20*/,(C)->_writable/*8*/,_args,(C)->_run_feature/*16*/);
}
/*No:CREATION_CALL_3.fz_bad_arguments*/
/*No:CREATION_CALL_3.fz_09*/


T2 r252arg_count(T252* C){
T2 R=0;
/*[IF*/
if(((C)->_call/*20*/)!=((void*)(NULL))){
R=X162arg_count((C)->_call/*20*/);
}
/*FI]*/
return R;
}
/*No:CREATION_CALL_3.fatal_error*/
/*No:CREATION_CALL_3.us_with_capacity*/
/*No:CREATION_CALL_3.us_blank*/
/*No:CREATION_CALL_3.us_dictionary*/
/*No:CREATION_CALL_3.us_fixed_array*/


void r252c2c_clear_expanded(T252* C,T2 a1){
X56compile_to_c((C)->_writable/*8*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='M';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),a1);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}


void r252check_created_type(T252* C,T0* a1){
T0* _rt=NULL;
_rt=X54run_type(a1);
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
}
 else if(((T63*)(X54base_class(_rt)))->_is_deferred/*16*/){
r21add_type(_rt,((T0*)ms249_11858));
r252warning((C)->_start_position/*4*/,((T0*)ms249_30996));
}
/*FI]*/
/*[IF*/
if(X54is_formal_generic(a1)){
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms249_77140);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(a1,((T0*)ms249_180));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
r24set_at_run_time((T24*)(X54run_class(_rt)));
}


void r252compile_to_c(T252* C){
T0* _t=NULL;
_t=X54run_type(X56result_type((C)->_writable/*8*/));
/*[IF*/
if(X54is_reference(_t)){
r252c2c_opening(C,_t);
r25push_new((T25*)(oBC12cpp),(C)->_run_feature/*16*/,r252run_args(C));
X51mapping_c((C)->_run_feature/*16*/);
r25pop((T25*)(oBC12cpp));
r252c2c_closing(C,_t);
}
else{
r252c2c_clear_expanded(C,X54id(_t));
r252c2c_expanded_initializer(C,_t);
}
/*FI]*/
}


void r252warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:CREATION_CALL_3.current_type*/
/*No:CREATION_CALL_3.us_make*/
/*No:CREATION_CALL_3.us_std_file_write*/
/*No:CREATION_CALL_3.fz_dot*/


void r252c2c_opening(T252* C,T0* a1){
T0* _rc=NULL;
_rc=X54run_class(a1);
r25se_trace_ins((T25*)(oBC12cpp),(C)->_start_position/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r330allocation((T330*)(oBC12gc_handler),_rc);
r25expanded_attributes((T25*)(oBC12cpp),a1);
}
/*No:CREATION_CALL_3.call*/


void r252error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:CREATION_CALL_3.end_mark_comment*/


void r252make(T252* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_writable=a2;
C->_call=a3;
}


void r252cp_not_found(T252* C,T0* a1){
r21add_position(X83start_position(/*X162feature_name*/((T0*)((T165*)((C)->_call/*20*/))->_feature_name/*8*/)));
r21add_position(X83start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms253_53476);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}


void r252afd_check(T252* C){
/*[IF*/
if((r252arg_count(C))>(0)){
X149afd_check(r252run_args(C));
}
/*FI]*/
}
/*No:SWITCH_COLLECTION.c_define*/
T0*oBC331dictionary=NULL;


void r331remove(T0* a1){
T0* _dictionary2=NULL;
T0* _key2=NULL;
T0* _key1=NULL;
T0* _current_type=NULL;
_current_type=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
_key1=X54run_time_mark(_current_type);
/*[IF*/
if(r333has((T333*)(oBC331dictionary),_key1)){
_dictionary2=r333at((T333*)(oBC331dictionary),_key1);
_key2=X83to_key(/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
r325remove(((T325*)_dictionary2),_key2);
}
/*FI]*/
}


void r331update(T0* a1,T0* a2){
T0* _running=NULL;
T0* _current_type=NULL;
/*[IF*/
if(X56is_current(a1)){
}
 else if(X56is_manifest_string(a1)){
}
else{
_current_type=/*X51current_type*/((T0*)(((T324*)a2))->_current_type/*4*/);
/*[IF*/
if(X54is_reference(_current_type)){
_running=((T24*)(X54run_class(_current_type)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))>(1))){
r331update_with(a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:SWITCH_COLLECTION.falling_down*/


void r331update_with(T0* a1){
T0* _running=NULL;
T0* _dictionary2=NULL;
T0* _key2=NULL;
T0* _key1=NULL;
T0* _current_type=NULL;
_current_type=/*X51current_type*/((T0*)(((T324*)a1))->_current_type/*4*/);
_running=((T24*)(X54run_class(_current_type)))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r328count(((T328*)_running)))>(1))){
_key1=X54run_time_mark(_current_type);
_key2=X83to_key(/*X51name*/((T0*)(((T324*)a1))->_name/*16*/));
/*[IF*/
if(r333has((T333*)(oBC331dictionary),_key1)){
_dictionary2=r333at((T333*)(oBC331dictionary),_key1);
/*[IF*/
if(!(r325has(((T325*)_dictionary2),_key2))){
r325put(((T325*)_dictionary2),a1,_key2);
}
/*FI]*/
}
else{
{T325*n=malloc(sizeof(*n));
*n=M325;
/*[IRF3.4make*/r325with_capacity(n,32);
/*]*/
_dictionary2=(T0*)n;
}
r325put(((T325*)_dictionary2),a1,_key2);
r333put((T333*)(oBC331dictionary),_dictionary2,_key1);
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_INFIX_AND_THEN.static_value*/
/*No:CALL_INFIX_AND_THEN.call_proc_call_c2c*/
/*No:CALL_INFIX_AND_THEN.feature_name*/


void r123finalize(T123* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}


T6 r123is_static(T123* C){
T6 R=0;
/*[IF*/
if(X54is_boolean(X56result_type((C)->_target/*4*/))){
/*[IF*/
if(X56is_static((C)->_target/*4*/)){
/*[IF*/
if((X56static_value((C)->_target/*4*/))==(0)){
R=1;
}
else{
R=X56is_static(r123arg1(C));
C->_static_value_mem=X56static_value(r123arg1(C));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.is_manifest_string*/


T0* r123start_position(T123* C){
T0* R=NULL;
R=((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}
/*No:CALL_INFIX_AND_THEN.c_simple*/


T0* r123add_comment(T123* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r123to_integer(T123* C){
T2 R=0;
r123error(r123start_position(C),((T0*)ms13_45846));
return R;
}


T6 r123use_current(T123* C){
T6 R=0;
/*[IF*/
{/*AT*/R=X149use_current((C)->_arguments/*8*/);
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*16*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r123to_runnable(T123* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r123runnable_expression((C)->_target/*4*/,a1);
_a=r123runnable_args((C)->_arguments/*8*/,a1);
_tt=X56result_type(_t);
_at=X56result_type(r123arg1(C));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r123run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r123run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T123*n=malloc(sizeof(*n));
*n=M123;
r123with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r123compile_to_c_old(T123* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149compile_to_c_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_AND_THEN.is_pre_computable*/
/*No:CALL_INFIX_AND_THEN.fz_bad_argument*/


void r123collect_c_tmp(T123* C){
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*16*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
if(((C)->_arguments/*8*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_AND_THEN.fz_iinaiv*/


T0* r123result_type(T123* C){
T0* R=NULL;
T0* _tla=NULL;
R=X51result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X54run_type(X56result_type(r123arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.static_value_mem*/
/*No:CALL_INFIX_AND_THEN.run_feature*/


T0* r123runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X149to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X149start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.fz_07*/
/*No:CALL_INFIX_AND_THEN.arg_count*/


void r123with(T123* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r123run_feature_match(C,a5);
}
/*No:CALL_INFIX_AND_THEN.is_result*/
/*No:CALL_INFIX_AND_THEN.fatal_error*/


void r123mapping_c_target(T123* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_actual_type=X54run_type(r123result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
X54mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}


void r123run_feature_match(T123* C,T0* a1){
r123run_feature_has_result(C);
X149match_with((C)->_arguments/*8*/,(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_AND_THEN.arguments*/


T0* r123runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X56to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X56start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms118_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.can_be_dropped*/


void r123c_declare_for_old(T123* C){
X56c_declare_for_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149c_declare_for_old((C)->_arguments/*8*/);
}
/*FI]*/
}
/*No:CALL_INFIX_AND_THEN.implicit_cast*/
/*No:CALL_INFIX_AND_THEN.dca_inline_argument*/
/*No:CALL_INFIX_AND_THEN.compile_to_c*/
/*No:CALL_INFIX_AND_THEN.isa_dca_inline_argument*/


T0* r123arg1(T123* C){
T0* R=NULL;
R=/*X149first*/((T0*)/*(IRF4.3first*/((T149*)((C)->_arguments/*8*/))->_first_one/*4*//*)*/);
return R;
}
/*No:CALL_INFIX_AND_THEN.us_and_then*/


void r123run_feature_has_result(T123* C){
/*[IF*/
if((X51result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X51start_position((C)->_run_feature/*16*/));
r21add_position(((T138*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms117_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r123run_feature_for(T123* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type(a1));
R=r24get_rf(((T24*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_AND_THEN.target*/


void r123error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r123make(T123* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T138*n=malloc(sizeof(*n));
*n=M138;
r138make(n,r123operator(),a2);
C->_feature_name=(T0*)n;
}
{T149*n=malloc(sizeof(*n));
*n=M149;
/*[IRF3.3make_1*/((((T149*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_AND_THEN.is_current*/


void r123mapping_c_arg(T123* C,T0* a1){
T0* _actual_type=NULL;
_actual_type=X54run_type(r123result_type(C));
/*[IF*/
if(X54is_reference(_actual_type)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
X54to_expanded(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_actual_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T123* C1=C;
r25put_cpc((T25*)(oBC12cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CALL_INFIX_AND_THEN.is_void*/


T0* r123operator(void){
T0* R=NULL;
R=((T0*)ms14_10800);
return R;
}


void r123afd_check(T123* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X54run_class(X56result_type((C)->_target/*4*/));
_running=(((T24*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X56start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms118_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r24set_at_run_time(((T24*)_rc));
}
 else if((r328count(((T328*)_running)))>(1)){
r331update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X56afd_check((C)->_target/*4*/);
/*[IF*/
{/*AT*/X149afd_check((C)->_arguments/*8*/);
}
/*FI]*/
}


void r324c_assertion_flag(T324* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r324c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_30510));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}


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


void r324c_define_opening(T324* C){
T0* _t=NULL;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_21736));
/*]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
r178c_declare((T178*)((C)->_local_vars/*40*/));
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215c_declare_for_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_21762));
/*[IRF3.5append_in*/r2append_in(((T2)(((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)),((T0*)ms51_3077376));
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\135');
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}
/*FI]*/
r324c_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 (!((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)==(_i))) {
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_8225));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_i);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_314));
/*]*/
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
while (!((_c)==('\54'))) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1=_c;
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820a));
/*]*/
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_23488));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_147634));
/*]*/
}
/*FI]*/
r216compile_to_c((T216*)((C)->_rescue_compound/*48*/));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_48457));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
r178initialize_expanded((T178*)((C)->_local_vars/*40*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_7601));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357compile_to_c((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_58520));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r324c_define_closing(T324* C){
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r324use_current(C)){
r25current_class_invariant((C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_25830));
/*]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_19775));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_3.use_current_state*/
/*No:RUN_FEATURE_3.fz_void*/


void r324default_mapping_procedure(T324* C){
r324default_mapping_function(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}


void r324address_of_c_define(T324* C,T0* a1){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r324isa_in_line(C)){
r324address_of_c_define_wrapper(C,a1);
}
 else if(r324use_current(C)){
}
else{
r324address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r324address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
/*No:RUN_FEATURE_3.is_static*/
/*No:RUN_FEATURE_3.C_empty_or_null_body*/
/*No:RUN_FEATURE_3.ucs_false*/


T0* r324start_position(T324* C){
T0* R=NULL;
R=r302start_position((T302*)((C)->_base_feature/*32*/));
return R;
}


T0* r324is_attribute_writer(T324* C){
T0* R=NULL;
T0* _a=NULL;
/*[IF*/
if(r324isa_in_line(C)){
/*[IF*/
if(((C)->_in_line_status/*52*/)==(3)){
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*44*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};R=(((T282*)_a))->_left_side/*4*/;
if(NULL!=(R))switch(((T0*)R)->id) {
case 148: 
break;
default:
R=NULL;
};}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.c_initialize_locals_one_by_one*/


void r324mapping_name(T324* C){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='r';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),r324id(C));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_key((C)->_name/*16*/));
/*]*/
}


T6 r324isa_in_line(T324* C){
T6 R=0;
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(/*(IRF4.7in_line_status_not_computed*/((C)->_in_line_status/*52*/)==(0)/*)*/){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
C->_in_line_status=-(1);
}
 else if((((T0*)ms14_1812))==((void*)(X83to_string((C)->_name/*16*/)))){
C->_in_line_status=-(1);
}
 else if(r324empty_or_null_body(C)){
C->_in_line_status=1;
}
 else if(r324do_not_use_current(C)){
C->_in_line_status=2;
}
 else if(r324attribute_writer(C)){
C->_in_line_status=3;
}
 else if(r324direct_call(C)){
C->_in_line_status=4;
}
 else if(r324dca(C)){
C->_in_line_status=5;
}
 else if(r324one_pc(C)){
C->_in_line_status=6;
}
else{
C->_in_line_status=-(1);
}
/*FI]*/
}
/*FI]*/
R=((C)->_in_line_status/*52*/)>(0);
}
/*FI]*/
return R;
}


T6 r324use_current(T324* C){
T6 R=0;
{int z1=(C)->_use_current_state/*28*/;

if((14==z1)){
R=1;
}
 else 
if((13==z1)){
}
 else 
if((15==z1)){
C->_use_current_state=16;
r324compute_use_current(C);
R=r324use_current(C);
}
 else {R=1;
}}
return R;
}


T2 r324id(T324* C){
T2 R=0;
R=X54id((C)->_current_type/*4*/);
return R;
}


void r324routine_afd_check(T324* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357afd_check((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_routine_body/*44*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_rescue_compound/*48*/));
}
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215afd_check((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}


void r324std_compute_use_current(T324* C){
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
/*[IF*/
if(r357use_current((T357*)((C)->_require_assertion/*20*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
/*[IF*/
if(r216use_current((T216*)((C)->_routine_body/*44*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IF*/
if(r216use_current((T216*)((C)->_rescue_compound/*48*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
/*[IF*/
if(r215use_current((T215*)((C)->_ensure_assertion/*24*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
C->_use_current_state=13;
}
/*FI]*/
}


T0* r324run_class(T324* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_3.result_type*/
/*No:RUN_FEATURE_3.base_feature*/
/*No:RUN_FEATURE_3.C_dca*/
/*No:RUN_FEATURE_3.static_value_mem*/
/*No:RUN_FEATURE_3.ensure_assertion*/


void r324address_of_c_mapping_wrapper(T324* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r324address_of_wrapper_name_in(C,((T0*)ms51_3077376));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}


T6 r324is_exported_in(T324* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r324clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_3.fz_close_c_comment*/


void r324default_mapping_function(T324* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r43no_check((T43*)(oBC12run_control));
_uc=r324use_current(C);
/*[IF*/
if(!(_uc)){
_tcbd=r25target_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
r324mapping_name(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_no_check){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_777));
/*]*/
}
/*FI]*/
/*[IF*/
if(_uc){
/*[IF*/
if(_no_check){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25put_target_as_target((T25*)(oBC12cpp));
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if((_uc)||(_no_check)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25put_arguments((T25*)(oBC12cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if((!(_uc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_3.arguments*/


T6 r324do_not_use_current(T324* C){
T6 R=0;
/*[IF*/
if(!(r216use_current((T216*)((C)->_routine_body/*44*/)))){
R=((C)->_arguments/*36*/)==((void*)(NULL));
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.is_once_function*/
/*No:RUN_FEATURE_3.in_line_status*/
/*No:RUN_FEATURE_3.fz_b5*/
/*No:RUN_FEATURE_3.C_direct_call*/


void r324address_of_wrapper_name_in(T324* C,T0* a1){
r7extend(((T7*)a1),'W');
r2append_in(r324id(C),a1);
r7append(((T7*)a1),X83to_key((C)->_name/*16*/));
}


T6 r324direct_call(T324* C){
T6 R=0;
T0* _rf3=NULL;
T0* _args=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(C)->_routine_body/*44*/;
/*[IF*/
if(((((_rb)!=((void*)(NULL)))&&((r216count(((T216*)_rb)))==(1)))&&(((C)->_arguments/*36*/)==((void*)(NULL))))&&(((C)->_local_vars/*40*/)==((void*)(NULL)))){
_pc=/*(IRF4.3first*/(((T216*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_pc))switch(((T0*)_pc)->id) {
case 165: case 163: case 164: 
break;
default:
_pc=NULL;
};/*[IF*/
if((_pc)!=((void*)(NULL))){
/*[IF*/
if(X56is_current(/*X162target*/((T0*)(((T165*)_pc))->_target/*4*/))){
_rf3=/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/);
if(NULL!=(_rf3))switch(((T0*)_rf3)->id) {
case 324: 
break;
default:
_rf3=NULL;
};/*[IF*/
if((_rf3)!=((void*)(NULL))){
_args=X162arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=X149is_static(_args);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r324dca(T324* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
_pc=r324body_one_dpca(C);
/*[IF*/
if(((_pc)!=((void*)(NULL)))&&(((C)->_local_vars/*40*/)==((void*)(NULL)))){
_rf=/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/);
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X54is_user_expanded(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/))){
}
else{
_args=X162arguments(_pc);
/*[IF*/
if((_args)==((void*)(NULL))){
R=(r324arg_count(C))==(0);
}
else{
R=X149isa_dca_inline(_args,(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.clients_memory*/
/*No:RUN_FEATURE_3.current_type*/


void r324add_client(T324* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T60*n=malloc(sizeof(*n));
*n=M60;
r60with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r60add_last((T60*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r60fast_index_of((T60*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T60*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r60add_last((T60*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r24add_client((T24*)(r324run_class(C)),a1);
}
/*No:RUN_FEATURE_3.ucs_in_computation*/


void r324make(T324* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r324run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X83to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r324initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_3.routine_body*/
/*No:RUN_FEATURE_3.ucs_true*/
/*No:RUN_FEATURE_3.name*/


T6 r324attribute_writer(T324* C){
T6 R=0;
T0* _wa=NULL;
T0* _an2=NULL;
T0* _args=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(C)->_routine_body/*44*/;
_args=(C)->_arguments/*36*/;
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r216count(((T216*)_rb)))==(1))){
_a=/*(IRF4.3first*/(((T216*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};/*[IF*/
if((_a)!=((void*)(NULL))){
_wa=(((T282*)_a))->_left_side/*4*/;
if(NULL!=(_wa))switch(((T0*)_wa)->id) {
case 148: 
break;
default:
_wa=NULL;
};/*[IF*/
if((_wa)!=((void*)(NULL))){
/*[IF*/
if((_args)==((void*)(NULL))){
R=!(X56use_current((((T282*)_a))->_right_side/*8*/));
}
 else if((/*(IRF4.6count*/(((T191*)((((T187*)_args))->_flat_list/*8*/)))->_upper/*12*//*)*/)==(1)){
_an2=(((T282*)_a))->_right_side/*8*/;
if(NULL!=(_an2))switch(((T0*)_an2)->id) {
case 188: 
break;
default:
_an2=NULL;
};R=(_an2)!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC324tmp_string=NULL;
/*No:RUN_FEATURE_3.afd_check*/


void r324address_of_c_define_wrapper(T324* C,T0* a1){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r324address_of_wrapper_name_in(C,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
X54c_type_for_external_in((C)->_current_type/*4*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'C');
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
r187external_prototype_in((T187*)((C)->_arguments/*36*/),((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\51');
r25put_c_heading((T25*)(oBC12cpp),((T0*)ms51_3077376));
r364define_body_of((T0*)C);
}


T0* r324clients(T324* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X54base_class((C)->_current_type/*4*/);
_bfbc=((T302*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T302*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T6 r324is_empty_or_null_body(T324* C){
T6 R=0;
/*[IF*/
if(r324isa_in_line(C)){
R=((C)->_in_line_status/*52*/)==(1);
}
/*FI]*/
return R;
}


void r324c_define(T324* C){
/*[IF*/
if(r324isa_in_line(C)){
r25incr_inlined_procedure_count((T25*)(oBC12cpp));
r324nothing_comment(C);
}
 else if(/*(IRF4.7c_define_done*/((C)->_in_line_status/*52*/)==(-(2))/*)*/){
}
else{
C->_in_line_status=-(2);
/*[IF*/
if(r324use_current(C)){
r25incr_procedure_count((T25*)(oBC12cpp));
}
else{
r25incr_real_procedure_count((T25*)(oBC12cpp));
}
/*FI]*/
r324define_prototype(C);
r324c_define_opening(C);
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_routine_body/*44*/));
}
/*FI]*/
r324c_define_closing(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
r324c_frame_descriptor(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_3.us_copy*/


void r324once_result_in(T324* C,T0* a1){
r7extend(((T7*)a1),'o');
r302mapping_c_name_in((T302*)((C)->_base_feature/*32*/),a1);
}


void r324fall_down(T324* 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=X54run_class((C)->_current_type/*4*/);
_running=(((T24*)_current_rc))->_running/*12*/;
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X54base_class((C)->_current_type/*4*/);
_i=(((T328*)_running))->_lower/*12*/;
while (!((_i)>((((T328*)_running))->_upper/*8*/))) {
_sub_rc=r328item(((T328*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X54base_class((((T24*)_sub_rc))->_current_type/*0*/);
_sub_name=r63new_name_of(((T63*)_sub_bc),_current_bc,(C)->_name/*16*/);
_rf=r24get_feature(((T24*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:RUN_FEATURE_3.rescue_compound*/
/*No:RUN_FEATURE_3.actuals_clients*/
/*No:RUN_FEATURE_3.us_result*/


void r324define_prototype(T324* C){
T6 _no_check=0;
T2 _mem_id=0;
_no_check=r43no_check((T43*)(oBC12run_control));
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.3reset*/((((T204*)((T204*)(oBC12c_frame_descriptor_local_count))))->_value)=(0);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC12c_frame_descriptor_format))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC12c_frame_descriptor_format),'\42');
/*[IRF3.3clear*/((((T7*)((T7*)(oBC12c_frame_descriptor_locals))))->_count)=(0);
/*]*/
}
/*FI]*/
_mem_id=r324id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'r');
r2append_in(_mem_id,((T0*)ms51_3077376));
X83mapping_c_in((C)->_name/*16*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
/*[IF*/
if(_no_check){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_56460));
/*[IF*/
if((r324use_current(C))||(((C)->_arguments/*36*/)!=((void*)(NULL)))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r324use_current(C)){
X54c_type_for_target_in((C)->_current_type/*4*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'C');
X54c_frame_descriptor((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)==((void*)(NULL))){
/*[IF*/
if(_no_check){
}
 else if(!(r324use_current(C))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
}
else{
r187compile_to_c_in((T187*)((C)->_arguments/*36*/),((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\51');
r25put_c_heading((T25*)(oBC12cpp),((T0*)ms51_3077376));
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
}


void r324put_tag(T324* C){
T0* _fn=NULL;
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\42';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_fn=/*(IRF4.6first_name*/r85item(((T85*)(((T302*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/;
X83put_cpp_tag(_fn);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string(_fn));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_1148));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T64*)(/*(IRF4.6base_class_name*/(((T63*)(((T302*)((C)->_base_feature/*32*/))->_base_class/*4*/)))->_name/*24*//*)*/))->_to_string/*0*/);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\42';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_3.c_code*/
/*No:RUN_FEATURE_3.fz_00*/


void r324c_initialize_ds_one_by_one(T324* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_37325));
r324c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IF*/
if(r324use_current(C)){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_18550));
}
else{
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_11254));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
r25put_position_in_ds(r324start_position(C));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_11736));
/*]*/
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_12150));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_3.ucs_not_computed*/


T6 r324is_pre_computable(T324* C){
T6 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)==((void*)(NULL))){
/*[IF*/
if(((C)->_routine_body/*44*/)==((void*)(NULL))){
R=1;
}
else{
/*[IF*/
if(((C)->_local_vars/*40*/)==((void*)(NULL))){
R=r216is_pre_computable((T216*)((C)->_routine_body/*44*/));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.fz_12*/
/*No:RUN_FEATURE_3.collect_c_tmp*/
/*No:RUN_FEATURE_3.fz_13*/


void r324c_frame_descriptor(T324* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_23640));
r324c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r25put_extern7((T25*)(oBC12cpp),((T0*)ms51_3077376));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r324put_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
/*[IF*/
if(r324use_current(C)){
r7extend((T7*)(((T0*)ms51_3077376)),'1');
}
else{
r7extend((T7*)(((T0*)ms51_3077376)),'0');
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
/*[IRF3.5append_in*/r2append_in(((T2)(((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)),((T0*)ms51_3077376));
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
r7append((T7*)(((T0*)ms51_3077376)),oBC12c_frame_descriptor_format);
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_2316));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_3.fz_14*/
/*No:RUN_FEATURE_3.in_line_status_not_computed*/


void r324in_line(T324* C){
T0* _rf=NULL;
T0* _pc=NULL;
T0* _e=NULL;
T0* _w=NULL;
T0* _a=NULL;
T6 _flag=0;
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms324_5744));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),(C)->_in_line_status/*52*/);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184));
/*]*/
{int z1=(C)->_in_line_status/*52*/;

if((1==z1)){
/*[IF*/
if(r25cannot_drop_all((T25*)(oBC12cpp))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_348));
/*]*/
}
/*FI]*/
/*[IF*/
if(r324need_local_vars(C)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r324c_define_opening(C);
r324c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((2==z1)){
/*[IF*/
if(r25target_cannot_be_dropped((T25*)(oBC12cpp))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_348));
/*]*/
}
/*FI]*/
_flag=r324need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r324c_define_opening(C);
}
/*FI]*/
r216compile_to_c((T216*)((C)->_routine_body/*44*/));
/*[IF*/
if(_flag){
r324c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((3==z1)){
_flag=r324need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r324c_define_opening(C);
}
/*FI]*/
_a=/*(IRF4.3first*/((T216*)((C)->_routine_body/*44*/))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 282: 
break;
default:
_a=NULL;
};_w=(((T282*)_a))->_left_side/*4*/;
if(NULL!=(_w))switch(((T0*)_w)->id) {
case 142: case 138: case 148: case 315: case 374: 
break;
default:
_w=NULL;
};_w=X83name_in(_w,X54base_class((C)->_current_type/*4*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X54mapping_cast((C)->_current_type/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25put_target_as_target((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_170));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1012));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string(_w));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_e=(((T282*)_a))->_right_side/*8*/;
/*[IF*/
if(((C)->_arguments/*36*/)==((void*)(NULL))){
X56compile_to_c(_e);
}
else{
r25put_arguments((T25*)(oBC12cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
/*[IF*/
if(_flag){
r324c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((4==z1)){
_flag=r324need_local_vars(C);
/*[IF*/
if(_flag){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r324c_define_opening(C);
}
/*FI]*/
_pc=/*(IRF4.3first*/((T216*)((C)->_routine_body/*44*/))->_first_one/*8*//*)*/;
if(NULL!=(_pc))switch(((T0*)_pc)->id) {
case 165: case 163: case 164: 
break;
default:
_pc=NULL;
};_rf=/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/);
r25push_same_target((T25*)(oBC12cpp),_rf,X162arguments(_pc));
X51mapping_c(_rf);
r25pop((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
r324c_define_closing(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else 
if((5==z1)){
_pc=/*(IRF4.3first*/((T216*)((C)->_routine_body/*44*/))->_first_one/*8*//*)*/;
if(NULL!=(_pc))switch(((T0*)_pc)->id) {
case 165: case 163: case 164: 
break;
default:
_pc=NULL;
};X162finalize(_pc);
r25push_inline_dca((T25*)(oBC12cpp),(T0*)C,_pc);
X51mapping_c(/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/));
r25pop((T25*)(oBC12cpp));
}
 else {/*[IF*/
if(!(r324use_current(C))){
/*[IF*/
if(r25target_cannot_be_dropped((T25*)(oBC12cpp))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_348));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(r324use_current(C)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC324tmp_string))))->_count)=(0);
/*]*/
X54c_type_for_target_in((C)->_current_type/*4*/,oBC324tmp_string);
r7extend((T7*)(oBC324tmp_string),'\40');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),oBC324tmp_string);
/*]*/
r25inline_level_incr((T25*)(oBC12cpp));
r25print_current((T25*)(oBC12cpp));
r25inline_level_decr((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25put_target_as_target((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r187inline_one_pc((T187*)((C)->_arguments/*36*/));
}
/*FI]*/
/*[IF*/
if(r324need_local_vars(C)){
r178inline_one_pc((T178*)((C)->_local_vars/*40*/));
r25inline_level_incr((T25*)(oBC12cpp));
r178initialize_expanded((T178*)((C)->_local_vars/*40*/));
r25inline_level_decr((T25*)(oBC12cpp));
}
/*FI]*/
/*[IRF3.4push_inline_one_pc*/r25stack_push((T25*)(oBC12cpp),10);
/*]*/
r25inline_level_incr((T25*)(oBC12cpp));
r216compile_to_c((T216*)((C)->_routine_body/*44*/));
r25inline_level_decr((T25*)(oBC12cpp));
r25pop((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}}
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms324_2076));
/*]*/
}


T2 r324arg_count(T324* C){
T2 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=/*(IRF4.6count*/(((T191*)(((T187*)((C)->_arguments/*36*/))->_flat_list/*8*/)))->_upper/*12*//*)*/;
}
/*FI]*/
return R;
}


void r324address_of_c_mapping(T324* C){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r324isa_in_line(C)){
r324address_of_c_mapping_wrapper(C);
}
 else if(r324use_current(C)){
r324mapping_name(C);
}
else{
r324address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r324address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


T6 r324need_local_vars(T324* C){
T6 R=0;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
R=r178produce_c((T178*)((C)->_local_vars/*40*/));
}
/*FI]*/
return R;
}


void r324mapping_c(T324* C){
/*[IF*/
if(r324isa_in_line(C)){
/*[IF*/
if(/*(IRF4.6stack_not_full*/(((T25*)(oBC12cpp))->_top/*32*/)<(50)/*)*/){
r324in_line(C);
}
else{
C->_in_line_status=-(1);
/*[IRF3.6register_for_c_define*/{T0* b1=(T0*)C;
r352add_last((T352*)(oBC22registered_for_c_define),b1);
}/*]*/
r324mapping_c(C);
}
/*FI]*/
}
else{
r324default_mapping_procedure(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_3.can_be_dropped*/


void r324initialize(T324* C){
C->_arguments=((T302*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_runnable((T187*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T302*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
C->_local_vars=r178to_runnable((T178*)((C)->_local_vars/*40*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T302*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
C->_routine_body=r216to_runnable((T216*)((C)->_routine_body/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
C->_require_assertion=r302run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
C->_ensure_assertion=r302run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T302*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T363*)((T363*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r216to_runnable((T216*)((C)->_rescue_compound/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
}


T6 r324one_pc(T324* C){
T6 R=0;
T0* _r=NULL;
T0* _rf=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
_rb=(C)->_routine_body/*44*/;
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r216count(((T216*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(((T216*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_pc))switch(((T0*)_pc)->id) {
case 165: case 163: case 164: 
break;
default:
_pc=NULL;
};/*[IF*/
if((_pc)!=((void*)(NULL))){
_rf=/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/);
/*[IF*/
if(((_rf)!=((void*)(NULL)))&&((_rf)!=((void*)(C)))){
_r=((T24*)(X51run_class(_rf)))->_running/*12*/;
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r328count(((T328*)_r)))==(1))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.c_define_done*/
/*No:RUN_FEATURE_3.require_assertion*/


void r324nothing_comment(T324* C){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184a));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_759));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X54run_time_mark((C)->_current_type/*4*/));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\56';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_3.C_one_pc*/
/*No:RUN_FEATURE_3.C_attribute_writer*/


void r324compute_use_current(T324* C){
T0* _ct=NULL;
_ct=(C)->_current_type/*4*/;
/*[IF*/
if(X54is_reference(_ct)){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
C->_use_current_state=14;
}
else{
r324std_compute_use_current(C);
}
/*FI]*/
}
else{
r324std_compute_use_current(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_3.local_vars*/
/*No:RUN_FEATURE_3.fz_open_c_comment*/


T0* r324body_one_dpca(T324* C){
T0* R=NULL;
T0* _r=NULL;
T0* _rf2=NULL;
T0* _c0c=NULL;
T0* _pc=NULL;
T0* _rb=NULL;
/*[IF*/
if(((C)->_local_vars/*40*/)==((void*)(NULL))){
_rb=(C)->_routine_body/*44*/;
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r216count(((T216*)_rb)))==(1))){
_pc=/*(IRF4.3first*/(((T216*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_pc))switch(((T0*)_pc)->id) {
case 165: case 163: case 164: 
break;
default:
_pc=NULL;
};/*[IF*/
if((_pc)!=((void*)(NULL))){
_c0c=/*X162target*/((T0*)(((T165*)_pc))->_target/*4*/);
if(NULL!=(_c0c))switch(((T0*)_c0c)->id) {
case 150: 
break;
default:
_c0c=NULL;
};/*[IF*/
if(((_c0c)!=((void*)(NULL)))&&(X56is_current((((T150*)_c0c))->_target/*4*/))){
_rf2=(((T150*)_c0c))->_run_feature/*12*/;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 356: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)!=((void*)(NULL))){
_r=((T24*)(r356run_class(((T356*)_rf2))))->_running/*12*/;
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r328count(((T328*)_r)))==(1))){
_r=((T24*)(X51run_class(/*X162run_feature*/((T0*)(((T165*)_pc))->_run_feature/*12*/))))->_running/*12*/;
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r328count(((T328*)_r)))==(1))){
R=_pc;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_3.C_do_not_use_current*/


void r324c_frame_descriptor_name_in(T324* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r324id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}


void r296c_mapping_function(T0* a1,T0* a2,T0* a3){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
r296c_mapping_external((((T384*)a1))->_base_feature/*36*/,r384arg_count(((T384*)a1)));
}
else{
r384default_mapping_function(((T384*)a1));
}
/*FI]*/
}


void r296c_mapping_procedure(T0* a1,T0* a2,T0* a3){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
r296c_mapping_external((((T387*)a1))->_base_feature/*32*/,r387arg_count(((T387*)a1)));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
else{
r387default_mapping_procedure(((T387*)a1));
}
/*FI]*/
}
/*No:NATIVE_WITHOUT_CURRENT.use_current*/


void r296c_mapping_external(T0* a1,T2 a2){
T6 _tcbd=0;
T6 _eruc=0;
_eruc=/*(IRF4.1use_current*/0/*)*/;
/*[IF*/
if(!(_eruc)){
_tcbd=r25target_cannot_be_dropped((T25*)(oBC12cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X289external_c_name(a1));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(_eruc){
r25put_target_as_value((T25*)(oBC12cpp));
}
/*FI]*/
/*[IF*/
if((a2)>(0)){
/*[IF*/
if(_eruc){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25put_arguments((T25*)(oBC12cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if((!(_eruc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:NATIVE_WITHOUT_CURRENT.need_prototype*/
/*No:NATIVE_WITHOUT_CURRENT.body*/
/*No:NATIVE_WITHOUT_CURRENT.fz_00*/


void r296wrapped_external_call(T0* a1,T2 a2){
T2 _i=0;
r7append((T7*)(((T0*)ms288_3077376)),X289external_c_name(a1));
r7extend((T7*)(((T0*)ms288_3077376)),'\50');
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_i=1;
while (!((_i)>(a2))) {
r7extend((T7*)(((T0*)ms288_3077376)),'a');
r2append_in(_i,((T0*)ms288_3077376));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(a2)){
r7extend((T7*)(((T0*)ms288_3077376)),'\54');
}
/*FI]*/
}
r7append((T7*)(((T0*)ms288_3077376)),((T0*)ms13_348));
}
/*No:NATIVE_WITHOUT_CURRENT.stupid_switch*/
/*No:NATIVE_WITHOUT_CURRENT.fz_14*/


void r296c_define_function(T0* a1,T0* a2,T0* a3){
/*[IF*/
{/*AT*//*[IRF3.6c_prototype*/{T384* C1=((T384*)a1);
r384external_prototype(C1,(C1)->_base_feature/*36*/);
}/*]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms288_3077376)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms288_3077376)),'R');
r7extend((T7*)(((T0*)ms288_3077376)),'\75');
r296wrapped_external_call((((T384*)a1))->_base_feature/*36*/,r384arg_count(((T384*)a1)));
r384c_define_with_body(((T384*)a1),((T0*)ms288_3077376));
}
/*FI]*/
}


void r296c_define_procedure(T0* a1,T0* a2,T0* a3){
/*[IF*/
{/*AT*//*[IRF3.6c_prototype*/{T387* C1=((T387*)a1);
r387external_prototype(C1,(C1)->_base_feature/*32*/);
}/*]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms288_3077376)))))->_count)=(0);
/*]*/
r296wrapped_external_call((((T387*)a1))->_base_feature/*32*/,r387arg_count(((T387*)a1)));
r387c_define_with_body(((T387*)a1),((T0*)ms288_3077376));
}
/*FI]*/
}
/*No:SIMPLE_FEATURE_NAME.static_value*/
/*No:SIMPLE_FEATURE_NAME.is_frozen*/
/*No:SIMPLE_FEATURE_NAME.is_static*/
/*No:SIMPLE_FEATURE_NAME.is_manifest_string*/


T0* r148origin_base_class(T148* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=(C)->_start_position/*8*/;
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r70base_class(((T70*)_sp));
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.start_position*/
/*No:SIMPLE_FEATURE_NAME.to_string*/
/*No:SIMPLE_FEATURE_NAME.c_simple*/


T0* r148add_comment(T148* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r148to_integer(T148* C){
T2 R=0;
r148error((C)->_start_position/*8*/,((T0*)ms13_45846));
return R;
}
/*No:SIMPLE_FEATURE_NAME.use_current*/


T0* r148to_runnable(T148* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
_wbc=r70base_class((T70*)((C)->_start_position/*8*/));
_new_name=r63new_name_of((T63*)(X54base_class(a1)),_wbc,(T0*)C);
_rf=r24get_feature((T24*)(X54run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r148error((C)->_start_position/*8*/,((T0*)ms148_24192));
}
else{
_rf2=_rf;
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 356: 
break;
default:
_rf2=NULL;
};/*[IF*/
if((_rf2)==((void*)(NULL))){
r21add_position(X51start_position(_rf));
r148error((C)->_start_position/*8*/,((T0*)ms148_56880));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_feature_2/*12*/)==((void*)(NULL))){
C->_run_feature_2=_rf2;
R=(T0*)C;
}
 else if(((C)->_run_feature_2/*12*/)==((void*)(_rf))){
R=(T0*)C;
}
else{
{T148*n=malloc(sizeof(*n));
*n=M148;
r148with(n,(T0*)C,_rf2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.declaration_in*/
/*No:SIMPLE_FEATURE_NAME.compile_to_c_old*/
/*No:SIMPLE_FEATURE_NAME.is_pre_computable*/
/*No:SIMPLE_FEATURE_NAME.collect_c_tmp*/
/*No:SIMPLE_FEATURE_NAME.fz_iinaiv*/


T0* r148name_in(T148* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
_bc=r148origin_base_class(C);
/*[IF*/
if((_bc)==((void*)(a1))){
R=(T0*)C;
}
else{
R=r63new_name_of(((T63*)a1),_bc,(T0*)C);
}
/*FI]*/
return R;
}
/*No:SIMPLE_FEATURE_NAME.result_type*/


T0* r148run_feature(T148* C,T0* a1){
T0* R=NULL;
R=r24get_rf_with((T24*)(X54run_class(a1)),(T0*)C);
return R;
}
/*No:SIMPLE_FEATURE_NAME.run_feature_2*/


void r148with(T148* C,T0* a1,T0* a2){
C->_to_string=(((T148*)a1))->_to_string/*4*/;
C->_start_position=(((T148*)a1))->_start_position/*8*/;
C->_run_feature_2=a2;
}
/*No:SIMPLE_FEATURE_NAME.is_result*/
/*No:SIMPLE_FEATURE_NAME.fatal_error*/

