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


void r263standard_c_print_function(T263* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r24c_print_function((T24*)(r263run_class(C)));
}
/*FI]*/
}
/*No:TYPE_NATIVE_ARRAY.used_as_reference*/


T2 r263id(T263* C){
T2 R=0;
R=((T24*)(r263run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_user_expanded*/
/*No:TYPE_NATIVE_ARRAY.is_pointer*/


void r263gc_mark(T263* C,T6 a1){
T0* _et_rc=NULL;
T0* _et=NULL;
_et=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
_et_rc=X54run_class(_et);
/*[IF*/
if(X54need_gc_mark_function(_et)){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_14931));
/*[IF*/
if(!(a1)){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_35948));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_26214));
r7extend((T7*)(((T0*)ms54_3077376)),'\173');
r263c_type_in(C,((T0*)ms54_3077376));
r7remove_last((T7*)(((T0*)ms54_3077376)),1);
r7extend((T7*)(((T0*)ms54_3077376)),'\40');
r7extend((T7*)(((T0*)ms54_3077376)),'e');
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r263c_type_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_148304));
r330mark_for(((T0*)ms54_3077376),((T0*)ms263_102),_et_rc);
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_1475));
/*[IF*/
if(!(a1)){
r7extend((T7*)(((T0*)ms54_3077376)),'\175');
}
/*FI]*/
}
else{
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_39198));
}
/*FI]*/
}


T0* r263to_runnable(T263* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _et2=NULL;
T0* _et1=NULL;
_et1=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
_et2=X54to_runnable(_et1,a1);
/*[IF*/
if((_et2)==((void*)(NULL))){
/*[IF*/
if((_et2)!=((void*)(NULL))){
r21add_position(X54start_position(_et2));
}
/*FI]*/
r21add_position(X54start_position(_et1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_28959);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_et2=X54run_type(_et2);
/*[IF*/
if(((C)->_run_type/*16*/)==((void*)(NULL))){
R=(T0*)C;
/*[IF*/
if((_et2)==((void*)(_et1))){
C->_run_type=(T0*)C;
r263load_basic_features(C);
}
else{
{T263*n=malloc(sizeof(*n));
*n=M263;
r263make_runnable(n,/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,_et2);
C->_run_type=(T0*)n;
}
r263load_basic_features((T263*)((C)->_run_type/*16*/));
}
/*FI]*/
}
 else if((_et2)==((void*)(_et1))){
R=(T0*)C;
}
else{
R=r263twin(C);
{T263*n=malloc(sizeof(*n));
*n=M263;
r263make_runnable(n,/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,_et2);
_rt=(T0*)n;
}
/*[IRF3.3set_run_type*/((((T263*)(((T263*)R))))->_run_type)=(_rt);
/*]*/
r263load_basic_features(((T263*)_rt));
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.c_initialize_in*/


void r263gc_define1(T263* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r263run_class(C);
_rcid=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms263_5264));
r263gc_na_env_in(C,((T0*)ms54_785024a));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms263_54560));
r263gc_mark_in(C,((T0*)ms54_3077376));
r7extend((T7*)(((T0*)ms54_3077376)),'\175');
r25put_extern5((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_info_flag/*4*/){
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1011));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r263gc_info_nb_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
}
/*FI]*/
}
/*No:TYPE_NATIVE_ARRAY.to_reference*/


void r263gc_mark_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(r263id(C),a1);
}


void r263load_basic_features(T263* C){
T0* _rc=NULL;
T0* _rf=NULL;
T0* _et=NULL;
_rc=r263run_class(C);
r24set_at_run_time(((T24*)_rc));
_et=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if(X54is_expanded(_et)){
r24set_at_run_time((T24*)(X54run_class(_et)));
}
/*FI]*/
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_1764));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_1053));
/*[IF*/
if((X54expanded_initializer(_et))!=((void*)(NULL))){
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_13554));
}
/*FI]*/
}


T0* r263run_class(T263* C){
T0* R=NULL;
/*[IF*/
if(r263is_run_type(C)){
R=r22run_class((C)->_run_type/*16*/);
}
/*FI]*/
return R;
}


void r263c_header_pass2(T263* C){
T0* _et=NULL;
_et=X54run_type(/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/);
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms13_6568));
r263c_type_in(C,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'T');
r2append_in(r263id(C),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
}
/*No:TYPE_NATIVE_ARRAY.us_item*/
/*No:TYPE_NATIVE_ARRAY.c_header_pass4*/
/*No:TYPE_NATIVE_ARRAY.is_like_current*/


void r263make_runnable(T263* C,T0* a1,T0* a2){
r263make(C,a1,a2);
C->_run_type=(T0*)C;
}
/*No:TYPE_NATIVE_ARRAY.is_bit*/


T0* r263smallest_ancestor(T263* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_a(_rto,(C)->_run_type/*16*/)){
R=_rto;
}
 else if(r263is_a((T263*)((C)->_run_type/*16*/),_rto)){
R=(C)->_run_type/*16*/;
}
else{
R=r263type_any();
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.fatal_error*/
/*No:TYPE_NATIVE_ARRAY.set_run_type*/


void r263gc_info_nb_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_15070));
r2append_in(r263id(C),a1);
}


