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


T0* r228arg1(T228* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r228assertion_check(T228* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T104 se_tmp0;
X96vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T235*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X126assertion_check(r228arg1(C),a1);
}


T0* r228result_type(T228* C){
T0* R=NULL;
T0* _tla=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X62is_like_current(R)){
R=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X126result_type(r228arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r228afd_check(T228* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X62run_class(X126result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r63count(((T63*)_running)))>(1)){
r432update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r228use_current(T228* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X126use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


void r228c_declare_for_old(T228* C){
X126c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245c_declare_for_old*/r245c_declare_for_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r228compile_to_c_old(T228* C){
X126compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245compile_to_c_old*/r245compile_to_c_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T0* r228runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X245to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X245start_position(a1),&se_tmp0)));
}
r228fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r228mapping_c_target(T228* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r228result_type(C));
/*[IF*/
if(X62is_reference(_actual_type)){
/*[IF*/
if(X62is_reference(a1)){
X62mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T228* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T228* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T228* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T228* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T228* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r228run_feature_for(T228* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X126result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X62run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
R=r61run_feature_for(((T61*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms168_608361995);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T2 r228to_integer_or_error(T228* C){
T2 R=0;
r228to_integer_error(C);
return R;
}


T0* r228add_comment(T228* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r228to_runnable(T228* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r228runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r228runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r228arg1(C));
/*[IF*/
if(X62is_real(_argument_type)){
/*[IF*/
if(X62is_integer(_target_type)){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X62is_double(_argument_type)){
/*[IF*/
if((X62is_integer(_target_type))||(X62is_real(_target_type))){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r228run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r228run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T228*n=((T228*)se_malloc(sizeof(*n))/*24*/);
*n=M228;
r228with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


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


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


T0* r308try_to_undefine_aux(T308* C,T0* a1,T0* a2){
T0* R=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=r308start_position(C),&se_tmp0)));
}
{T104 se_tmp0;
r308error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms142_1389744524));
}
r61fatal_undefine(((T61*)a2),a1);
return R;
}


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


T6 r308can_hide(T308* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X99result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X99result_type(a1))==((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r308error((*(se_tmp0=r308start_position(C),&se_tmp0)),((T0*)ms99_1393094289));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X99arguments(a1)))){
/*[IF*/
{/*AT*/{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r308error((*(se_tmp0=r308start_position(C),&se_tmp0)),((T0*)ms99_1854646737));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((/*RF2*/(C)->_result_type/*20*/),X99result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_895448585);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((/*RF2*/(((T60*)a2))->_current_type/*0*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r308merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


void r308merge_header_comments(T308* C,T0* a1){
/*[IF*/
if((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/)){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*12*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=/*SSWARF2*//*X99header_comment*/(/*RF2*/(((T293*)a1))->_header_comment/*12*/);
}
 else if((/*SSWARF2*//*X99header_comment*/(/*RF2*/(((T293*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X99set_header_comment(a1,(/*RF2*/(C)->_header_comment/*12*/));
}
/*FI]*/
}
/*FI]*/
}


void r308add_into(T308* C,T0* a1){
T0* _key=NULL;
T0* _fn=NULL;
T2 _i=0;
{T104 se_tmp0;
(/*SFN*/C->_base_class)=(/*RF2*/((*(se_tmp0=X117start_position(r118item((T118*)((/*RF2*/(C)->_names/*8*/)),1)),&se_tmp0)))._base_class/*0*/);
}
_i=1;
while (!((_i)>(r118count((T118*)((/*RF2*/(C)->_names/*8*/))))))
{
_fn=r118item((T118*)((/*RF2*/(C)->_names/*8*/)),_i);
_key=X117to_key(_fn);
/*[IF*/
if(r172has(((T172*)a1),_key)){
_fn=/*SSFRF4*//*X99first_name*//*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/((T293*)(r172at(((T172*)a1),_key)))->_names/*8*/))))->_first/*0*/)/*)*/;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(r118item((T118*)((/*RF2*/(C)->_names/*8*/)),_i)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1087076085);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_string(_fn);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
else{
r172add(((T172*)a1),(T0*)C,_key);
}
/*FI]*/
_i=(_i)+(1);
}
}


T0* r308try_to_undefine(T308* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
_fn2=r118feature_name((T118*)((/*RF2*/(C)->_names/*8*/)),X117to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X117undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r308try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
X381set_clients(R,(/*RF2*/(C)->_clients/*16*/));
r308merge_header_comments(C,R);
}
else{
r61fatal_undefine(((T61*)a2),a1);
}
/*FI]*/
return R;
}


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


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


T0* r308to_run_feature(T308* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
R=r60at(((T60*)_rc),a2);
if(NULL!=(R)){
switch(((T0*)R)->id){
case 437:
break;
default:
R=NULL;
}
}/*[IF*/
if((R)==((void*)(NULL))){
{T437*n=((T437*)se_malloc(sizeof(*n))/*40*/);
*n=M437;
r437make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r308is_not_mergeable_with(T308* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
R=(X99result_type(a1))!=((void*)(NULL));
}
else{
R=(X99result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1393094289);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
else{
/*[IF*/
{/*AT*/R=(X99arguments(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1854646737);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
 else {/*AT*/}
/*FI]*/
}
/*FI]*/
r308merge_header_comments(C,a1);
return R;
}


T104 r308start_position(T308* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position(/*(IRF4.6first_name*/(/*RF2*/(((T118*)((/*RF2*/(C)->_names/*8*/))))->_first/*0*/)/*)*/),&se_tmp0));
}
return R;
}


void r407make(T407* C,T0* a1,T0* a2){
(/*SFN*/C->_name)=a1;
X127set_result_type((/*RF2*/(C)->_name/*4*/),a2);
}


void r407append_in(T407* C,T0* a1){
X122add_last(a1,(/*RF2*/(C)->_name/*4*/));
}


void r426require_start(T426* C){
r204clear((T204*)(oBC426collector));
(/*SFN*/C->_header_comment)=NULL;
(/*SFN*/C->_processing_require)=1;
}


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


T0* r426invariant_end(T426* C,T0* a1){
T0* R=NULL;
T104 _position={NULL,0};
T0* _r=NULL;
_r=r426runnable(oBC426collector,a1,NULL,((T3)'\137'));
/*[IF*/
if((_r)!=((void*)(NULL))){
r59incr_magic_count((T59*)(oBC19small_eiffel));
{T104 se_tmp0;
_position=(/*RF2*/((T77*)((/*RF2*/((T61*)(X62base_class(a1)))->_name/*18*/)))->_start_position/*0*/);
}
{T205*n=((T205*)se_malloc(sizeof(*n))/*24*/);
*n=M205;
r205make_runnable(n,_position,_r,a1,NULL);
R=((T0*)n);
}
/*[IRF3.3set_header_comment*/((((T205*)(((T205*)R))))->_header_comment)=((/*RF2*/(C)->_header_comment/*1*/));
/*]*/
}
/*FI]*/
return R;
}


void r426invariant_start(T426* C){
r204clear((T204*)(oBC426collector));
(/*SFN*/C->_header_comment)=NULL;
}


void r426assertion_add_last(T426* C,T0* a1){
T0* _e=NULL;
T0* _r=NULL;
/*[IF*/
if((/*RF2*/(C)->_processing_require/*0*/)){
_r=X99require_assertion(a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=(/*RF2*/(((T383*)_r))->_header_comment/*8*/);
}
/*FI]*/
r383add_into(((T383*)_r),oBC426collector);
}
/*FI]*/
}
else{
_e=X99ensure_assertion(a1);
/*[IF*/
if((_e)!=((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=(/*RF2*/(((T309*)_e))->_header_comment/*8*/);
}
/*FI]*/
r309add_into(((T309*)_e),oBC426collector);
}
/*FI]*/
}
/*FI]*/
}
T0*oBC426collector=NULL;


T0* r426require_end(T426* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _er=NULL;
T0* _r2=NULL;
T0* _r=NULL;
T0* _a=NULL;
T0* _bc=NULL;
T104 _sp={NULL,0};
T2 _i=0;
(/*SFN*/C->_processing_require)=0;
_r=r426runnable(oBC426collector,a2,a1,((T3)'R'));
/*[IF*/
if((_r)!=((void*)(NULL))){
{T204*n=((T204*)se_malloc(sizeof(*n))/*16*/);
*n=M204;
r204with_capacity(n,r204count(((T204*)_r)),1);
_r2=((T0*)n);
}
_a=r204item(((T204*)_r),1);
r204add_last(((T204*)_r2),_a);
{T104 se_tmp0;
_sp=(*(se_tmp0=r203start_position(((T203*)_a)),&se_tmp0));
}
_bc=(/*RF2*/(_sp)._base_class/*0*/);
_i=2;
{T104 se_tmp0;
while (!(((_i)>((/*RF2*/(((T204*)_r))->_upper/*8*/)))||(((/*RF2*/((*(se_tmp0=r203start_position((T203*)(r204item(((T204*)_r),_i))),&se_tmp0)))._base_class/*0*/))!=((void*)(_bc)))))
{
r204add_last(((T204*)_r2),r204item(((T204*)_r),_i));
_i=(_i)+(1);
}
}
{T383*n=((T383*)se_malloc(sizeof(*n))/*25*/);
*n=M383;
r383make_runnable(n,_sp,_r2,a2,a1);
_er=((T0*)n);
}
{T427*n=((T427*)se_malloc(sizeof(*n))/*4*/);
*n=M427;
r427make(n,_er);
R=((T0*)n);
}
while (!((_i)>((/*RF2*/(((T204*)_r))->_upper/*8*/))))
{
{T204*n=((T204*)se_malloc(sizeof(*n))/*16*/);
*n=M204;
r204with_capacity(n,r204count(((T204*)_r)),1);
_r2=((T0*)n);
}
_a=r204item(((T204*)_r),_i);
r204add_last(((T204*)_r2),_a);
{T104 se_tmp0;
_sp=(*(se_tmp0=r203start_position(((T203*)_a)),&se_tmp0));
}
_bc=(/*RF2*/(_sp)._base_class/*0*/);
_i=(_i)+(1);
{T104 se_tmp0;
while (!(((_i)>((/*RF2*/(((T204*)_r))->_upper/*8*/)))||(((/*RF2*/((*(se_tmp0=r203start_position((T203*)(r204item(((T204*)_r),_i))),&se_tmp0)))._base_class/*0*/))!=((void*)(_bc)))))
{
r204add_last(((T204*)_r2),r204item(((T204*)_r),_i));
_i=(_i)+(1);
}
}
{T383*n=((T383*)se_malloc(sizeof(*n))/*25*/);
*n=M383;
r383make_runnable(n,_sp,_r2,a2,a1);
_er=((T0*)n);
}
r427add(((T427*)R),_er);
}
}
/*FI]*/
return R;
}


T0* r426runnable(T0* a1,T0* a2,T0* a3,T3 a4){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r204is_empty(((T204*)a1)))){
R=r204twin(((T204*)a1));
_i=(/*RF2*/(((T204*)R))->_upper/*8*/);
while (!((_i)==(0)))
{
r59push(a3);
_a=r203to_runnable((T203*)(r204item(((T204*)R),_i)),a2,a4);
/*[IF*/
if((_a)==((void*)(NULL))){
{T104 se_tmp0;
r426error((*(se_tmp0=r203start_position((T203*)(r204item(((T204*)R),_i))),&se_tmp0)),((T0*)ms20_2042907574));
}
}
else{
/*[IRF3.6put*/{T204* C1=((T204*)R);
T0* b1=_a;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
/*[IRF3.2pop*//*SSPRF3*//*X155remove_last*/r155remove_last((T155*)(oBC59run_feature_stack));
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r426invariant_add_last(T426* C,T0* a1){
T0* _bc2=NULL;
T0* _bc=NULL;
T0* _hc2=NULL;
r205add_into(((T205*)a1),oBC426collector);
_hc2=(/*RF2*/(((T205*)a1))->_header_comment/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_header_comment/*1*/))==((void*)(NULL))){
(/*SFN*/C->_header_comment)=_hc2;
}
 else if((_hc2)==((void*)(NULL))){
}
else{
{T104 se_tmp0;
_bc=(/*RF2*/((/*RF2*/((T164*)((/*RF2*/(C)->_header_comment/*1*/)))->_start_position/*0*/))._base_class/*0*/);
}
{T104 se_tmp0;
_bc2=(/*RF2*/((/*RF2*/(((T164*)_hc2))->_start_position/*0*/))._base_class/*0*/);
}
/*[IF*/
if(((_bc2)==((void*)(_bc)))||(r61is_subclass_of(((T61*)_bc2),_bc))){
(/*SFN*/C->_header_comment)=_hc2;
}
/*FI]*/
}
/*FI]*/
}


void r426ensure_start(T426* C){
r204clear((T204*)(oBC426collector));
(/*SFN*/C->_header_comment)=NULL;
}


T0* r426ensure_end(T426* C,T0* a1,T0* a2){
T0* R=NULL;
T104 _position={NULL,0};
T0* _r=NULL;
_r=r426runnable(oBC426collector,a2,a1,((T3)'E'));
/*[IF*/
if((_r)!=((void*)(NULL))){
{T104 se_tmp0;
_position=(/*RF2*/((T77*)((/*RF2*/((T61*)(X62base_class(a2)))->_name/*18*/)))->_start_position/*0*/);
}
{T309*n=((T309*)se_malloc(sizeof(*n))/*25*/);
*n=M309;
r309make_runnable(n,_position,_r,a2,a1);
R=((T0*)n);
}
/*[IRF3.3set_header_comment*/((((T309*)(((T309*)R))))->_header_comment)=((/*RF2*/(C)->_header_comment/*1*/));
/*]*/
}
/*FI]*/
return R;
}
T0*oBC19type_any=NULL;
int fBC19type_any=0;


T0* r488type_any(void){
if(fBC19type_any==0){fBC19type_any=1;{
T104 _unknown_position={NULL,0};
{T356*n=((T356*)se_malloc(sizeof(*n))/*16*/);
*n=M356;
oBC19type_any=((T0*)n);
r356make(n,_unknown_position);
}
}}
return oBC19type_any;
}
T0*oBC19eiffel_parser=NULL;
T0*oBC19cecil_pool=NULL;


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


void r488afd_check(T488* C){
T0* _rf=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_entries/*8*/))!=((void*)(NULL))){
_i=(/*RF2*/((T493*)((/*RF2*/(C)->_entries/*8*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_rf=(/*RF2*/((T511*)(/*(IRF4.6item*/((/*RF2*/((T493*)((/*RF2*/(C)->_entries/*8*/)))->_storage/*0*/))[_i]/*)*/))->_second/*0*/);
r432update_with(_rf);
_i=(_i)-(1);
}
}
/*FI]*/
}


void r488parse(T488* C){
T0* _rc=NULL;
T2 _i=0;
T0* _rf=NULL;
T0* _fn=NULL;
T0* _aux=NULL;
T0* _t=NULL;
T0* _tuple=NULL;
{T493*n=((T493*)se_malloc(sizeof(*n))/*12*/);
*n=M493;
r493with_capacity(n,4);
(/*SFN*/C->_entries)=((T0*)n);
}
(/*SFN*/C->_path_h)=r37connect_to_cecil((T37*)(oBC19eiffel_parser),(/*RF2*/(C)->_path/*0*/));
{T507*n=((T507*)se_malloc(sizeof(*n))/*12*/);
*n=M507;
r507with_capacity(n,4);
_aux=((T0*)n);
}
while (!(r37end_of_input((T37*)(oBC19eiffel_parser))))
{
_tuple=new_tuple511(r37parse_c_name((T37*)(oBC19eiffel_parser)),
NULL);
r493add_last((T493*)((/*RF2*/(C)->_entries/*8*/)),_tuple);
_t=r37parse_run_type((T37*)(oBC19eiffel_parser));
_fn=r37parse_feature_name((T37*)(oBC19eiffel_parser));
r507add_last(((T507*)_aux),new_tuple506(_t,
_fn));
}
r37disconnect((T37*)(oBC19eiffel_parser));
r38put_string((T38*)(oBC19echo),((T0*)ms488_22997809));
_i=0;
while (!((_i)>((/*RF2*/(((T507*)_aux))->_upper/*8*/))))
{
_t=(/*RF2*/((T506*)(/*(IRF4.6item*/((/*RF2*/(((T507*)_aux))->_storage/*0*/))[_i]/*)*/))->_first/*4*/);
_fn=(/*RF2*/((T506*)(/*(IRF4.6item*/((/*RF2*/(((T507*)_aux))->_storage/*0*/))[_i]/*)*/))->_second/*0*/);
_t=X62to_runnable(_t,r488type_any());
_rc=X62run_class(_t);
_rf=r60get_feature(((T60*)_rc),_fn);
/*[IF*/
if((_rf)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(_fn),&se_tmp0)));
}
r488fatal_error(((T0*)ms488_1175718195));
}
/*FI]*/
/*[IF*/
if(X96is_deferred(_rf)){
}
 else if(((/*RF2*/(((T60*)_rc))->_running/*21*/))==((void*)(NULL))){
r60set_at_run_time(((T60*)_rc));
}
/*FI]*/
r131echo_for(_rf);
/*[IRF3.3set_second*/((((T511*)((T511*)(/*(IRF4.6item*/((/*RF2*/((T493*)((/*RF2*/(C)->_entries/*8*/)))->_storage/*0*/))[_i]/*)*/))))->_second)=(_rf);
/*]*/
_i=(_i)+(1);
}
}


void r488c_define_users(T488* C){
T0* _tuple=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_entries/*8*/))!=((void*)(NULL))){
r38put_string((T38*)(oBC19echo),((T0*)ms488_1413407004));
r83connect_cecil_out_h((T83*)(oBC19cpp),(/*RF2*/(C)->_path_h/*4*/));
_i=(/*RF2*/((T493*)((/*RF2*/(C)->_entries/*8*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
_tuple=/*(IRF4.6item*/((/*RF2*/((T493*)((/*RF2*/(C)->_entries/*8*/)))->_storage/*0*/))[_i]/*)*/;
r131c_define_for((/*RF2*/(((T511*)_tuple))->_first/*4*/),(/*RF2*/(((T511*)_tuple))->_second/*0*/));
_i=(_i)-(1);
}
/*[IRF3.5disconnect_cecil_out_h*/r58disconnect(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_out_h/*59*/))));
/*]*/
}
/*FI]*/
}
T0*oBC91body=NULL;


T2 r89parse_include(T89* C,T2 a1,T0* a2){
T2 R=0;
T3 _c=0;
T2 _i=0;
T0* _include=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC90buffer))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC90buffer),/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(a1)-(1)]/*)*/);
_i=(a1)+(1);
while (!(((_i)>((/*RF2*/(((T7*)a2))->_count/*4*/)))||((R)>(_i))))
{
_c=/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(_i)-(1)]/*)*/;
/*[INSPECT*/
{int z1=_c;
switch(z1){
case 34:
case 62:
r7extend((T7*)(oBC90buffer),_c);
_include=r7twin((T7*)(oBC90buffer));
/*[IF*/
if(!(r120has((T120*)(oBC89include_memory),_include))){
r120add_last((T120*)(oBC89include_memory),_include);
/*[IRF3.6add_include*/{T83* C1=(T83*)(oBC19cpp);
T0* b1=_include;
r83add_include_on((/*RF2*/(C1)->_out_h/*59*/),b1);
}/*]*/
}
/*FI]*/
R=(_i)+(1);
break;
default:;
r7extend((T7*)(oBC90buffer),_c);
_i=(_i)+(1);
}
}/*INSPECT]*/
}
/*[IF*/
if((R)==(0)){
R=r89error_at(C,_i,a2,20);
}
/*FI]*/
return R;
}
T0*oBC90buffer=NULL;