void r263c_type_in(T263* C,T0* a1){
T0* _et=NULL;
_et=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
r7extend(((T7*)a1),'T');
/*[IF*/
if(X54is_reference(_et)){
r7extend(((T7*)a1),'0');
r7extend(((T7*)a1),'\52');
}
else{
r2append_in(X54id(_et),a1);
}
/*FI]*/
r7extend(((T7*)a1),'\52');
}


T0* r263run_time_mark(T263* C){
T0* R=NULL;
/*[IF*/
if(r263is_run_type(C)){
R=((T263*)((C)->_run_type/*16*/))->_written_mark/*12*/;
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_expanded*/
/*No:TYPE_NATIVE_ARRAY.us_native_array*/


void r263gc_info_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_7104));
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\42');
r7append(((T7*)a1),r263run_time_mark(C));
r7append(((T7*)a1),((T0*)ms13_6030));
r263gc_info_nb_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_348));
}


void r263gc_define2(T263* C){
T2 _rcid=0;
T0* _et_rc=NULL;
T0* _et=NULL;
_et=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
_et_rc=X54run_class(_et);
_rcid=((T24*)(r263run_class(C)))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r263gc_mark_in(C,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms263_254));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms263_570));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
r263gc_mark(C,0);
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_785024a)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_785024a)),'T');
r2append_in(_rcid,((T0*)ms54_785024a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1008));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms263_8280));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_22302));
X54c_type_for_result_in(_et,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_115570));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_info_flag/*4*/){
r263gc_info_nb_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_660));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_9339));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_40898));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_4776));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_30734));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_47856));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_37925));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_114770));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_8411));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_968643));
r263gc_na_env_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms263_4656));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
}
/*No:TYPE_NATIVE_ARRAY.is_like_feature*/
/*No:TYPE_NATIVE_ARRAY.fz_dot*/


T6 r263is_a(T263* C,T0* a1){
T6 R=0;
R=(r263run_time_mark(C))==((void*)(X54run_time_mark(a1)));
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.c_initialize*/
/*No:TYPE_NATIVE_ARRAY.is_character*/
/*No:TYPE_NATIVE_ARRAY.written_mark*/


void r263make(T263* C,T0* a1,T0* a2){
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_17628),a1);
C->_base_class_name=(T0*)n;
}
C->_generic_list=se_ma261(1,
a2);
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms14_17628));
r7extend((T7*)(((T0*)ms54_785024)),'\133');
r7append((T7*)(((T0*)ms54_785024)),X54written_mark(a2));
r7extend((T7*)(((T0*)ms54_785024)),'\135');
C->_written_mark=r84item(((T0*)ms54_785024));
}


void r263demangling_in(T263* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),'E');
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r263run_time_mark(C));
}
/*No:TYPE_NATIVE_ARRAY.fz_typedef*/
/*No:TYPE_NATIVE_ARRAY.is_array*/
/*No:TYPE_NATIVE_ARRAY.fz_bga*/
/*No:TYPE_NATIVE_ARRAY.fz_int*/
/*No:TYPE_NATIVE_ARRAY.tmp_string*/


void r263gc_na_env_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms263_7416));
r2append_in(r263id(C),a1);
}
/*No:TYPE_NATIVE_ARRAY.is_dummy_expanded*/
/*No:TYPE_NATIVE_ARRAY.space_for_variable*/
/*No:TYPE_NATIVE_ARRAY.to_expanded*/
/*No:TYPE_NATIVE_ARRAY.generic_list*/