void r89c_plus_plus_function_definition(T89* C,T0* a1){
T2 _args_count=0;
T0* _er=NULL;
_er=(/*RF2*/(((T95*)a1))->_base_feature/*28*/);
/*[IF*/
if(!(r100fast_has((T100*)(oBC89external_routine_memory),_er))){
r100add_last((T100*)(oBC89external_routine_memory),_er);
r95c_plus_plus_prototype(((T95*)a1),_er);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC91body))))->_count)=(0);
/*]*/
r7append((T7*)(oBC91body),((T0*)ms89_54686040));
X62c_type_for_external_in((/*RF2*/(((T95*)a1))->_result_type/*40*/),oBC91body);
r7extend((T7*)(oBC91body),((T3)'\51'));
/*[IF*/
if(((/*RF2*/(((T95*)a1))->_arguments/*36*/))!=((void*)(NULL))){
_args_count=/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(((T95*)a1))->_arguments/*36*/)))->_flat_list/*8*/))))/*)*/;
}
/*FI]*/
r89parse_external(C,_args_count,(/*RF2*/(C)->_external_tag/*4*/),_er);
r7append((T7*)(oBC91body),((T0*)ms89_33885));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC91body);
/*]*/
}
/*FI]*/
}


void r89c_define_function(T89* C,T0* a1,T0* a2,T0* a3){
r89standard_c_define_function(a1,a2,a3);
r83c_plus_plus_register((T83*)(oBC19cpp),(T0*)C);
(/*SFN*/C->_rf8_memory)=a1;
}


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