T0* r263base_class(T263* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r64base_class(((T64*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms54_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}


void r263cast_to_ref(T263* C){
r263cast_to_ref((T263*)((C)->_run_type/*16*/));
}
/*No:TYPE_NATIVE_ARRAY.base_class_name*/
/*No:TYPE_NATIVE_ARRAY.is_formal_generic*/


T6 r263is_a_in(T263* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*12*/)==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=r263to_runnable(C,_ct);
_t2=X54to_runnable(a1,_ct);
/*[IF*/
if((X54run_time_mark(_t1))==((void*)(X54run_time_mark(_t2)))){
R=1;
}
else{
R=X54is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.elements_type*/
/*No:TYPE_NATIVE_ARRAY.body*/


T0* r263look_up_for(T263* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r263base_class(C)),a1,a2);
return R;
}
/*No:TYPE_NATIVE_ARRAY.fz_00*/
/*No:TYPE_NATIVE_ARRAY.fz_10*/


void r263c_type_for_external_in(T263* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*[IRF3.6c_type_for_result_in*/{T263* C1=C;
T0* b1=a1;
r263c_type_for_argument_in(C1,b1);
}/*]*/
/*FI]*/
}


void r263c_type_for_argument_in(T263* C,T0* a1){
r7extend(((T7*)a1),'T');
r2append_in(r263id(C),a1);
}
/*No:TYPE_NATIVE_ARRAY.c_header_pass1*/
/*No:TYPE_NATIVE_ARRAY.fz_printf*/
/*No:TYPE_NATIVE_ARRAY.c_type_for_target_in*/
/*No:TYPE_NATIVE_ARRAY.c_type_for_result_in*/
/*No:TYPE_NATIVE_ARRAY.run_type*/
/*No:TYPE_NATIVE_ARRAY.expanded_initializer*/


void r263c_frame_descriptor(T263* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
/*AF*//*AE*/
r7extend((T7*)(oBC12c_frame_descriptor_format),'E');
/*FI]*/
r2append_in(r263id(C),oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}
/*No:TYPE_NATIVE_ARRAY.has_creation*/
/*No:TYPE_NATIVE_ARRAY.us_clear_all*/


T2 r263space_for_pointer(void){
T2 R=0;
T8 _p=0;
R=sizeof(T8);
return R;
}
/*No:TYPE_NATIVE_ARRAY.c_header_pass3*/
/*No:TYPE_NATIVE_ARRAY.fz_14*/


void r263gc_call_new_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(r263id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_NATIVE_ARRAY.fz_new*/
/*No:TYPE_NATIVE_ARRAY.is_boolean*/


void r263mapping_cast(T263* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_15696)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\50');
/*[IRF3.6c_type_for_target_in*/{T263* C1=C;
T0* b1=((T0*)ms54_15696);
r263c_type_for_argument_in(C1,b1);
}/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\51');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_15696));
/*]*/
}
/*No:TYPE_NATIVE_ARRAY.is_generic*/
/*No:TYPE_NATIVE_ARRAY.is_real*/
/*No:TYPE_NATIVE_ARRAY.need_c_struct*/
/*No:TYPE_NATIVE_ARRAY.is_any*/
/*No:TYPE_NATIVE_ARRAY.header*/


T0* r263twin(T263* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T263*)R)=*C;
return R;
}
/*No:TYPE_NATIVE_ARRAY.us_put*/
/*No:TYPE_NATIVE_ARRAY.is_basic_eiffel_expanded*/
/*No:TYPE_NATIVE_ARRAY.fz_gc_mark*/


T0* r263type_any(void){
if(fBC12type_any==0){
fBC12type_any=1;
{T259*n=malloc(sizeof(*n));
*n=M259;
r259make(n,NULL);
oBC12type_any=(T0*)n;
}
}
return oBC12type_any;}
/*No:TYPE_NATIVE_ARRAY.need_gc_mark_function*/


T6 r263is_native_array(T263* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 263: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_string*/
/*No:TYPE_NATIVE_ARRAY.is_integer*/
/*No:TYPE_NATIVE_ARRAY.is_anchored*/


T6 r263is_run_type(T263* C){
T6 R=0;
T0* _et=NULL;
/*[IF*/
if(((C)->_run_type/*16*/)!=((void*)(NULL))){
R=1;
}
else{
_et=/*(IRF4.6elements_type*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if((X54is_run_type(_et))&&((X54run_type(_et))==((void*)(_et)))){
C->_run_type=(T0*)C;
r263load_basic_features(C);
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_reference*/
/*No:TYPE_NATIVE_ARRAY.is_none*/
/*No:TYPE_NATIVE_ARRAY.fz_inako*/
/*No:TYPE_NATIVE_ARRAY.is_like_argument*/


void r263just_before_gc_mark_in(T263* C,T0* a1){
r7append(((T7*)a1),((T0*)ms263_759));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_10832));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_34740));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_8411a));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_32819));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_11679));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_12078));
r263gc_na_env_in(C,a1);
r7append(((T7*)a1),((T0*)ms263_13433));
}
/*No:TYPE_NATIVE_ARRAY.mapping_cast_memory*/
/*No:TYPE_NATIVE_ARRAY.is_double*/
/*No:TYPE_DOUBLE.fz_void*/
/*No:TYPE_DOUBLE.start_position*/
int fBC267used_as_reference=0;


void r267used_as_reference(void){
if (fBC267used_as_reference==0){
fBC267used_as_reference=1;
r267load_ref(((T0*)ms14_10890));
}}
/*No:TYPE_DOUBLE.id*/
/*No:TYPE_DOUBLE.is_user_expanded*/
/*No:TYPE_DOUBLE.is_pointer*/


T0* r267to_runnable(T267* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r267check_type(C);
return R;
}
/*No:TYPE_DOUBLE.c_initialize_in*/
/*No:TYPE_DOUBLE.gc_define1*/
/*No:TYPE_DOUBLE.to_reference*/


void r267gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(5,a1);
}


T0* r267run_class(T267* C){
T0* R=NULL;
R=r22run_class((T0*)C);
return R;
}
/*No:TYPE_DOUBLE.c_header_pass2*/
/*No:TYPE_DOUBLE.c_header_pass4*/
/*No:TYPE_DOUBLE.us_item*/
/*No:TYPE_DOUBLE.is_like_current*/
/*No:TYPE_DOUBLE.is_bit*/


T0* r267smallest_ancestor(T267* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_integer(_rto)){
R=(T0*)C;
}
 else if(X54is_real(_rto)){
R=(T0*)C;
}
 else if(X54is_double(_rto)){
R=(T0*)C;
}
else{
R=r273smallest_ancestor((T273*)(r267type_double_ref()),_rto);
}
/*FI]*/
return R;
}
/*No:TYPE_DOUBLE.us_double*/