void r89parse_external(T89* C,T2 a1,T0* a2,T0* a3){
T3 _c=0;
T2 _parenthesis=0;
T2 _args=0;
T2 _state=0;
T2 _i=0;
_i=4;
while (!((_i)>((/*RF2*/(((T7*)a2))->_count/*4*/))))
{
_c=/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(_i)-(1)]/*)*/;
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 91:
_i=(_i)+(1);
_state=1;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 1:
/*[IF*/
if((((_c)==(((T3)'\40')))||((_c)==(((T3)'\11'))))||((_c)==(((T3)'\n')))){
_i=(_i)+(1);
}
 else if((_i)==(r7substring_index(((T7*)a2),((T0*)ms89_2237652),_i))){
_i=(_i)+(7);
_i=r89parse_cpp_class(C,_i,a2);
r7append((T7*)(oBC91body),((T0*)ms89_348));
r7append((T7*)(oBC91body),/*SSFRF4*//*X97c_plus_plus_name*/r116c_plus_plus_name(((T116*)a3)));
_state=2;
}
 else if((_i)==(r7substring_index(((T7*)a2),((T0*)ms89_16902),_i))){
_i=(_i)+(4);
r7append((T7*)(oBC91body),((T0*)ms89_16902a));
_i=r89parse_cpp_class(C,_i,a2);
_state=3;
}
 else if((_i)==(r7substring_index(((T7*)a2),((T0*)ms89_1961687),_i))){
_i=(_i)+(7);
r7append((T7*)(oBC91body),((T0*)ms89_9808515));
_i=r89parse_cpp_class(C,_i,a2);
r7append((T7*)(oBC91body),((T0*)ms89_34086));
/*[IF*/
if(((_args)!=(0))||((a1)!=(1))){
_i=r89error_at(C,_i,a2,_state);
}
else{
_state=4;
}
/*FI]*/
}
 else if((_i)==(r7substring_index(((T7*)a2),((T0*)ms89_1809088081),_i))){
_i=r89error_at(C,_i,a2,_state);
}
else{
_args=(_args)+(1);
r7append((T7*)(oBC91body),((T0*)ms89_240));
_i=r89parse_cpp_class(C,_i,a2);
r7append((T7*)(oBC91body),((T0*)ms89_852437));
r7append((T7*)(oBC91body),/*SSFRF4*//*X97c_plus_plus_name*/r116c_plus_plus_name(((T116*)a3)));
_state=5;
}
/*FI]*/
break;
case 2:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 93:
_i=(_i)+(1);
_state=8;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 3:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 93:
_i=(_i)+(1);
_state=6;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 4:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 93:
_i=(_i)+(1);
_state=10;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 5:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 93:
_i=(_i)+(1);
_state=7;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 6:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 40:
_i=r89parse_args(C,_i,a2,_args,a1);
_state=13;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 7:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 40:
_i=r89parse_args(C,_i,a2,_args,a1);
_state=11;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 8:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 40:
_i=r89parse_args(C,_i,a2,_args,a1);
_state=9;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 9:
_i=(_i)+(1);
break;
case 10:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 40:
_parenthesis=(_parenthesis)+(1);
_i=(_i)+(1);
break;
case 41:
/*[IF*/
if((_parenthesis)>(1)){
_i=r89error_at(C,_i,a2,_state);
}
else{
_i=(_i)+(1);
}
/*FI]*/
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
break;
case 11:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 58:
_state=12;
break;
case 124:
_state=13;
break;
}
}/*INSPECT]*/
_i=(_i)+(1);
break;
case 12:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 124:
_state=13;
break;
}
}/*INSPECT]*/
_i=(_i)+(1);
break;
default:;
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 34:
case 60:
_i=r89parse_include(C,_i,a2);
break;
case 44:
_i=(_i)+(1);
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
}
T0*oBC89external_routine_memory=NULL;


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


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


void r89c_define_procedure(T89* C,T0* a1,T0* a2,T0* a3){
r89standard_c_define_procedure(a1,a2,a3);
r83c_plus_plus_register((T83*)(oBC19cpp),(T0*)C);
(/*SFN*/C->_rf7_memory)=a1;
}


void r89c_mapping_external(T0* a1,T2 a2){
T6 _tcbd=0;
T6 _eruc=0;
_eruc=/*(IRF4.1use_current*/0/*)*/;
/*[IF*/
if(!(_eruc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),/*SSFRF4*//*X97external_name*/r116external_name(((T116*)a1)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_eruc){
r83put_target_as_value((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if((a2)>(0)){
/*[IF*/
if(_eruc){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_eruc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r89c_plus_plus_definition(T89* C){
/*[IF*/
if(((/*RF2*/(C)->_rf8_memory/*12*/))!=((void*)(NULL))){
r89c_plus_plus_function_definition(C,(/*RF2*/(C)->_rf8_memory/*12*/));
}
else{
r89c_plus_plus_procedure_definition(C,(/*RF2*/(C)->_rf7_memory/*8*/));
}
/*FI]*/
}
T0*oBC19run_control=NULL;


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


T2 r89parse_args(T89* C,T2 a1,T0* a2,T2 a3,T2 a4){
T2 R=0;
T3 _c=0;
T2 _state=0;
T2 _a=0;
T2 _parenthesis=0;
T2 _i=0;
_a=a3;
_state=40;
r7extend((T7*)(oBC91body),((T3)'\50'));
_i=(a1)+(1);
while (!(((_i)>((/*RF2*/(((T7*)a2))->_count/*4*/)))||((R)>(_i))))
{
_c=/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(_i)-(1)]/*)*/;
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 40:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 41:
R=(_i)+(1);
break;
default:;
r7extend((T7*)(oBC91body),((T3)'\50'));
_state=41;
}
}/*INSPECT]*/
break;
default:;
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 44:
_i=(_i)+(1);
r7extend((T7*)(oBC91body),((T3)'\51'));
_a=(_a)+(1);
r7extend((T7*)(oBC91body),((T3)'a'));
r2append_in(_a,oBC91body);
/*[IF*/
if((_a)<(a4)){
r7extend((T7*)(oBC91body),((T3)'\54'));
}
/*FI]*/
_state=40;
break;
case 40:
r7extend((T7*)(oBC91body),_c);
_parenthesis=(_parenthesis)+(1);
_i=(_i)+(1);
break;
case 41:
/*[IF*/
if((_parenthesis)==(0)){
r7extend((T7*)(oBC91body),((T3)'\51'));
_a=(_a)+(1);
r7extend((T7*)(oBC91body),((T3)'a'));
r2append_in(_a,oBC91body);
R=(_i)+(1);
}
else{
r7extend((T7*)(oBC91body),_c);
_parenthesis=(_parenthesis)-(1);
_i=(_i)+(1);
}
/*FI]*/
break;
default:;
r7extend((T7*)(oBC91body),_c);
_i=(_i)+(1);
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
r7extend((T7*)(oBC91body),((T3)'\51'));
/*[IF*/
if(((R)==(0))||((_a)!=(a4))){
R=r89error_at(C,_i,a2,_state);
}
/*FI]*/
return R;
}
T0*oBC89include_memory=NULL;


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


T2 r89parse_cpp_class(T89* C,T2 a1,T0* a2){
T2 R=0;
T3 _c=0;
T2 _state=0;
T2 _i=0;
_state=30;
_i=a1;
while (!(((_i)>((/*RF2*/(((T7*)a2))->_count/*4*/)))||((_state)>(32))))
{
_c=/*(IRF4.6item*/((/*RF2*/(((T7*)a2))->_storage/*0*/))[(_i)-(1)]/*)*/;
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 30:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 34:
case 40:
case 41:
case 60:
case 62:
_i=r89error_at(C,_i,a2,_state);
break;
default:;
_state=31;
}
}/*INSPECT]*/
break;
case 31:
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_state=32;
break;
case 34:
case 60:
_i=r89parse_include(C,_i,a2);
_state=33;
break;
default:;
r7extend((T7*)(oBC91body),_c);
_i=(_i)+(1);
}
}/*INSPECT]*/
break;
default:;
/*[INSPECT*/
{int z2=_c;
switch(z2){
case 9:
case 10:
case 32:
_i=(_i)+(1);
break;
case 34:
case 60:
_i=r89parse_include(C,_i,a2);
_state=33;
break;
default:;
_i=r89error_at(C,_i,a2,_state);
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
R=_i;
return R;
}


void r89c_plus_plus_procedure_definition(T89* C,T0* a1){
T2 _args_count=0;
T0* _er=NULL;
_er=(/*RF2*/(((T115*)a1))->_base_feature/*28*/);
/*[IF*/
if(!(r100fast_has((T100*)(oBC89external_routine_memory),_er))){
r100add_last((T100*)(oBC89external_routine_memory),_er);
r115c_plus_plus_prototype(((T115*)a1),_er);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC91body))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(((T115*)a1))->_arguments/*32*/))!=((void*)(NULL))){
_args_count=/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(((T115*)a1))->_arguments/*32*/)))->_flat_list/*8*/))))/*)*/;
}
/*FI]*/
r89parse_external(C,_args_count,(/*RF2*/(C)->_external_tag/*4*/),_er);
r7append((T7*)(oBC91body),((T0*)ms89_8260));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC91body);
/*]*/
}
/*FI]*/
}


T2 r89error_at(T89* C,T2 a1,T0* a2,T2 a3){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_rf7_memory/*8*/))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r116start_position((T116*)((/*RF2*/((T115*)((/*RF2*/(C)->_rf7_memory/*8*/)))->_base_feature/*28*/))),&se_tmp0)));
}
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=r119start_position((T119*)((/*RF2*/((T95*)((/*RF2*/(C)->_rf8_memory/*12*/)))->_base_feature/*28*/))),&se_tmp0)));
}
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms89_1810101146);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms89_397949195);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
R=1;
while (!((R)>(a1)))
{
/*[IRF3.6extend*/{T3 b1=((T3)'\137');
r7extend((T7*)(oBC82explanation),b1);
}/*]*/
R=(R)+(1);
}
/*[IRF3.6extend*/{T3 b1=((T3)'\136');
r7extend((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms89_1629123832);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a3);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6extend*/{T3 b1=((T3)'\51');
r7extend((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
R=((/*RF2*/(((T7*)a2))->_count/*4*/))+(1);
return R;
}


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


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


void r387standard_c_define_procedure(T0* a1,T0* a2,T0* a3){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC91body))))->_count)=(0);
/*]*/
r387wrapped_external_call((/*RF2*/(((T115*)a1))->_base_feature/*28*/),r115arg_count(((T115*)a1)));
r115c_define_with_body(((T115*)a1),oBC91body);
}
/*FI]*/
}


void r387c_mapping_external(T0* a1,T2 a2){
T6 _tcbd=0;
T6 _eruc=0;
_eruc=/*(IRF4.2use_current*/(1)/*)*/;
/*[IF*/
if(!(_eruc)){
_tcbd=r83target_cannot_be_dropped((T83*)(oBC19cpp));
/*[IF*/
if(_tcbd){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),/*SSFRF4*//*X97external_name*/r116external_name(((T116*)a1)));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if(_eruc){
r83put_target_as_value((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if((a2)>(0)){
/*[IF*/
if(_eruc){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83put_arguments((T83*)(oBC19cpp));
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IF*/
if((!(_eruc))&&(_tcbd)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


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


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


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


void r338make(T338* C,T0* a1,T0* a2){
(/*SFN*/C->_lower)=a1;
(/*SFN*/C->_upper)=a2;
}


T0* r338to_runnable_character(T338* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_v=X126to_runnable((/*RF2*/(C)->_lower/*8*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_character(X126result_type(_v)))){
(/*SFN*/C->_lower)=_v;
(/*SFN*/C->_lower_value)=X126to_integer_or_error((/*RF2*/(C)->_lower/*8*/));
}
else{
{T104 se_tmp0;
r338error((*(se_tmp0=X126start_position((/*RF2*/(C)->_lower/*8*/)),&se_tmp0)),((T0*)ms20_328704871));
}
}
/*FI]*/
_v=X126to_runnable((/*RF2*/(C)->_upper/*12*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_character(X126result_type(_v)))){
(/*SFN*/C->_upper)=_v;
(/*SFN*/C->_upper_value)=X126to_integer_or_error((/*RF2*/(C)->_upper/*12*/));
}
else{
{T104 se_tmp0;
r338error((*(se_tmp0=X126start_position((/*RF2*/(C)->_upper/*12*/)),&se_tmp0)),((T0*)ms20_328704871));
}
}
/*FI]*/
r326add_when_item_2((T326*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
R=((T0*)(C));
}
else{
{T338*n=((T338*)se_malloc(sizeof(*n))/*24*/);
*n=M338;
r338make(n,(/*RF2*/(C)->_lower/*8*/),(/*RF2*/(C)->_upper/*12*/));
R=((T0*)n);
}
R=r338to_runnable_character(((T338*)R),a1);
}
/*FI]*/
return R;
}


T0* r338to_runnable_integer(T338* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_v=X126to_runnable((/*RF2*/(C)->_lower/*8*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_integer(X126result_type(_v)))){
(/*SFN*/C->_lower)=_v;
(/*SFN*/C->_lower_value)=X126to_integer_or_error((/*RF2*/(C)->_lower/*8*/));
}
else{
{T104 se_tmp0;
r338error((*(se_tmp0=X126start_position((/*RF2*/(C)->_lower/*8*/)),&se_tmp0)),((T0*)ms20_1883968684));
}
}
/*FI]*/
_v=X126to_runnable((/*RF2*/(C)->_upper/*12*/),_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_integer(X126result_type(_v)))){
(/*SFN*/C->_upper)=_v;
(/*SFN*/C->_upper_value)=X126to_integer_or_error((/*RF2*/(C)->_upper/*12*/));
}
else{
{T104 se_tmp0;
r338error((*(se_tmp0=X126start_position((/*RF2*/(C)->_upper/*12*/)),&se_tmp0)),((T0*)ms20_1883968684));
}
}
/*FI]*/
r326add_when_item_2((T326*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
R=((T0*)(C));
}
else{
{T338*n=((T338*)se_malloc(sizeof(*n))/*24*/);
*n=M338;
r338make(n,(/*RF2*/(C)->_lower/*8*/),(/*RF2*/(C)->_upper/*12*/));
R=((T0*)n);
}
R=r338to_runnable_integer(((T338*)R),a1);
}
/*FI]*/
return R;
}


T0* r338twin(T338* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T338*)R)=*C;
return R;
}


T104 r338start_position(T338* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_lower/*8*/)),&se_tmp0));
}
return R;
}


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


T0* r337to_runnable_character(T337* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_e=X126to_runnable((/*RF2*/(C)->_expression/*8*/),_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X62is_character(X126result_type(_e)))){
(/*SFN*/C->_expression)=_e;
(/*SFN*/C->_expression_value)=X126to_integer_or_error((/*RF2*/(C)->_expression/*8*/));
r326add_when_item_1((T326*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
}
else{
{T104 se_tmp0;
r337error((*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*8*/)),&se_tmp0)),((T0*)ms20_328704871));
}
}
/*FI]*/
R=((T0*)(C));
}
else{
{T337*n=((T337*)se_malloc(sizeof(*n))/*16*/);
*n=M337;
/*[IRF3.3make*/((((T337*)(n)))->_expression)=((/*RF2*/(C)->_expression/*8*/));
/*]*/
R=((T0*)n);
}
R=r337to_runnable_character(((T337*)R),a1);
}
/*FI]*/
return R;
}


T0* r337to_runnable_integer(T337* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
T0* _ct=NULL;
/*[IF*/
if(((/*RF2*/(C)->_e_when/*4*/))==((void*)(NULL))){
(/*SFN*/C->_e_when)=a1;
_ct=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)(/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/))->_current_type/*8*/);
_e=X126to_runnable((/*RF2*/(C)->_expression/*8*/),_ct);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(X62is_integer(X126result_type(_e)))){
(/*SFN*/C->_expression)=_e;
(/*SFN*/C->_expression_value)=X126to_integer_or_error((/*RF2*/(C)->_expression/*8*/));
r326add_when_item_1((T326*)((/*RF2*/(C)->_e_when/*4*/)),(T0*)C);
}
else{
{T104 se_tmp0;
r337error((*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*8*/)),&se_tmp0)),((T0*)ms20_1883968684));
}
}
/*FI]*/
R=((T0*)(C));
}
else{
{T337*n=((T337*)se_malloc(sizeof(*n))/*16*/);
*n=M337;
/*[IRF3.3make*/((((T337*)(n)))->_expression)=((/*RF2*/(C)->_expression/*8*/));
/*]*/
R=((T0*)n);
}
R=r337to_runnable_integer(((T337*)R),a1);
}
/*FI]*/
return R;
}


T0* r337twin(T337* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T337*)R)=*C;
return R;
}


T104 r337start_position(T337* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*8*/)),&se_tmp0));
}
return R;
}


void r179check_expanded_with(T179* C,T0* a1){
T2 _lower=0;
/*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))+(1)/*)*/)>(1)){
r82add_type(a1,((T0*)ms20_1010242914));
_lower=0;
{T104 se_tmp0;
r82add_position((/*RF2*/((T180*)(/*(IRF4.6item*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_lower]/*)*/))->_start_position/*0*/));
}
_lower=(_lower)+(1);
{T104 se_tmp0;
r82add_position((/*RF2*/((T180*)(/*(IRF4.6item*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_lower]/*)*/))->_start_position/*0*/));
}
/*[IRF3.2fatal_error_vtec_2*/r179fatal_error(((T0*)ms19_1445869078));
/*]*/
}
/*FI]*/
r180check_expanded_with((T180*)(/*(IRF4.6first*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/),a1);
}


void r179make(T179* C,T0* a1){
{T181*n=((T181*)se_malloc(sizeof(*n))/*12*/);
*n=M181;
r181with_capacity(n,4);
(/*SFN*/C->_list)=((T0*)n);
}
r181add_last((T181*)((/*RF2*/(C)->_list/*0*/)),a1);
}


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


T0* r179expanded_initializer(T179* C,T0* a1){
T0* R=NULL;
R=r180expanded_initializer((T180*)(/*(IRF4.6first*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/),a1);
return R;
}


T0* r179root_procedure_name(T179* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=(/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!(((_i)<(0))||((R)!=((void*)(NULL)))))
{
R=r180root_procedure_name((T180*)(/*(IRF4.6item*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),a1);
_i=(_i)-(1);
}
return R;
}


T0* r179get_clause(T179* C,T0* a1){
T0* R=NULL;
T2 _i=0;
_i=0;
while (!(((_i)>((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/)))||(r180has((T180*)(/*(IRF4.6item*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/),a1))))
{
_i=(_i)+(1);
}
/*[IF*/
if((_i)<=((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))){
R=/*(IRF4.6item*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[_i]/*)*/;
}
/*FI]*/
return R;
}


T104 r179start_position(T179* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(/*RF2*/((T180*)(/*(IRF4.6first*/((/*RF2*/((T181*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/))->_start_position/*0*/);
}
return R;
}


void r312compile_to_c(T312* C){
/*[IF*/
if(r57debug_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_compound/*20*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_compound/*20*/)));
}
/*FI]*/
}
/*FI]*/
}


void r312make(T312* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_list)=a2;
(/*SFN*/C->_compound)=a3;
}


void r312afd_check(T312* C){
/*[IF*/
if(r57debug_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_compound/*20*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_compound/*20*/)));
}
/*FI]*/
}
/*FI]*/
}


T6 r312use_current(T312* C){
T6 R=0;
/*[IF*/
if(r57debug_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_compound/*20*/))!=((void*)(NULL))){
R=r159use_current((T159*)((/*RF2*/(C)->_compound/*20*/)));
}
/*FI]*/
}
/*FI]*/
return R;
}


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


T0* r312to_runnable(T312* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
/*[IF*/
if(r57debug_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_compound/*20*/))!=((void*)(NULL))){
(/*SFN*/C->_compound)=r159to_runnable((T159*)((/*RF2*/(C)->_compound/*20*/)),a1);
}
/*FI]*/
}
/*FI]*/
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T312*n=((T312*)se_malloc(sizeof(*n))/*24*/);
*n=M312;
r312make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_list/*16*/),(/*RF2*/(C)->_compound/*20*/));
R=((T0*)n);
}
}
R=r312to_runnable(((T312*)R),a1);
}
/*FI]*/
return R;
}