T0* r267run_time_mark(void){
T0* R=NULL;
R=((T0*)ms14_4818);
return R;
}
/*No:TYPE_DOUBLE.is_expanded*/
/*No:TYPE_DOUBLE.gc_info_in*/
/*No:TYPE_DOUBLE.gc_define2*/
/*No:TYPE_DOUBLE.fz_dot*/
/*No:TYPE_DOUBLE.is_like_feature*/


T6 r267is_a(T267* C,T0* a1){
T6 R=0;
/*[IF*/
if(X54is_double(a1)){
R=1;
}
 else if(r63is_subclass_of((T63*)(r267base_class(C)),X54base_class(a1))){
R=1;
r267used_as_reference();
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_DOUBLE.c_initialize*/
/*No:TYPE_DOUBLE.is_character*/


T0* r267written_mark(void){
T0* R=NULL;
R=((T0*)ms14_4818);
return R;
}


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


void r267make(T267* C,T0* a1){
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_4818),a1);
C->_base_class_name=(T0*)n;
}
}


void r267demangling_in(T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),'E');
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r267run_time_mark());
}


void r267fatal_error_generic_list(T267* C){
r21add_type((T0*)C,((T0*)ms54_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:TYPE_DOUBLE.is_array*/
/*No:TYPE_DOUBLE.is_dummy_expanded*/


T2 r267space_for_variable(void){
T2 R=0;
R=((/*UT*/(void)(((T5)(0.0)))),sizeof(T5));
return R;
}
/*No:TYPE_DOUBLE.to_expanded*/


T0* r267generic_list(T267* C){
T0* R=NULL;
r267fatal_error_generic_list(C);
return R;
}


T0* r267base_class(T267* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r64base_class(((T64*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms54_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:TYPE_DOUBLE.cast_to_ref*/
/*No:TYPE_DOUBLE.base_class_name*/
/*No:TYPE_DOUBLE.is_formal_generic*/


T6 r267is_a_in(T267* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r267written_mark())==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=r267to_runnable(C,_ct);
_t2=X54to_runnable(a1,_ct);
/*[IF*/
if((X54run_time_mark(_t1))==((void*)(X54run_time_mark(_t2)))){
R=1;
}
else{
R=X54is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r267look_up_for(T267* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r267base_class(C)),a1,a2);
return R;
}
/*No:TYPE_DOUBLE.us_double_ref*/


void r267c_type_for_external_in(T0* a1){
/*[IF*/
/*AF*//*AE*/
/*[IRF3.6c_type_for_result_in*/{T0* b1=a1;
r267c_type_for_argument_in(b1);
}/*]*/
/*FI]*/
}


void r267c_type_for_argument_in(T0* a1){
r7extend(((T7*)a1),'T');
r7extend(((T7*)a1),'5');
}
int fBC12type_double_ref=0;
T0*oBC12type_double_ref=NULL;


T0* r267type_double_ref(void){
if(fBC12type_double_ref==0){
T0* _double_ref=NULL;
fBC12type_double_ref=1;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_10890),NULL);
_double_ref=(T0*)n;
}
{T273*n=malloc(sizeof(*n));
*n=M273;
/*[IRF3.3make*/((((T273*)(n)))->_base_class_name)=(_double_ref);
/*]*/
oBC12type_double_ref=(T0*)n;
}
}
return oBC12type_double_ref;}
/*No:TYPE_DOUBLE.c_header_pass1*/
/*No:TYPE_DOUBLE.run_type*/
/*No:TYPE_DOUBLE.c_type_for_target_in*/
/*No:TYPE_DOUBLE.c_type_for_result_in*/
/*No:TYPE_DOUBLE.expanded_initializer*/
/*No:TYPE_DOUBLE.c_frame_descriptor*/


T6 r267has_creation(T267* C,T0* a1){
T6 R=0;
r21add_position(X83start_position(a1));
r267error(/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms265_100044));
return R;
}
/*No:TYPE_DOUBLE.c_header_pass3*/


void r267gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(5,a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_DOUBLE.fz_new*/
/*No:TYPE_DOUBLE.is_boolean*/
/*No:TYPE_DOUBLE.mapping_cast*/
/*No:TYPE_DOUBLE.is_generic*/
/*No:TYPE_DOUBLE.is_real*/
/*No:TYPE_DOUBLE.need_c_struct*/
/*No:TYPE_DOUBLE.is_any*/
/*No:TYPE_DOUBLE.nb_errors*/
/*No:TYPE_DOUBLE.is_basic_eiffel_expanded*/
/*No:TYPE_DOUBLE.fz_gc_mark*/
/*No:TYPE_DOUBLE.need_gc_mark_function*/


T6 r267is_native_array(T267* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 263: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_DOUBLE.is_string*/
/*No:TYPE_DOUBLE.is_integer*/
/*No:TYPE_DOUBLE.is_anchored*/
/*No:TYPE_DOUBLE.is_run_type*/
/*No:TYPE_DOUBLE.is_reference*/
/*No:TYPE_DOUBLE.is_none*/
/*No:TYPE_DOUBLE.fz_inako*/
/*No:TYPE_DOUBLE.is_like_argument*/
/*No:TYPE_DOUBLE.just_before_gc_mark_in*/


void r267load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r63run_class((T63*)(r64base_class(((T64*)_cn))));
r24set_at_run_time(((T24*)_rc));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_1764));
}
/*No:TYPE_DOUBLE.mapping_cast_memory*/
int fBC267check_type=0;


void r267check_type(T267* C){
if (fBC267check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC267check_type=1;
_bc=r267base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r267run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T63*)_bc))->_is_expanded/*20*/)){
r267error(/*(IRF4.6start_position*/(((T64*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms267_35832));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_DOUBLE.is_double*/
/*No:CST_ATT_DOUBLE.base_class*/
/*No:CST_ATT_DOUBLE.value_mem*/


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


T6 r212is_merge_with(T212* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(/*(IRF4.1arguments*/NULL/*)*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r212merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_DOUBLE.first_name*/
/*No:CST_ATT_DOUBLE.em1*/
/*No:CST_ATT_DOUBLE.header_comment*/
/*No:CST_ATT_DOUBLE.names*/
/*No:CST_ATT_DOUBLE.result_type*/
/*No:CST_ATT_DOUBLE.code_require*/
/*No:CST_ATT_DOUBLE.make_e_feature*/


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


T6 r212can_hide(T212* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r212error(r212start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X93start_position(a1));
r212error(r212start_position(C),((T0*)ms93_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r212merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_DOUBLE.ensure_assertion*/


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


T0* r212to_run_feature(T212* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(a1);
R=r24at(((T24*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 376: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T376*n=malloc(sizeof(*n));
*n=M376;
r376make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


T0* r212try_to_undefine_aux(T212* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r212start_position(C));
r212error(X83start_position(a1),((T0*)ms201_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_DOUBLE.fz_dot*/
/*No:CST_ATT_DOUBLE.stupid_switch*/


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


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


void r212collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_DOUBLE.set_header_comment*/
/*No:CST_ATT_DOUBLE.clients*/
/*No:CST_ATT_UNIQUE.base_class*/


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


T6 r199is_merge_with(T199* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(/*(IRF4.1arguments*/NULL/*)*/),X93arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X54is_a_in(X93result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r187is_a_in((T187*)(X93arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r199merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_UNIQUE.first_name*/
/*No:CST_ATT_UNIQUE.em1*/
/*No:CST_ATT_UNIQUE.header_comment*/
/*No:CST_ATT_UNIQUE.names*/
/*No:CST_ATT_UNIQUE.result_type*/
/*No:CST_ATT_UNIQUE.code_require*/
/*No:CST_ATT_UNIQUE.make_e_feature*/


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


T6 r199can_hide(T199* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X93result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X93result_type(a1))==((void*)(NULL)))){
r21add_position(X93start_position(a1));
r199error(r199start_position(C),((T0*)ms93_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X93arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X93start_position(a1));
r199error(r199start_position(C),((T0*)ms93_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X54is_a_in((C)->_result_type/*20*/,X93result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms93_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X54run_time_mark((((T24*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r199merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_UNIQUE.ensure_assertion*/


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


T0* r199to_run_feature(T199* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X54run_class(a1);
R=r24at(((T24*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 376: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T376*n=malloc(sizeof(*n));
*n=M376;
r376make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


T0* r199try_to_undefine_aux(T199* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r199start_position(C));
r199error(X83start_position(a1),((T0*)ms201_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_UNIQUE.fz_dot*/
T0*oBC199counter=NULL;
/*No:CST_ATT_UNIQUE.stupid_switch*/


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


void r199make(T199* C,T0* a1,T0* a2){
T0* _ic=NULL;
T2 _i=0;
/*[IRF3.3make_e_feature*/((((T199*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
{T202*n=malloc(sizeof(*n));
*n=M202;
r202make(n,r85count((T85*)((C)->_names/*8*/)));
C->_values=(T0*)n;
}
_i=0;
while (!((_i)>(((T202*)((C)->_values/*24*/))->_upper/*12*/))) {
r204increment((T204*)(oBC199counter));
{T174*n=malloc(sizeof(*n));
*n=M174;
r174make(n,((T204*)(oBC199counter))->_value/*0*/,NULL);
_ic=(T0*)n;
}
/*[IRF3.5put*/(((T202*)((C)->_values/*24*/))->_storage/*4*/)[_i]=(_ic);
/*]*/
_i=(_i)+(1);
}
}


void r199collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r358fast_has((T358*)(oBC93require_collector),_er))){
r358add_last((T358*)(oBC93require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_UNIQUE.set_header_comment*/
/*No:CST_ATT_UNIQUE.values*/
/*No:CST_ATT_UNIQUE.clients*/


void r341c_define_for(T0* a1){
T0* _rf=NULL;
T0* _elt_type=NULL;
T2 _elt_id=0;
T2 _ma_id=0;
_ma_id=X54id(a1);
_elt_type=X54run_type(r261item((T261*)(X54generic_list(a1)),1));
_elt_id=X54id(_elt_type);
r7copy((T7*)(oBC341header),((T0*)ms13_1776a));
r7extend((T7*)(oBC341header),'\52');
r7append((T7*)(oBC341header),((T0*)ms341_2660));
r2append_in(_ma_id,oBC341header);
r7append((T7*)(oBC341header),((T0*)ms341_13888));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC341body))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC341body),'T');
r2append_in(_ma_id,oBC341body);
r7append((T7*)(oBC341body),((T0*)ms341_8208));
/*[IF*/
if(X54is_reference(_elt_type)){
r7append((T7*)(oBC341body),((T0*)ms13_540));
}
else{
r7extend((T7*)(oBC341body),'T');
r2append_in(_elt_id,oBC341body);
}
/*FI]*/
r7append((T7*)(oBC341body),((T0*)ms341_4296));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_is_off/*0*/){
r7append((T7*)(oBC341body),((T0*)ms341_57504));
r2append_in(_ma_id,oBC341body);
r7append((T7*)(oBC341body),((T0*)ms341_28119));
}
else{
r7append((T7*)(oBC341body),((T0*)ms13_1008));
r2append_in(_ma_id,oBC341body);
r7append((T7*)(oBC341body),((T0*)ms341_94041));
_rf=r24get_feature_with((T24*)(X54run_class(a1)),((T0*)ms14_8925));
r2append_in(X54id(X51result_type(_rf)),oBC341body);
r7append((T7*)(oBC341body),((T0*)ms341_5022));
}
/*FI]*/
r7append((T7*)(oBC341body),((T0*)ms341_136867));
/*[IF*/
if(((X54is_integer(_elt_type))||(X54is_boolean(_elt_type)))||(X54is_character(_elt_type))){
r7append((T7*)(oBC341body),((T0*)ms341_12144));
}
 else if((X54is_real(_elt_type))||(X54is_double(_elt_type))){
r7append((T7*)(oBC341body),((T0*)ms341_14508));
}
 else if(X54is_user_expanded(_elt_type)){
r7append((T7*)(oBC341body),((T0*)ms341_39155));
}
else{
r7append((T7*)(oBC341body),((T0*)ms341_23688));
}
/*FI]*/
r7append((T7*)(oBC341body),((T0*)ms341_553071));
r25put_c_function((T25*)(oBC12cpp),oBC341header,oBC341body);
}
/*No:MANIFEST_ARRAY_POOL.c_define*/


void r341register(T0* a1){
T2 _id=0;
_id=X54id(a1);
/*[IF*/
if(!(r342has((T342*)(oBC341manifest_array_types),_id))){
r342put((T342*)(oBC341manifest_array_types),a1,_id);
}
/*FI]*/
}
/*No:MANIFEST_ARRAY_POOL.fz_void*/
T0*oBC341header=NULL;
/*No:MANIFEST_ARRAY_POOL.us_se_ma*/
T0*oBC341manifest_array_types=NULL;
T0*oBC341body=NULL;


void r341c_call(T0* a1){
T2 _id=0;
_id=X54id(a1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms341_2660));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_id);
/*]*/
}
/*No:MANIFEST_ARRAY_POOL.fz_t0_star*/
/*No:MANIFEST_ARRAY_POOL.fz_new*/
/*No:MANIFEST_ARRAY_POOL.us_storage*/


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


void r50c_define_opening(T50* C){
T0* _t=NULL;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_21736));
/*]*/
}
/*FI]*/
/*[IF*/
{/*AT*//*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
_t=X54run_type((C)->_result_type/*40*/);
r7append((T7*)(oBC12c_frame_descriptor_locals),((T0*)ms51_7479));
r50once_result_in(C,oBC12c_frame_descriptor_locals);
r7extend((T7*)(oBC12c_frame_descriptor_locals),'\54');
r204increment((T204*)(oBC12c_frame_descriptor_local_count));
r7append((T7*)(oBC12c_frame_descriptor_format),((T0*)ms14_7404));
X54c_frame_descriptor(_t);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
r178c_declare((T178*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215c_declare_for_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_21762));
/*[IRF3.5append_in*/r2append_in(((T2)(((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)),((T0*)ms51_3077376));
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\135');
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
}
/*FI]*/
r50c_initialize_ds_one_by_one(C);
/*[IRF3.2c_initialize_locals_one_by_one*/{T3 _c=0;
T2 _j=0;
T2 _i=0;
_j=1;
while (!((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)==(_i))) {
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_8225));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_i);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_314));
/*]*/
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
while (!((_c)==('\54'))) {
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1=_c;
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_j=(_j)+(1);
_c=/*(IRF4.6item*/(((T7*)(oBC12c_frame_descriptor_locals))->_storage/*0*/)[(_j)-(1)]/*)*/;
}
_j=(_j)+(1);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
_i=(_i)+(1);
}
}/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820a));
/*]*/
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c_old((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_23488));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_147634));
/*]*/
}
/*FI]*/
r216compile_to_c((T216*)((C)->_rescue_compound/*52*/));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_48457));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
r178initialize_expanded((T178*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_7601));
/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357compile_to_c((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_58520));
/*]*/
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_14820));
/*]*/
}
/*FI]*/
}
/*FI]*/
}


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


T0* r50once_mark(T50* C){
T0* R=NULL;
R=X83to_string(/*(IRF4.6first_name*/r85item(((T85*)(((T306*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/);
return R;
}
/*No:RUN_FEATURE_6.fz_void*/


void r50address_of_c_define(T50* C,T0* a1){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r50use_current(C)){
}
else{
r50address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r50address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
/*No:RUN_FEATURE_6.is_static*/
/*No:RUN_FEATURE_6.ucs_false*/


T0* r50start_position(T50* C){
T0* R=NULL;
R=r306start_position((T306*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_6.c_initialize_locals_one_by_one*/


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


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

if((14==z1)){
R=1;
}
 else 
if((13==z1)){
}
 else 
if((15==z1)){
C->_use_current_state=16;
/*[IRF3.4compute_use_current*/r50std_compute_use_current(C);
/*]*/
R=r50use_current(C);
}
 else {R=1;
}}
return R;
}


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


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


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


T0* r50run_class(T50* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_6.result_type*/
/*No:RUN_FEATURE_6.base_feature*/
/*No:RUN_FEATURE_6.static_value_mem*/
/*No:RUN_FEATURE_6.ensure_assertion*/


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


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


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


T6 r50is_exported_in(T50* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r50clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_6.fatal_error*/


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


void r50fe_vffd7(T50* C){
r21add_position(X54start_position((C)->_result_type/*40*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms50_203984);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}


void r50c_pre_computing(T50* C){
T0* _bfbc=NULL;
_bfbc=((T306*)((C)->_base_feature/*32*/))->_base_class/*4*/;
r28put_character((T28*)(oBC12echo),'\11');
r28put_string((T28*)(oBC12echo),((T64*)((((T63*)_bfbc))->_name/*24*/))->_to_string/*0*/);
r28put_character((T28*)(oBC12echo),'\56');
r28put_string((T28*)(oBC12echo),X83to_string((C)->_name/*16*/));
r28put_character((T28*)(oBC12echo),'\n');
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357compile_to_c((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
}
/*FI]*/
r50cpp_once_result(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X54c_initialize((C)->_result_type/*40*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\173';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r178c_declare((T178*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_routine_body/*48*/));
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215compile_to_c((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\175';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_3280));
/*]*/
}
/*No:RUN_FEATURE_6.is_once_function*/


void r50address_of_wrapper_name_in(T50* C,T0* a1){
r7extend(((T7*)a1),'W');
r2append_in(r50id(C),a1);
r7append(((T7*)a1),X83to_key((C)->_name/*16*/));
}
/*No:RUN_FEATURE_6.clients_memory*/
/*No:RUN_FEATURE_6.current_type*/


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


void r50make(T50* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r50run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X83to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r50initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}


void r50once_variable(T50* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'T');
/*[IF*/
if(X54is_expanded((C)->_result_type/*40*/)){
r2append_in(X54id((C)->_result_type/*40*/),((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
}
else{
r7extend((T7*)(((T0*)ms51_3077376)),'0');
r7extend((T7*)(((T0*)ms51_3077376)),'\52');
}
/*FI]*/
r50once_result_in(C,((T0*)ms51_3077376));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376a)))))->_count)=(0);
/*]*/
X54c_initialize_in((C)->_result_type/*40*/,((T0*)ms51_3077376a));
r25put_extern5((T25*)(oBC12cpp),((T0*)ms51_3077376),((T0*)ms51_3077376a));
}
/*No:RUN_FEATURE_6.ucs_true*/
/*No:RUN_FEATURE_6.routine_body*/
/*No:RUN_FEATURE_6.name*/
/*No:RUN_FEATURE_6.us_std_output*/
/*No:RUN_FEATURE_6.fz_int*/
/*No:RUN_FEATURE_6.afd_check*/


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


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


void r50c_define(T50* C){
T0* _bfbc=NULL;
_bfbc=((T306*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if(r50is_pre_computable(C)){
/*[IF*/
if(!(r63once_flag(((T63*)_bfbc),r50once_mark(C)))){
r50once_variable(C);
}
/*FI]*/
/*[IRF3.6add_pre_computed_once_function*/{T0* b1=(T0*)C;
r49add_last((T49*)(oBC26pre_computed_once),b1);
}/*]*/
}
else{
/*[IF*/
if(!(r63once_flag(((T63*)_bfbc),r50once_mark(C)))){
r50once_boolean(C);
r50once_variable(C);
}
/*FI]*/
r50define_prototype(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_759));
/*]*/
r50once_flag(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_2454));
/*]*/
r50c_define_opening(C);
r50once_flag(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_756));
/*]*/
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_routine_body/*48*/));
}
/*FI]*/
r50c_define_closing(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_276));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_5607));
/*]*/
r50cpp_once_result(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms50_600));
/*]*/
r50c_frame_descriptor(C);
}
/*FI]*/
}


void r50once_result_in(T50* C,T0* a1){
r7extend(((T7*)a1),'o');
r306mapping_c_name_in((T306*)((C)->_base_feature/*32*/),a1);
}


void r50fall_down(T50* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X54run_class((C)->_current_type/*4*/);
_running=(((T24*)_current_rc))->_running/*12*/;
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X54base_class((C)->_current_type/*4*/);
_i=(((T328*)_running))->_lower/*12*/;
while (!((_i)>((((T328*)_running))->_upper/*8*/))) {
_sub_rc=r328item(((T328*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X54base_class((((T24*)_sub_rc))->_current_type/*0*/);
_sub_name=r63new_name_of(((T63*)_sub_bc),_current_bc,(C)->_name/*16*/);
_rf=r24get_feature(((T24*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:RUN_FEATURE_6.rescue_compound*/
/*No:RUN_FEATURE_6.actuals_clients*/
/*No:RUN_FEATURE_6.us_result*/


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


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


void r50c_initialize_ds_one_by_one(T50* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_37325));
r50c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IF*/
if(r50use_current(C)){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_18550));
}
else{
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_11254));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
r25put_position_in_ds(r50start_position(C));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_11736));
/*]*/
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_12150));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_6.ucs_not_computed*/


T6 r50is_pre_computable(T50* C){
T6 R=0;
/*[IF*/
if(r39fast_has((T39*)(oBC50frozen_general),X83to_string((C)->_name/*16*/))){
R=1;
}
 else if((((C)->_arguments/*36*/)==((void*)(NULL)))&&(!(r50use_current(C)))){
/*[IF*/
if(((C)->_routine_body/*48*/)==((void*)(NULL))){
R=1;
}
 else if(!(r43invariant_check((T43*)(oBC12run_control)))){
R=r216is_pre_computable((T216*)((C)->_routine_body/*48*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357clear_run_feature((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
/*[IRF3.3clear_run_feature*/((((T215*)((T215*)((C)->_ensure_assertion/*24*/))))->_run_feature)=(NULL);
/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_6.collect_c_tmp*/


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


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


void r50address_of_c_mapping(T50* C){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r50use_current(C)){
r50mapping_name(C);
}
else{
r50address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r50address_of_c_mapping_wrapper(C);
}
/*FI]*/
}


void r50mapping_c(T50* C){
/*[IF*/
if(r50is_pre_computable(C)){
r50cpp_once_result(C);
}
else{
r50default_mapping_function(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_6.can_be_dropped*/


void r50initialize(T50* C){
C->_result_type=((T306*)((C)->_base_feature/*32*/))->_result_type/*56*/;
C->_arguments=((T306*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[IF*/
if(X54is_anchored((C)->_result_type/*40*/)){
r50fe_vffd7(C);
}
 else if(X54is_formal_generic((C)->_result_type/*40*/)){
r21add_position(X54start_position((C)->_result_type/*40*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms50_321828);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
C->_result_type=X54to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_runnable((T187*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T306*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
C->_local_vars=r178to_runnable((T178*)((C)->_local_vars/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T306*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
C->_routine_body=r216to_runnable((T216*)((C)->_routine_body/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
C->_require_assertion=r306run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
C->_ensure_assertion=r306run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T306*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T363*)((T363*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r216to_runnable((T216*)((C)->_rescue_compound/*52*/),(C)->_current_type/*4*/);
}
/*FI]*/
r344add_function((T0*)C);
}
/*No:RUN_FEATURE_6.require_assertion*/
/*No:RUN_FEATURE_6.c_code2*/


void r50once_boolean(T50* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1011));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r50once_flag_in(C,((T0*)ms51_3077376));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms51_3077376),'0');
}


void r50once_flag_in(T50* C,T0* a1){
r7extend(((T7*)a1),'f');
r306mapping_c_name_in((T306*)((C)->_base_feature/*32*/),a1);
}
/*No:RUN_FEATURE_6.compute_use_current*/
/*No:RUN_FEATURE_6.local_vars*/


void r50c_frame_descriptor_name_in(T50* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r50id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}
/*No:TYPE_REAL.fz_void*/
/*No:TYPE_REAL.start_position*/
int fBC271used_as_reference=0;


void r271used_as_reference(void){
if (fBC271used_as_reference==0){
fBC271used_as_reference=1;
r271load_ref(((T0*)ms14_7696));
}}
/*No:TYPE_REAL.id*/
/*No:TYPE_REAL.is_user_expanded*/
/*No:TYPE_REAL.is_pointer*/


T0* r271to_runnable(T271* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r271check_type(C);
return R;
}
/*No:TYPE_REAL.us_real_ref*/
/*No:TYPE_REAL.c_initialize_in*/
/*No:TYPE_REAL.gc_define1*/
/*No:TYPE_REAL.to_reference*/


void r271gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(4,a1);
}


T0* r271run_class(T271* C){
T0* R=NULL;
R=r22run_class((T0*)C);
return R;
}
/*No:TYPE_REAL.c_header_pass2*/
/*No:TYPE_REAL.c_header_pass4*/
/*No:TYPE_REAL.us_item*/
/*No:TYPE_REAL.is_like_current*/
/*No:TYPE_REAL.is_bit*/


T0* r271smallest_ancestor(T271* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_integer(_rto)){
R=(T0*)C;
}
 else if(X54is_real(_rto)){
R=(T0*)C;
}
 else if(X54is_double(_rto)){
R=a1;
}
else{
R=r273smallest_ancestor((T273*)(r271type_real_ref()),_rto);
}
/*FI]*/
return R;
}