void r247run_feature_match(T247* C,T0* a1){
r247run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*12*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r247runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X126to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
r247fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r247call_proc_call_stupid_switch(T247* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*12*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245stupid_switch*/r245stupid_switch((T245*)((/*RF2*/(C)->_arguments/*12*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X126is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r59same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X96stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X126stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r247is_static(T247* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r63count(((T63*)_running)))==(1))){
_rf=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/(((T63*)_running))->_storage/*4*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X96is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


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


void r247run_feature_has_result(T247* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r247fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r247stupid_switch(T247* C,T0* a1){
T6 R=0;
R=r247call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r247result_type(C)));
}
/*FI]*/
return R;
}


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


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


void r247to_integer_error(T247* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r247start_position(C),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}


T0* r247arg1(T247* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*12*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r247assertion_check(T247* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T104 se_tmp0;
X96vape_check_from((/*RF2*/(C)->_run_feature/*16*/),(*(se_tmp0=r247start_position(C),&se_tmp0)));
}
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X126assertion_check(r247arg1(C),a1);
}


T0* r247result_type(T247* C){
T0* R=NULL;
T0* _tla=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X62is_like_current(R)){
R=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X126result_type(r247arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r247afd_check(T247* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X62run_class(X126result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r63count(((T63*)_running)))>(1)){
r432update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


T6 r247use_current(T247* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X126use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T2 r247static_value(T247* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
_running=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r63count(((T63*)_running)))==(1))){
_rf=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/(((T63*)_running))->_storage/*4*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X96is_static(_rf)){
R=X96static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r247c_declare_for_old(T247* C){
X126c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245c_declare_for_old*/r245c_declare_for_old((T245*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


void r247compile_to_c_old(T247* C){
X126compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245compile_to_c_old*/r245compile_to_c_old((T245*)((/*RF2*/(C)->_arguments/*12*/)));
}
/*FI]*/
}


T0* r247runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X245to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X245start_position(a1),&se_tmp0)));
}
r247fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r247mapping_c_target(T247* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r247result_type(C));
/*[IF*/
if(X62is_reference(_actual_type)){
/*[IF*/
if(X62is_reference(a1)){
X62mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T247* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T247* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T247* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T247* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T247* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r247run_feature_for(T247* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X126result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X62run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
R=r61run_feature_for(((T61*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms168_608361995);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T2 r247to_integer_or_error(T247* C){
T2 R=0;
r247to_integer_error(C);
return R;
}


T0* r247add_comment(T247* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r247to_runnable(T247* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r247runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r247runnable_args((/*RF2*/(C)->_arguments/*12*/),a1);
_rf=r247run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r247run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*12*/))))){
R=((T0*)(C));
}
else{
{T247*n=((T247*)se_malloc(sizeof(*n))/*20*/);
*n=M247;
r247with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


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


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


T104 r247start_position(T247* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0));
}
return R;
}


void r246run_feature_match(T246* C){
r246run_feature_has_result(C);
/*[IF*/
if((X96arguments((/*RF2*/(C)->_run_feature/*12*/)))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
r246fatal_error(((T0*)ms238_1369876739));
}
/*FI]*/
}


T6 r246can_be_dropped(T246* C){
T6 R=0;
/*[IF*/
if(X126can_be_dropped((/*RF2*/(C)->_target/*4*/))){
R=X96can_be_dropped((/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
return R;
}


T0* r246runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X126to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
r246fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r246call_proc_call_stupid_switch(T246* C,T0* a1){
T6 R=0;
/*[IF*/
{/*AT*/R=1;
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X126is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r59same_base_feature((/*RF2*/(C)->_run_feature/*12*/),a1)){
R=(X96stupid_switch((/*RF2*/(C)->_run_feature/*12*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X126stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r246is_static(T246* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _tt=NULL;
T0* _name=NULL;
_tt=X126result_type((/*RF2*/(C)->_target/*4*/));
_name=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_name/*16*/));
/*[IF*/
if((((T0*)ms21_378799862))==((void*)(_name))){
R=1;
}
 else if((((T0*)ms21_1744612358))==((void*)(_name))){
R=1;
}
 else if(((((T0*)ms21_79341))==((void*)(_name)))&&(X62is_bit(_tt))){
R=1;
}
else{
_running=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r63count(((T63*)_running)))==(1))){
_rf=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/(((T63*)_running))->_storage/*4*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*12*/));
/*[IF*/
if(X96is_static(_rf)){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r246with(T246* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_run_feature)=a3;
r246run_feature_match(C);
}


void r246run_feature_has_result(T246* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*12*/)))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r246fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


void r246compile_to_c(T246* C){
T0* _n=NULL;
_n=X117to_string((/*RF2*/(C)->_feature_name/*8*/));
/*[IF*/
if((((T0*)ms21_378799862))==((void*)(_n))){
/*[IF*/
if(X62is_expanded(X62run_type(X126result_type((/*RF2*/(C)->_target/*4*/))))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'1');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if((((T0*)ms21_1744612358))==((void*)(_n))){
/*[IF*/
if(X62is_basic_eiffel_expanded(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'1');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.6call_proc_call_c2c*/{T246* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r246stupid_switch(T246* C,T0* a1){
T6 R=0;
R=r246call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r246result_type(C)));
}
/*FI]*/
return R;
}


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


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


void r246to_integer_error(T246* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r246start_position(C),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}


void r246assertion_check(T246* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T104 se_tmp0;
X96vape_check_from((/*RF2*/(C)->_run_feature/*12*/),(*(se_tmp0=r246start_position(C),&se_tmp0)));
}
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
}


T0* r246result_type(T246* C){
T0* R=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*12*/));
/*[IF*/
if(X62is_like_current(R)){
R=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_current_type/*8*/);
}
/*FI]*/
return R;
}


void r246afd_check(T246* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))!=((void*)(NULL))){
_rc=X62run_class(X126result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r63count(((T63*)_running)))>(1)){
r432update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T6 r246use_current(T246* C){
T6 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(R){
}
 else if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96use_current((/*RF2*/(C)->_run_feature/*12*/));
}
else{
R=X126use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T2 r246static_value(T246* C){
T2 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _tb=NULL;
T0* _tt=NULL;
T0* _name=NULL;
_tt=X126result_type((/*RF2*/(C)->_target/*4*/));
_name=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_name/*16*/));
/*[IF*/
if((((T0*)ms21_378799862))==((void*)(_name))){
/*[IF*/
if(X62is_expanded(_tt)){
R=1;
}
/*FI]*/
}
 else if((((T0*)ms21_1744612358))==((void*)(_name))){
/*[IF*/
if(X62is_basic_eiffel_expanded(_tt)){
R=1;
}
/*FI]*/
}
 else if(((((T0*)ms21_79341))==((void*)(_name)))&&(X62is_bit(_tt))){
_tb=_tt;
if(NULL!=(_tb)){
switch(((T0*)_tb)->id){
case 372:case 373:
break;
default:
_tb=NULL;
}
}R=X136nb(_tb);
}
else{
_running=(/*RF2*/((T60*)(/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*12*/)))->_run_class/*12*/)))->_running/*21*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r63count(((T63*)_running)))==(1))){
_rf=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/(((T63*)_running))->_storage/*4*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*12*/));
/*[IF*/
if(X96is_static(_rf)){
R=X96static_value_mem(_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r246c_declare_for_old(T246* C){
X126c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r246compile_to_c_old(T246* C){
X126compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r246mapping_c_target(T246* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r246result_type(C));
/*[IF*/
if(X62is_reference(_actual_type)){
/*[IF*/
if(X62is_reference(a1)){
X62mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r246compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r246compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
r246compile_to_c(C);
}
else{
/*[IF*/
if(X62need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r246compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r246compile_to_c(C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r246run_feature_for(T246* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X126result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X62run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
R=r61run_feature_for(((T61*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms168_608361995);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T2 r246to_integer_or_error(T246* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(/*RF2*/(C)->_run_feature/*12*/);
if(NULL!=(_rf1)){
switch(((T0*)_rf1)->id){
case 437:
break;
default:
_rf1=NULL;
}
}/*[IF*/
if((_rf1)==((void*)(NULL))){
r246to_integer_error(C);
}
else{
R=X126to_integer_or_error((/*RF2*/(((T437*)_rf1))->_value/*32*/));
}
/*FI]*/
return R;
}


T6 r246is_pre_computable(T246* C){
T6 R=0;
/*[IF*/
if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96is_pre_computable((/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
return R;
}


T0* r246add_comment(T246* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r246to_runnable(T246* C,T0* a1){
T0* R=NULL;
T0* _path=NULL;
T2 _line=0;
T0* _rf=NULL;
T0* _t=NULL;
{T104 se_tmp0;
_line=r104line(&((*(se_tmp0=X126start_position((/*RF2*/(C)->_target/*4*/)),&se_tmp0))));
}
{T104 se_tmp0;
_path=r104path(&((*(se_tmp0=X126start_position((/*RF2*/(C)->_target/*4*/)),&se_tmp0))));
}
_t=r246runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_rf=r246run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_run_feature)=_rf;
r246run_feature_match(C);
R=((T0*)(C));
}
 else if((_t)==((void*)((/*RF2*/(C)->_target/*4*/)))){
R=((T0*)(C));
}
else{
{T246*n=((T246*)se_malloc(sizeof(*n))/*16*/);
*n=M246;
r246with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_rf);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r246collect_c_tmp(T246* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*12*/));
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


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


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


T104 r246start_position(T246* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0));
}
return R;
}


void r324compile_to_c(T324* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*SSPRF3*//*X96c_assertion_flag*/r154c_assertion_flag((T154*)((/*RF2*/(C)->_run_feature/*12*/)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms324_9155));
/*]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms324_1888091524));
/*]*/
}


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


T0* r324to_runnable(T324* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
_rf=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_run_feature)=_rf;
R=((T0*)(C));
}
 else if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(_rf))){
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T324*n=((T324*)se_malloc(sizeof(*n))/*16*/);
*n=M324;
/*[IRF3.3make*/((((T324*)(n)))->_start_position)=((/*RF2*/(C)->_start_position/*4*/));
/*]*/
R=((T0*)n);
}
}
R=r324to_runnable(((T324*)R),a1);
}
/*FI]*/
return R;
}


void r180check_expanded_with(T180* C,T0* a1){
T0* _rc=NULL;
T0* _rf3=NULL;
T0* _rf=NULL;
/*[IF*/
if(((/*RF2*/(C)->_procedure_list/*16*/))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
r180fatal_error(((T0*)ms180_314294460));
}
/*FI]*/
/*[IF*/
if((r118count((T118*)((/*RF2*/(C)->_procedure_list/*16*/))))>(1)){
r82add_type(a1,((T0*)ms20_1010242914));
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
/*[IRF3.2fatal_error_vtec_2*/r180fatal_error(((T0*)ms19_1445869078));
/*]*/
}
/*FI]*/
_rc=X62run_class(a1);
_rf=r60get_feature(((T60*)_rc),r118item((T118*)((/*RF2*/(C)->_procedure_list/*16*/)),1));
/*[IF*/
if((_rf)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms180_1144475034);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type(a1,((T0*)ms180_580671671));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
_rf3=_rf;
if(NULL!=(_rf3)){
switch(((T0*)_rf3)->id){
case 154:
break;
default:
_rf3=NULL;
}
}/*[IF*/
if((_rf3)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(_rf),&se_tmp0)));
}
r180fatal_error(((T0*)ms180_1742784741));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(((T154*)_rf3))->_arguments/*32*/))!=((void*)(NULL))){
r82add_type(a1,((T0*)ms20_1010242914));
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
{T104 se_tmp0;
r82add_position(/*(IRF4.6start_position*/(*(se_tmp0=r150start_position(((T150*)((/*RF2*/(((T154*)_rf3))->_base_feature/*28*/)))),&se_tmp0))/*)*/);
}
/*[IRF3.6append*/{T0* b1=((T0*)ms180_753568822);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.2fatal_error_vtec_2*/r180fatal_error(((T0*)ms19_1445869078));
/*]*/
}
/*FI]*/
}


void r180make(T180* C,T104 a1,T0* a2,T0* a3,T0* a4){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_clients)=a2;
(/*SFN*/C->_comment)=a3;
(/*SFN*/C->_procedure_list)=a4;
}


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


T6 r180has(T180* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_procedure_list/*16*/))!=((void*)(NULL))){
R=r118has((T118*)((/*RF2*/(C)->_procedure_list/*16*/)),a1);
}
/*FI]*/
return R;
}


T0* r180expanded_initializer(T180* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_procedure_list/*16*/))!=((void*)(NULL))){
R=r60get_feature((T60*)(X62run_class(a1)),r118item((T118*)((/*RF2*/(C)->_procedure_list/*16*/)),1));
if(NULL!=(R)){
switch(((T0*)R)->id){
case 154:
break;
default:
R=NULL;
}
}}
/*FI]*/
return R;
}


T0* r180root_procedure_name(T180* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_procedure_list/*16*/))==((void*)(NULL))){
}
else{
R=r118root_procedure_name((T118*)((/*RF2*/(C)->_procedure_list/*16*/)),a1);
}
/*FI]*/
return R;
}


void r227run_feature_match(T227* C,T0* a1){
r227run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r227runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X126to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
r227fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r227call_proc_call_stupid_switch(T227* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=/*SSFRF4*//*X245stupid_switch*/r245stupid_switch((T245*)((/*RF2*/(C)->_arguments/*8*/)),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X126is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r59same_base_feature((/*RF2*/(C)->_run_feature/*16*/),a1)){
R=(X96stupid_switch((/*RF2*/(C)->_run_feature/*16*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X126stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r227is_static(T227* C){
T6 R=0;
/*[IF*/
if(X62is_boolean(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if(X126is_static((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if((X126static_value((/*RF2*/(C)->_target/*4*/)))==(0)){
R=1;
}
else{
R=X126is_static(r227arg1(C));
/*[IF*/
if(R){
(/*SFN*/C->_static_value_mem)=X126static_value(r227arg1(C));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r227operator(void){
T0* R=NULL;
R=((T0*)ms21_9647090);
return R;
}


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


void r227run_feature_has_result(T227* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*16*/)))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*16*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
r227fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r227stupid_switch(T227* C,T0* a1){
T6 R=0;
R=r227call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r227result_type(C)));
}
/*FI]*/
return R;
}


void r227make(T227* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r227operator(),a2);
(/*SFN*/C->_feature_name)=((T0*)n);
}
{T245*n=((T245*)se_malloc(sizeof(*n))/*16*/);
*n=M245;
/*[IRF3.3make_1*/((((T245*)(n)))->_first_one)=(a3);
/*]*/
(/*SFN*/C->_arguments)=((T0*)n);
}
}


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


void r227to_integer_error(T227* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position(/*(IRF4.6start_position*/(/*RF2*/(((T235*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
r82print_as_error((T82*)(oBC19eh));
}


T0* r227arg1(T227* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r227assertion_check(T227* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
{T104 se_tmp0;
X96vape_check_from((/*RF2*/(C)->_run_feature/*16*/),/*(IRF4.6start_position*/(/*RF2*/(((T235*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
}
/*FI]*/
X126assertion_check((/*RF2*/(C)->_target/*4*/),a1);
X126assertion_check(r227arg1(C),a1);
}


T0* r227result_type(T227* C){
T0* R=NULL;
T0* _tla=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X62is_like_current(R)){
R=/*SSWARF2*//*X96current_type*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_current_type/*8*/);
}
else{
_tla=R;
if(NULL!=(_tla)){
switch(((T0*)_tla)->id){
case 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X126result_type(r227arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r227afd_check(T227* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=X62run_class(X126result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r63count(((T63*)_running)))>(1)){
r432update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*16*/));
}
/*FI]*/
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T6 r227use_current(T227* C){
T6 R=0;
/*[IF*/
{/*AT*/R=/*SSFRF4*//*X245use_current*/r245use_current((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X126is_current((/*RF2*/(C)->_target/*4*/))){
R=X96use_current((/*RF2*/(C)->_run_feature/*16*/));
}
else{
R=X126use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


void r227c_declare_for_old(T227* C){
X126c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245c_declare_for_old*/r245c_declare_for_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


void r227compile_to_c_old(T227* C){
X126compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
{/*AT*//*SSPRF3*//*X245compile_to_c_old*/r245compile_to_c_old((T245*)((/*RF2*/(C)->_arguments/*8*/)));
}
/*FI]*/
}


T0* r227runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=X245to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X245start_position(a1),&se_tmp0)));
}
r227fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r227mapping_c_target(T227* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r227result_type(C));
/*[IF*/
if(X62is_reference(_actual_type)){
/*[IF*/
if(X62is_reference(a1)){
X62mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T227* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T227* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T227* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X62need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T227* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T227* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r227run_feature_for(T227* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X126result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X62run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=(/*RF2*/(((T60*)_rc))->_base_class/*8*/);
R=r61run_feature_for(((T61*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T235*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms168_608361995);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T2 r227to_integer_or_error(T227* C){
T2 R=0;
r227to_integer_error(C);
return R;
}


T0* r227add_comment(T227* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r227to_runnable(T227* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r227runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r227runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r227arg1(C));
/*[IF*/
if(X62is_real(_argument_type)){
/*[IF*/
if(X62is_integer(_target_type)){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X62is_double(_argument_type)){
/*[IF*/
if((X62is_integer(_target_type))||(X62is_real(_target_type))){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r227run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r227run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T227*n=((T227*)se_malloc(sizeof(*n))/*24*/);
*n=M227;
r227with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


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


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


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


void r266compile_to_c(T266* C){
r83push_precursor((T83*)(oBC19cpp),(/*RF2*/(C)->_run_feature/*24*/),(/*RF2*/(C)->_arguments/*20*/));
X96mapping_c((/*RF2*/(C)->_run_feature/*24*/));
r83pop((T83*)(oBC19cpp));
}


void r266make(T266* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_parent)=a2;
(/*SFN*/C->_arguments)=a3;
}


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


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


T0* r266result_type(T266* C){
T0* R=NULL;
R=X96result_type((/*RF2*/(C)->_run_feature/*24*/));
return R;
}


T0* r266super_feature(T266* C,T0* a1){
T0* R=NULL;
T0* _pl=NULL;
T0* _wbc=NULL;
T0* _e_feature=NULL;
_e_feature=/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)a1))->_base_feature/*28*/);
_wbc=/*SSWARF2*//*X99base_class*/(/*RF2*/(((T293*)_e_feature))->_base_class/*4*/);
_pl=(/*RF2*/(((T61*)_wbc))->_parent_list/*34*/);
/*[IF*/
if((_pl)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r266fatal_error(((T0*)ms267_1197649626));
}
else{
R=r72precursor_for(((T72*)_pl),(T0*)C,a1);
}
/*FI]*/
return R;
}


void r266afd_check(T266* C){
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X245afd_check*/r245afd_check((T245*)((/*RF2*/(C)->_arguments/*20*/)));
}
/*FI]*/
}


void r266prepare_arguments(T266* C,T0* a1){
T0* _a=NULL;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
_a=X245to_runnable((/*RF2*/(C)->_arguments/*20*/),a1);
/*[IF*/
if((_a)==((void*)(NULL))){
{T104 se_tmp0;
r266error((*(se_tmp0=X245start_position((/*RF2*/(C)->_arguments/*20*/)),&se_tmp0)),((T0*)ms20_1981509924));
}
}
else{
(/*SFN*/C->_arguments)=_a;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
X245match_with((/*RF2*/(C)->_arguments/*20*/),(/*RF2*/(C)->_run_feature/*24*/),a1);
}
/*FI]*/
}
 else if((X96arguments((/*RF2*/(C)->_run_feature/*24*/)))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*24*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r266fatal_error(((T0*)ms267_155280342));
}
/*FI]*/
}


T0* r266precursor_name(T0* a1,T0* a2){
T0* R=NULL;
{T518*n=((T518*)se_malloc(sizeof(*n))/*12*/);
*n=M518;
r518refer_to(n,(/*RF2*/((T61*)(/*SSWARF2*//*X99base_class*/(/*RF2*/(((T293*)a2))->_base_class/*4*/)))->_id/*0*/),a1);
R=((T0*)n);
}
return R;
}


void r266c_declare_for_old(T266* C){
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X245c_declare_for_old*/r245c_declare_for_old((T245*)((/*RF2*/(C)->_arguments/*20*/)));
}
/*FI]*/
}


void r266compile_to_c_old(T266* C){
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X245compile_to_c_old*/r245compile_to_c_old((T245*)((/*RF2*/(C)->_arguments/*20*/)));
}
/*FI]*/
}


T2 r266to_integer_or_error(T266* C){
T2 R=0;
r266to_integer_error(C);
return R;
}


T0* r266add_comment(T266* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T323*n=((T323*)se_malloc(sizeof(*n))/*12*/);
*n=M323;
r323make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r266to_runnable(T266* C,T0* a1){
T0* R=NULL;
T0* _pn=NULL;
T0* _super=NULL;
T0* _wrf=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*16*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
R=((T0*)(C));
_wrf=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
/*[IF*/
if((X96result_type(_wrf))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r266fatal_error(((T0*)ms266_167445550));
}
/*FI]*/
_super=r266super_feature(C,_wrf);
_pn=r266precursor_name(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)_wrf))->_name/*16*/),_super);
(/*SFN*/C->_run_feature)=r60at((T60*)(X62run_class(a1)),_pn);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*24*/))==((void*)(NULL))){
{T519*n=((T519*)se_malloc(sizeof(*n))/*60*/);
*n=M519;
r519make(n,a1,_pn,_super);
(/*SFN*/C->_run_feature)=((T0*)n);
}
}
/*FI]*/
r266prepare_arguments(C,a1);
}
else{
{T104 se_tmp0;
{T266*n=((T266*)se_malloc(sizeof(*n))/*28*/);
*n=M266;
r266make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_parent/*12*/),(/*RF2*/(C)->_arguments/*20*/));
R=((T0*)n);
}
}
R=r266to_runnable(((T266*)R),a1);
}
/*FI]*/
return R;
}


void r266collect_c_tmp(T266* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*24*/))!=((void*)(NULL))){
X96collect_c_tmp((/*RF2*/(C)->_run_feature/*24*/));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X245collect_c_tmp*/r245collect_c_tmp((T245*)((/*RF2*/(C)->_arguments/*20*/)));
}
/*FI]*/
}


T0* r266static_result_base_class(T266* C){
T0* R=NULL;
T0* _bcn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*24*/))!=((void*)(NULL))){
_e_feature=/*SSWA2*//*X96base_feature*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*24*/)))->_base_feature/*28*/);
_rt=X99result_type(_e_feature);
_bcn=X62static_base_class_name(_rt);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r77base_class(((T77*)_bcn));
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC59run_class_dictionary=NULL;


T0* r59load_class(T59* C,T0* a1){
T0* R=NULL;
T0* _class_name=NULL;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(a1);
/*]*/
_class_name=((T0*)n);
}
/*[IF*/
if(r59parser_buffer_for(C,a1)){
R=r37analyse_class((T37*)(oBC19eiffel_parser),_class_name);
/*[IF*/
if((R)==((void*)(NULL))){
r59fatal_error(((T0*)ms59_1941861967));
}
/*FI]*/
}
else{
r59fatal_error(((T0*)ms59_1876627592));
}
/*FI]*/
return R;
}
T0*oBC59rename_dictionary=NULL;
int fBC59rename_dictionary=0;


T0* r59rename_dictionary(T59* C){
if(fBC59rename_dictionary==0){fBC59rename_dictionary=1;{
T0* _short_name=NULL;
T0* _full_name=NULL;
T2 _i=0;
{T30*n=((T30*)se_malloc(sizeof(*n))/*20*/);
*n=M30;
oBC59rename_dictionary=((T0*)n);
/*[IRF3.4make*/r30with_capacity(n,193);
/*]*/
}
_i=1;
while (!((_i)>((/*RF2*/((T52*)(r59loading_path()))->_upper/*12*/))))
{
r7copy((T7*)(oBC19tmp_path),r52item((T52*)(r59loading_path()),_i));
r7append((T7*)(oBC19tmp_path),((T0*)ms59_54526326));
r38sfr_connect((T38*)(oBC19echo),oBC19tmp_file_read,oBC19tmp_path);
/*[IF*/
if(/*(IRF4.7is_connected*/((/*RF2*/((T43*)(oBC19tmp_file_read))->_path/*1*/))!=(NULL)/*)*/){
while (!(r43end_of_input((T43*)(oBC19tmp_file_read))))
{
r43read_word((T43*)(oBC19tmp_file_read));
_full_name=r7twin((T7*)(oBC44last_string));
r43read_word((T43*)(oBC19tmp_file_read));
_short_name=r7twin((T7*)(oBC44last_string));
r7prepend(((T7*)_short_name),r52item((T52*)(r59loading_path()),_i));
/*[IF*/
if(r30has(((T30*)oBC59rename_dictionary),_full_name)){
r38w_put_string(((T0*)ms59_1318242324));
r38w_put_string(_full_name);
r38w_put_string(((T0*)ms59_1289877087));
r38w_put_string(_short_name);
r38w_put_string(((T0*)ms59_3541509));
r38w_put_string(r30at(((T30*)oBC59rename_dictionary),_full_name));
r38w_put_string(((T0*)ms59_240));
exit(1);
}
/*FI]*/
r30put(((T30*)oBC59rename_dictionary),_short_name,_full_name);
r43skip_separators((T43*)(oBC19tmp_file_read));
}
r43disconnect((T43*)(oBC19tmp_file_read));
}
/*FI]*/
_i=(_i)+(1);
}
}}
return oBC59rename_dictionary;
}
T0*oBC19tmp_file_read=NULL;


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


void r59register_sys_runtime_basic_of(T0* a1){
T0* _package=NULL;
_package=((T0*)ms59_1950430678);
r7copy(((T7*)_package),a1);
while (!((r7nb_occurrences(((T7*)_package),((T3)'\137')))==(1)))
{
r7remove_last(((T7*)_package),1);
}
/*[IF*/
if(!(r120has((T120*)(oBC59basic_sys_runtime),_package))){
_package=r7twin(((T7*)_package));
r120add_last((T120*)(oBC59basic_sys_runtime),_package);
}
/*FI]*/
}
T0*oBC59registered_for_c_define=NULL;
T0*oBC59run_class_map=NULL;


T6 r59is_used(T0* a1){
T6 R=0;
R=r79has((T79*)(oBC59base_class_dictionary),a1);
return R;
}
T0*oBC19manifest_string_pool=NULL;
T0*oBC59basic_sys_runtime=NULL;
T0*oBC19system_tools=NULL;
int fBC19system_tools=0;


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


void r59push(T0* a1){
X155add_last(oBC59run_feature_stack,a1);
}
T0*oBC59c_code=NULL;


void r59compile_to_c(T59* C){
T6 _gc_flag=0;
T2 _i=0;
T2 _run_count=0;
T0* _rc=NULL;
T0* _procedure=NULL;
T0* _root_class=NULL;
_root_class=(/*RF2*/((T57*)(oBC19run_control))->_root_class/*5*/);
_procedure=r57root_procedure((T57*)(oBC19run_control));
r59get_started(C,_root_class,_procedure);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
r83get_started((T83*)(oBC19cpp));
r83swap_on_h((T83*)(oBC19cpp));
_gc_flag=!((/*RF2*/((T444*)(oBC19gc_handler))->_is_off/*0*/));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms59_375871741));
/*]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
/*[IF*/
if((/*RF2*/(((T60*)_rc))->_at_run_time/*20*/)){
_run_count=(_run_count)+(1);
}
/*FI]*/
r60demangling(((T60*)_rc));
_i=(_i)-(1);
}
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms59_1332826858));
/*]*/
r83put_comment_line((T83*)(oBC19cpp),((T0*)ms59_1490742497));
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60c_header_pass1(((T60*)_rc));
_i=(_i)-(1);
}
r83put_comment_line((T83*)(oBC19cpp),((T0*)ms59_1490742472));
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60c_header_pass2(((T60*)_rc));
_i=(_i)-(1);
}
r83put_comment_line((T83*)(oBC19cpp),((T0*)ms59_1490742447));
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60c_header_pass3(((T60*)_rc));
_i=(_i)-(1);
}
r83put_comment_line((T83*)(oBC19cpp),((T0*)ms59_1490742422));
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
r60c_header_pass4(((T60*)_rc));
_i=(_i)-(1);
}
/*[IF*/
if(!(r69has((T69*)(oBC59run_class_dictionary),((T0*)ms21_1498845794)))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms59_1341494671));
/*]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r83put_c_function((T83*)(oBC19cpp),((T0*)ms59_125792922),((T0*)ms59_797060818));
}
/*FI]*/
}
/*FI]*/
r470c_define1(r59string_at_run_time());
r83customize_runtime((T83*)(oBC19cpp),oBC59basic_sys_runtime);
/*[IF*/
if(_gc_flag){
/*[IRF3.2define1*/r38put_string((T38*)(oBC19echo),((T0*)ms444_1231257120));
r83macro_def((T83*)(oBC19cpp),((T0*)ms444_35343969),8192);
r83macro_def((T83*)(oBC19cpp),((T0*)ms444_40031469),32768);
r83sys_runtime_h((T83*)(oBC19cpp),((T0*)ms20_398948));
/*[IRF3.2compute_ceils*/{T2 _kb_count=0;
T0* _rc=NULL;
T0* _run_class_map=NULL;
T2 _i=0;
T2 _rsoc_count_ceil=0;
T2 _fsoc_count_ceil=0;
_run_class_map=r59get_run_class_map();
_i=(/*RF2*/(((T67*)_run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/(((T67*)_run_class_map))->_storage/*4*/))[_i]/*)*/;
/*[IF*/
if((/*RF2*/(((T60*)_rc))->_at_run_time/*20*/)){
/*[IF*/
if(X62is_native_array((/*RF2*/(((T60*)_rc))->_current_type/*0*/))){
_rsoc_count_ceil=(_rsoc_count_ceil)+(1);
}
else{
_fsoc_count_ceil=(_fsoc_count_ceil)+(1);
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
_fsoc_count_ceil=(4)*(_fsoc_count_ceil);
_kb_count=(_fsoc_count_ceil)*((8192)/(1024));
/*[IF*/
if((_kb_count)<(256)){
_fsoc_count_ceil=(256)/((8192)/(1024));
}
/*FI]*/
_rsoc_count_ceil=(3)*(_rsoc_count_ceil);
_kb_count=(_rsoc_count_ceil)*((32768)/(1024));
/*[IF*/
if((_kb_count)<(256)){
_rsoc_count_ceil=(256)/((32768)/(1024));
}
/*FI]*/
r83put_extern6((T83*)(oBC19cpp),((T0*)ms444_189437896),_fsoc_count_ceil);
r83put_extern6((T83*)(oBC19cpp),((T0*)ms444_38305571),_rsoc_count_ceil);
}/*]*/
r83sys_runtime_c(((T0*)ms20_398948));
r83swap_on_h((T83*)(oBC19cpp));
r83put_extern2((T83*)(oBC19cpp),((T0*)ms444_986930951),((T3)'0'));
/*]*/
}
/*FI]*/
/*[IRF3.2compile_routines*/{T0* _bcn=NULL;
T6 _stop=0;
T2 _i=0;
T2 _deep=0;
T0* _ct=NULL;
T0* _rc_string=NULL;
T0* _rc=NULL;
r38put_string((T38*)(oBC19echo),((T0*)ms59_1200304419));
r38put_integer((T38*)(oBC19echo),(/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/));
r38put_string((T38*)(oBC19echo),((T0*)ms59_401124480));
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_ct=(/*RF2*/(((T60*)_rc))->_current_type/*0*/);
/*[IF*/
if(X62is_basic_eiffel_expanded(_ct)){
r60compile_to_c(((T60*)_rc),0);
}
 else if(X62is_string(_ct)){
_rc_string=_rc;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_ct=(/*RF2*/(((T60*)_rc))->_current_type/*0*/);
/*[IF*/
if(X62is_bit(_ct)){
r60compile_to_c(((T60*)_rc),0);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_bcn=(/*RF2*/((T77*)((/*RF2*/(((T60*)_rc))->_base_class_name/*12*/)))->_to_string/*8*/);
/*[IF*/
if((((T0*)ms21_349117293))==((void*)(_bcn))){
r60compile_to_c(((T60*)_rc),0);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_rc_string)!=((void*)(NULL))){
r60compile_to_c(((T60*)_rc_string),0);
}
/*FI]*/
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_ct=(/*RF2*/(((T60*)_rc))->_current_type/*0*/);
_bcn=(/*RF2*/((T77*)(X62base_class_name(_ct)))->_to_string/*8*/);
/*[IF*/
if(((((T0*)ms21_53339))==((void*)(_bcn)))||((((T0*)ms21_867350214))==((void*)(_bcn)))){
r60compile_to_c(((T60*)_rc),0);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_ct=(/*RF2*/(((T60*)_rc))->_current_type/*0*/);
/*[IF*/
if(X62is_generic(_ct)){
r60compile_to_c(((T60*)_rc),0);
}
/*FI]*/
_i=(_i)-(1);
}
_deep=6;
while (!(_stop))
{
_stop=1;
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
/*[IF*/
if(!((/*RF2*/(((T60*)_rc))->_compile_to_c_done/*29*/))){
_stop=0;
r60compile_to_c(((T60*)_rc),_deep);
}
/*FI]*/
_i=(_i)-(1);
}
_deep=(_deep)-(1);
}
}/*]*/
r83cecil_define((T83*)(oBC19cpp));
r83define_main((T83*)(oBC19cpp),(/*RF2*/(C)->_root_procedure/*0*/));
r470c_define2(r59string_at_run_time());
/*[IRF3.2compile_registered_for_c_define*/{T2 _i=0;
_i=(/*RF2*/((T479*)(oBC59registered_for_c_define))->_upper/*12*/);
while (!((_i)<(0)))
{
r154c_define((T154*)(/*(IRF4.6item*/((/*RF2*/((T479*)(oBC59registered_for_c_define))->_storage/*4*/))[_i]/*)*/));
_i=(_i)-(1);
}
}/*]*/
/*[IRF3.2c_define*/{T2 _i=0;
_i=/*SSWARF2*//*X155upper*/(/*RF2*/((T155*)(oBC474registered))->_upper/*12*/);
/*[IF*/
if((_i)>=(0)){
while (!((_i)<(0)))
{
X96address_of_c_define(X155item(oBC474registered,_i),/*(IRF4.6item*/((/*RF2*/((T475*)(oBC474caller_memory))->_storage/*4*/))[_i]/*)*/);
_i=(_i)-(1);
}
}
/*FI]*/
}/*]*/
/*[IF*/
if(_gc_flag){
r444define2((T444*)(oBC19gc_handler));
}
/*FI]*/
/*[IRF3.2c_define*/{T2 _i=0;
_i=1;
while (!((_i)>((/*RF2*/((T462*)(oBC461manifest_array_types))->_count/*8*/))))
{
r461c_define_for(r462item((T462*)(oBC461manifest_array_types),_i));
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.2c_define*/{int _switch=0;
T2 _total=0;
T2 _count2=0;
T2 _count1=0;
T0* _dictionary2=NULL;
/*[IF*/
if(!(/*(IRF4.7is_empty*/((/*RF2*/((T450*)(oBC432dictionary))->_count/*8*/))==(0)/*)*/)){
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
_count1=1;
while (!((_count1)>((/*RF2*/((T450*)(oBC432dictionary))->_count/*8*/))))
{
_dictionary2=r450item((T450*)(oBC432dictionary),_count1);
_count2=1;
while (!((_count2)>((/*RF2*/(((T144*)_dictionary2))->_count/*8*/))))
{
r449c_define(_switch,r144item(((T144*)_dictionary2),_count2));
_total=(_total)+(1);
_count2=(_count2)+(1);
/*[IF*/
if(((_total)%(18))==(0)){
r83padding_here((T83*)(oBC19cpp));
}
/*FI]*/
}
_count1=(_count1)+(1);
}
}
/*FI]*/
r38print_count((T38*)(oBC19echo),((T0*)ms432_1556476521),_total);
}/*]*/
r83define_used_basics((T83*)(oBC19cpp));
r83write_make_file((T83*)(oBC19cpp));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms59_438660461);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
T0*oBC19parser_buffer=NULL;
T0*oBC59rf9_memory=NULL;


T0* r59get_class(T0* a1){
T0* R=NULL;
T0* _class_name=NULL;
/*[IF*/
if(r79has((T79*)(oBC59base_class_dictionary),a1)){
R=r79at((T79*)(oBC59base_class_dictionary),a1);
}
else{
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(a1);
/*]*/
_class_name=((T0*)n);
}
R=r77base_class(((T77*)_class_name));
}
/*FI]*/
return R;
}


T6 r59stupid_switch(T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((a2)==((void*)(NULL))){
R=1;
}
 else if((r63count(((T63*)a2)))==(1)){
R=1;
}
else{
R=X62stupid_switch(a1,a2);
}
/*FI]*/
return R;
}
T0*oBC19address_of_pool=NULL;
T0*oBC19type_string=NULL;
int fBC19type_string=0;


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


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


void r59add_base_class(T59* C,T0* a1){
T0* _name=NULL;
_name=(/*RF2*/((T77*)((/*RF2*/(((T61*)a1))->_name/*18*/)))->_to_string/*8*/);
r79put((T79*)(oBC59base_class_dictionary),a1,_name);
r59incr_magic_count(C);
}
T0*oBC59tmp_tail=NULL;


T0* r59run_class_for(T0* a1){
T0* R=NULL;
T0* _type_class=NULL;
T0* _bc=NULL;
/*[IF*/
if(r69has((T69*)(oBC59run_class_dictionary),a1)){
R=r69at((T69*)(oBC59run_class_dictionary),a1);
}
 else if(r79has((T79*)(oBC59base_class_dictionary),a1)){
_bc=r79at((T79*)(oBC59base_class_dictionary),a1);
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=((/*RF2*/(((T61*)_bc))->_name/*18*/));
/*]*/
_type_class=((T0*)n);
}
R=r369run_class(((T369*)_type_class));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms59_1507705367);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
return R;
}


T0* r59base_class(T59* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r79has((T79*)(oBC59base_class_dictionary),(/*RF2*/(((T77*)a1))->_to_string/*8*/))){
R=r79at((T79*)(oBC59base_class_dictionary),(/*RF2*/(((T77*)a1))->_to_string/*8*/));
}
 else if((/*RF2*/((T37*)(oBC19eiffel_parser))->_is_running/*2*/)){
r59fatal_error(((T0*)ms59_1230839011));
}
else{
/*[IF*/
if(r59parser_buffer_for(C,(/*RF2*/(((T77*)a1))->_to_string/*8*/))){
R=r37analyse_class((T37*)(oBC19eiffel_parser),a1);
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T77*)a1))->_start_position/*0*/));
}
r59fatal_error(((T0*)ms59_517131637));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r59parser_buffer_for(T59* C,T0* a1){
T6 R=0;
T2 _i=0;
r7copy((T7*)(oBC59tmp_tail),a1);
r7to_lower((T7*)(oBC59tmp_tail));
/*[IF*/
if(!(r7has_suffix((T7*)(oBC59tmp_tail),((T0*)ms19_331)))){
r7append((T7*)(oBC59tmp_tail),((T0*)ms19_331));
}
/*FI]*/
_i=(/*RF2*/((T52*)(r59loading_path()))->_lower/*16*/);
while (!(((_i)>((/*RF2*/((T52*)(r59loading_path()))->_upper/*12*/)))||(R)))
{
r7copy((T7*)(oBC59parser_buffer_path),r52item((T52*)(r59loading_path()),_i));
r7append((T7*)(oBC59parser_buffer_path),oBC59tmp_tail);
r178load_file((T178*)(oBC19parser_buffer),oBC59parser_buffer_path);
R=/*(IRF4.7is_ready*/((/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/))!=(NULL)/*)*/;
_i=(_i)+(1);
}
/*[IF*/
if((!(R))&&(r30has((T30*)(r59rename_dictionary(C)),oBC59tmp_tail))){
r7copy((T7*)(oBC59parser_buffer_path),r30at((T30*)(r59rename_dictionary(C)),oBC59tmp_tail));
r178load_file((T178*)(oBC19parser_buffer),oBC59parser_buffer_path);
/*[IF*/
if(/*(IRF4.7is_ready*/((/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/))!=(NULL)/*)*/){
R=1;
}
else{
r38w_put_string(((T0*)ms59_2071069951));
r38w_put_string(oBC59parser_buffer_path);
r38w_put_string(((T0*)ms20_216));
exit(1);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r7copy((T7*)(oBC59tmp_tail),a1);
/*[IF*/
if(!(r7has_suffix((T7*)(oBC59tmp_tail),((T0*)ms19_331)))){
r7append((T7*)(oBC59tmp_tail),((T0*)ms19_331));
}
/*FI]*/
_i=(/*RF2*/((T52*)(r59loading_path()))->_lower/*16*/);
while (!(((_i)>((/*RF2*/((T52*)(r59loading_path()))->_upper/*12*/)))||(R)))
{
r7copy((T7*)(oBC59parser_buffer_path),r52item((T52*)(r59loading_path()),_i));
r7append((T7*)(oBC59parser_buffer_path),oBC59tmp_tail);
r178load_file((T178*)(oBC19parser_buffer),oBC59parser_buffer_path);
R=/*(IRF4.7is_ready*/((/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/))!=(NULL)/*)*/;
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(!(R)){
r38w_put_string(((T0*)ms59_1628100917));
r38w_put_string(a1);
r38w_put_string(((T0*)ms59_1112));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC59parser_buffer_path))))->_count)=(0);
/*]*/
/*[IRF3.6append_loading_path_in*/{T0* b1=oBC59parser_buffer_path;
r48append_lp_in((T48*)(r59system_tools()),b1,r59loading_path());
}/*]*/
r38w_put_string(oBC59parser_buffer_path);
}
/*FI]*/
return R;
}


void r59reference_to_expanded(T0* a1){
T0* _type=NULL;
T0* _rc=NULL;
T2 _i=0;
/*[IRF3.2update_run_class_map*//*[IF*/
if((/*(IRF4.6count*/((/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/))+(1)/*)*/)!=((/*RF2*/((T69*)(oBC59run_class_dictionary))->_count/*8*/))){
/*[IRF3.3clear*/((((T67*)((T67*)(oBC59run_class_map))))->_upper)=(-(1));
/*]*/
r69item_map_in((T69*)(oBC59run_class_dictionary),oBC59run_class_map);
}
/*FI]*/
/*]*/
_i=(/*RF2*/((T67*)(oBC59run_class_map))->_upper/*12*/);
while (!((_i)<(0)))
{
_rc=/*(IRF4.6item*/((/*RF2*/((T67*)(oBC59run_class_map))->_storage/*4*/))[_i]/*)*/;
_type=(/*RF2*/(((T60*)_rc))->_current_type/*0*/);
/*[IF*/
if(X62is_expanded(_type)){
/*[IF*/
if(X62is_a(_type,a1)){
_type=X62actual_reference(_type,a1);
_rc=X62run_class(_type);
/*[IF*/
if(!((/*RF2*/(((T60*)_rc))->_at_run_time/*20*/))){
r60set_at_run_time(((T60*)_rc));
r60falling_down((T60*)(X62run_class(a1)));
}
/*FI]*/
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r59afd_check_deferred(T0* a1){
/*[IF*/
if(!(r502fast_has((T502*)(oBC59rf9_memory),a1))){
r502add_last((T502*)(oBC59rf9_memory),a1);
}
/*FI]*/
}
T0*oBC59base_class_dictionary=NULL;


T6 r59string_at_run_time(void){
T6 R=0;
T0* _rc=NULL;
/*[IF*/
if(r69has((T69*)(oBC59run_class_dictionary),((T0*)ms21_324411))){
_rc=r69at((T69*)(oBC59run_class_dictionary),((T0*)ms21_324411));
R=(/*RF2*/(((T60*)_rc))->_at_run_time/*20*/);
}
/*FI]*/
return R;
}
T0*oBC59parser_buffer_path=NULL;


T6 r59same_base_feature(T0* a1,T0* a2){
T6 R=0;
T0* _rc=NULL;
T0* _dyn_rf=NULL;
T0* _f=NULL;
T2 _i=0;
R=1;
_i=(/*RF2*/(((T63*)a2))->_upper/*12*/);
_f=/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)a1))->_base_feature/*28*/);
while (!((!(R))||((_i)==(0))))
{
_rc=r63item(((T63*)a2),_i);
_dyn_rf=r60dynamic(((T60*)_rc),a1);
/*[IF*/
if((_f)==((void*)(/*SSWA2*//*X96base_feature*/(/*RF2*/(((T154*)_dyn_rf))->_base_feature/*28*/)))){
/*[IF*/
if((X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)_dyn_rf))->_name/*16*/)))!=((void*)(X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)a1))->_name/*16*/))))){
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


T0* r59get_run_class_map(void){
T0* R=NULL;
R=oBC59run_class_map;
return R;
}
T0*oBC59run_feature_stack=NULL;
T0*oBC19id_provider=NULL;
int fBC19id_provider=0;

