/*
-- 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:STD_FILE_WRITE.path*/


void r45connect_to(T45* C,T0* a1){
T8 _p=0;
_p=r7to_external(((T7*)a1));
C->_output_stream=fopen((char*)_p,"w");
/*[IF*/
if((NULL!=(C)->_output_stream/*4*/)){
C->_path=a1;
}
/*FI]*/
}
/*No:STD_FILE_WRITE.is_connected*/
/*No:STD_FILE_WRITE.output_stream*/


void r45disconnect(T45* C){
fclose((C)->_output_stream/*4*/);
C->_path=NULL;
}


void r45put_string(T45* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
/*[IRF3.6put_character*/{T45* C1=C;
T3 b1=/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/;
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
_i=(_i)+(1);
}
}
/*No:STD_FILE_WRITE.make*/
/*No:STD_FILE_WRITE.put_character*/


void r45put_integer(T45* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC30tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC30tmp_string);
r45put_string(C,oBC30tmp_string);
}
/*No:TYPE_ARRAY.fz_null*/
/*No:TYPE_ARRAY.fz_void*/
/*No:TYPE_ARRAY.start_position*/


void r260standard_c_print_function(T260* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r24c_print_function((T24*)(r260run_class(C)));
}
/*FI]*/
}
/*No:TYPE_ARRAY.run_type_memory*/
/*No:TYPE_ARRAY.used_as_reference*/


T2 r260id(T260* C){
T2 R=0;
R=((T24*)(r260run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_ARRAY.is_user_expanded*/
/*No:TYPE_ARRAY.is_pointer*/


T0* r260to_runnable(T260* C,T0* a1){
T0* R=NULL;
T0* _et2=NULL;
T0* _et1=NULL;
_et1=/*(IRF4.6array_of*/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]*/
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
R=(T0*)C;
/*[IF*/
if((X54run_type(_et2))==((void*)(_et1))){
C->_run_type_memory=(T0*)C;
}
else{
{T260*n=malloc(sizeof(*n));
*n=M260;
r260final(n,(C)->_base_class_name/*4*/,X54run_type(_et2));
C->_run_type_memory=(T0*)n;
}
}
/*FI]*/
}
 else if((_et2)==((void*)(_et1))){
R=(T0*)C;
}
else{
{T260*n=malloc(sizeof(*n));
*n=M260;
r260with(n,(C)->_base_class_name/*4*/,(C)->_written_mark/*12*/,_et2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.c_initialize_in*/
/*No:TYPE_ARRAY.gc_define1*/
/*No:TYPE_ARRAY.to_reference*/


void r260gc_mark_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(r260id(C),a1);
}


void r260load_basic_features(T260* C){
T0* _rc=NULL;
T0* _rf=NULL;
T0* _et=NULL;
_et=/*(IRF4.6array_of*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if(X54is_expanded(_et)){
r24set_at_run_time((T24*)(X54run_class(_et)));
}
/*FI]*/
_rc=r260run_class(C);
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_11896));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_2840));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_2855));
_rf=r24get_feature_with(((T24*)_rc),((T0*)ms14_8925));
}


T0* r260run_class(T260* C){
T0* R=NULL;
/*[IF*/
if(r260is_run_type(C)){
R=r22run_class(r260run_type(C));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.c_header_pass2*/


void r260c_header_pass4(T260* C){
r260standard_c_struct(C);
r260standard_c_object_model(C);
r260standard_c_print_function(C);
}
/*No:TYPE_ARRAY.is_like_current*/
/*No:TYPE_ARRAY.is_bit*/


void r260gc_store_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_2860));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.us_storage*/


T0* r260smallest_ancestor(T260* C,T0* a1){
T0* R=NULL;
T0* _array_of3=NULL;
T0* _array_of2=NULL;
T0* _array_of1=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_array(_rto)){
_array_of1=X54run_type(/*(IRF4.6array_of*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/);
_array_of2=r261first((T261*)(X54generic_list(_rto)));
_array_of3=X54smallest_ancestor(_array_of1,_array_of2);
/*[IF*/
if((_array_of3)==((void*)(_array_of1))){
R=(T0*)C;
}
 else if((_array_of3)==((void*)(_array_of2))){
R=a1;
}
else{
{T260*n=malloc(sizeof(*n));
*n=M260;
r260make(n,NULL,_array_of3);
R=(T0*)n;
}
}
/*FI]*/
}
else{
R=X54smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.fatal_error*/


void r260gc_info_nb_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_15070));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.fz_eq_h*/


T0* r260run_time_mark(T260* C){
T0* R=NULL;
/*[IF*/
if(r260is_run_type(C)){
R=X54written_mark(r260run_type(C));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_expanded*/


void r260standard_gc_define2(T260* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=r260run_class(C);
_rcid=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_11536));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_6480));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms54_410));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_667749));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_629541));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_7450784));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_14432));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r260gc_mark_in(C,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_254a));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_600));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
_gc_check_id=(r24is_tagged(((T24*)_rc)))&&(r43no_check((T43*)(oBC12run_control)));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_21692));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_972));
}
/*FI]*/
r24gc_mark_fixed_size(((T24*)_rc),0,((T0*)ms54_3077376));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_276));
}
/*FI]*/
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r260gc_align_mark_in(C,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_14720));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_603));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
r24gc_align_mark_fixed_size(((T24*)_rc),((T0*)ms54_3077376));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms54_5436));
r2append_in(_rcid,((T0*)ms54_785024a));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms54_455742));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_78450));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_345762));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1580));
r25put_extern5((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)),'\52');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1008));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_4410));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms13_410));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_924));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_info_flag/*4*/){
r260gc_info_nb_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_660));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_759));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1500));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_3900));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_13425));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11209));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_39879));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_2460));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_752));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_104196));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11970));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11264));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_55955));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790aa));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214aa));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360aa));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_32340));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1433339));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_52000));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1305));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790a));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214a));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360a));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_76164));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1800));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_16175));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_15246));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790));
r260gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214));
r260gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360));
r260gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_25650));
/*[IF*/
{/*AT*/r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_14168));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_12699));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
}
/*No:TYPE_ARRAY.gc_info_in*/
/*No:TYPE_ARRAY.gc_define2*/
/*No:TYPE_ARRAY.is_like_feature*/
/*No:TYPE_ARRAY.fz_dot*/


T6 r260is_a(T260* C,T0* a1){
T6 R=0;
/*[IF*/
if((r260run_class(C))==((void*)(X54run_class(a1)))){
R=1;
}
 else if(X54is_array(a1)){
R=X54is_a(/*(IRF4.6array_of*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/,r261first((T261*)(X54generic_list(a1))));
/*[IF*/
if(!(R)){
/*[IRF3.6extend*/{T3 b1='\40';
r7extend((T7*)(oBC21explanation),b1);
}/*]*/
}
/*FI]*/
}
 else if(r63is_subclass_of((T63*)(r260base_class(C)),X54base_class(a1))){
/*[IF*/
if(X54is_generic(a1)){
R=r63is_a_vncg((T63*)(r260base_class(C)),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}


void r260gc_free_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_8645));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.c_initialize*/
/*No:TYPE_ARRAY.is_character*/
/*No:TYPE_ARRAY.written_mark*/


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


void r260demangling_in(T260* C,T0* a1){
/*[IF*/
{/*AT*/r7extend(((T7*)a1),'R');
}
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r260run_time_mark(C));
}


void r260standard_gc_define1(T260* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r260run_class(C);
_rcid=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_6568));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024a)),'B');
r2append_in(_rcid,((T0*)ms54_785024a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_410));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_144));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024a)),'B');
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_420));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_78962));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_12312));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024a));
/*]*/
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_410));
r2append_in(_rcid,((T0*)ms54_785024a));
r7extend((T7*)(((T0*)ms54_785024a)),'\52');
r260gc_store_in(C,((T0*)ms54_785024a));
r25put_extern5((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms13_1300));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1011));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r260gc_store_left_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms54_2420));
r260gc_store_chunk_in(C,((T0*)ms54_785024a));
r25put_extern5((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms13_1300));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_410));
r2append_in(_rcid,((T0*)ms54_785024a));
r7extend((T7*)(((T0*)ms54_785024a)),'\52');
r260gc_free_in(C,((T0*)ms54_785024a));
r25put_extern5((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms13_1300));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_info_flag/*4*/){
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1011));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r260gc_info_nb_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
}
/*FI]*/
}
/*No:TYPE_ARRAY.fz_typedef*/
/*No:TYPE_ARRAY.is_array*/
/*No:TYPE_ARRAY.fz_bga*/
/*No:TYPE_ARRAY.fz_int*/
/*No:TYPE_ARRAY.tmp_string*/
/*No:TYPE_ARRAY.is_dummy_expanded*/
/*No:TYPE_ARRAY.space_for_variable*/
/*No:TYPE_ARRAY.to_expanded*/
/*No:TYPE_ARRAY.generic_list*/


T0* r260base_class(T260* 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 r260cast_to_ref(T260* C){
X54cast_to_ref(r260run_type(C));
}
/*No:TYPE_ARRAY.base_class_name*/
/*No:TYPE_ARRAY.fz_se_cmpt*/
/*No:TYPE_ARRAY.us_capacity*/
/*No:TYPE_ARRAY.is_formal_generic*/


T6 r260is_a_in(T260* 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=r260to_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_ARRAY.body*/


T0* r260look_up_for(T260* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r260base_class(C)),a1,a2);
return R;
}
/*No:TYPE_ARRAY.fz_00*/
/*No:TYPE_ARRAY.fz_10*/


void r260c_type_for_external_in(T0* a1){
/*[IF*/
{/*AT*/r7append(((T7*)a1),((T0*)ms13_1776a));
r7extend(((T7*)a1),'\52');
}
/*FI]*/
}
/*No:TYPE_ARRAY.c_type_for_argument_in*/
/*No:TYPE_ARRAY.array_of*/
/*No:TYPE_ARRAY.c_header_pass1*/
/*No:TYPE_ARRAY.fz_printf*/


void r260c_type_for_target_in(T260* C,T0* a1){
r7extend(((T7*)a1),'T');
r2append_in(r260id(C),a1);
r7extend(((T7*)a1),'\52');
}
/*No:TYPE_ARRAY.c_type_for_result_in*/
/*No:TYPE_ARRAY.fz_gc_sweep*/


T0* r260run_type(T260* C){
T0* R=NULL;
/*[IF*/
if(r260is_run_type(C)){
R=(C)->_run_type_memory/*16*/;
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.expanded_initializer*/


void r260c_frame_descriptor(T260* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
{/*AT*/r7extend((T7*)(oBC12c_frame_descriptor_format),'R');
}
/*FI]*/
r2append_in(r260id(C),oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}


T6 r260has_creation(T260* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)(r260run_type(C)))){
R=r63has_creation((T63*)(r260base_class(C)),a1);
}
else{
R=X54has_creation(r260run_type(C),a1);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.fz_t0_star*/


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


void r260gc_call_new_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(r260id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_ARRAY.fz_new*/
/*No:TYPE_ARRAY.is_boolean*/


void r260mapping_cast(T260* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_15696)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\50');
r260c_type_for_target_in(C,((T0*)ms54_15696));
r7extend((T7*)(((T0*)ms54_15696)),'\51');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_15696));
/*]*/
}
/*No:TYPE_ARRAY.is_generic*/
/*No:TYPE_ARRAY.us_lower*/
/*No:TYPE_ARRAY.us_array*/
/*No:TYPE_ARRAY.fz_struct*/
/*No:TYPE_ARRAY.is_real*/
/*No:TYPE_ARRAY.need_c_struct*/


void r260with(T260* C,T0* a1,T0* a2,T0* a3){
C->_base_class_name=a1;
C->_generic_list=se_ma261(1,
a3);
C->_written_mark=a2;
{T260*n=malloc(sizeof(*n));
*n=M260;
r260final(n,a1,X54run_type(a3));
C->_run_type_memory=(T0*)n;
}
}
/*No:TYPE_ARRAY.is_any*/


void r260standard_gc_info_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_7104));
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\42');
r7append(((T7*)a1),r260run_time_mark(C));
r7append(((T7*)a1),((T0*)ms13_6030));
r260gc_info_nb_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_348));
r7append(((T7*)a1),((T0*)ms13_7104));
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\42');
r260gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_6030));
r260gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_348));
}
/*No:TYPE_ARRAY.header*/


void r260standard_c_struct(T260* C){
T0* _t=NULL;
T0* _a=NULL;
T2 _mem_id=0;
T2 _i=0;
T0* _wa=NULL;
_mem_id=r260id(C);
_wa=r24writable_attributes((T24*)(r260run_class(C)));
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024)),'S');
r2append_in(_mem_id,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\173');
/*[IF*/
{/*AT*//*[IF*/
if(r24is_tagged((T24*)(r260run_class(C)))){
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms54_6272));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(((T361*)_wa))->_upper/*12*/;
while (!((_i)==(0))) {
_a=r361item(((T361*)_wa),_i);
_t=X54run_type((((T356*)_a))->_result_type/*28*/);
X54c_type_for_result_in(_t,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\40');
r7extend((T7*)(((T0*)ms54_785024)),'\137');
r7append((T7*)(((T0*)ms54_785024)),X83to_string((((T356*)_a))->_name/*16*/));
r7extend((T7*)(((T0*)ms54_785024)),'\73');
_i=(_i)-(1);
}
}
/*FI]*/
r7extend((T7*)(((T0*)ms54_785024)),'\175');
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:TYPE_ARRAY.is_basic_eiffel_expanded*/
/*No:TYPE_ARRAY.fz_gc_mark*/


void r260gc_store_chunk_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_19239));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.need_gc_mark_function*/


T6 r260is_native_array(T260* 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_ARRAY.is_string*/


void r260gc_align_mark_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_24804));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.is_integer*/
/*No:TYPE_ARRAY.is_anchored*/


T6 r260is_run_type(T260* C){
T6 R=0;
T0* _et=NULL;
/*[IF*/
if(((C)->_run_type_memory/*16*/)!=((void*)(NULL))){
R=1;
}
else{
_et=/*(IRF4.6array_of*/r261first(((T261*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if((X54is_run_type(_et))&&((X54run_type(_et))==((void*)(_et)))){
C->_run_type_memory=(T0*)C;
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.us_upper*/


void r260standard_c_object_model(T260* C){
T0* _rc=NULL;
T2 _mem_id=0;
_rc=r260run_class(C);
_mem_id=(((T24*)_rc))->_id/*4*/;
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_785024)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_785024)),'T');
r2append_in(_mem_id,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\40');
r7extend((T7*)(((T0*)ms54_785024)),'M');
r2append_in(_mem_id,((T0*)ms54_785024));
r25put_extern7((T25*)(oBC12cpp),((T0*)ms54_785024));
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_785024)))))->_count)=(0);
/*]*/
r24c_object_model_in(((T24*)_rc),((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));
/*]*/
r25swap_on_h((T25*)(oBC12cpp));
}
/*No:TYPE_ARRAY.is_reference*/
T0*oBC260tmp_written_mark=NULL;


void r260standard_just_before_gc_mark_in(T260* C,T0* a1){
r260gc_free_in(C,a1);
r7extend(((T7*)a1),'\75');
r7append(((T7*)a1),((T0*)ms13_1300));
r7append(((T7*)a1),((T0*)ms13_144));
}
/*No:TYPE_ARRAY.is_none*/
/*No:TYPE_ARRAY.fz_inako*/
/*No:TYPE_ARRAY.fz_c_void_args*/
/*No:TYPE_ARRAY.is_like_argument*/
/*No:TYPE_ARRAY.just_before_gc_mark_in*/


void r260gc_store_left_in(T260* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_17320));
r2append_in(r260id(C),a1);
}
/*No:TYPE_ARRAY.mapping_cast_memory*/
/*No:TYPE_ARRAY.fz_gc*/
/*No:TYPE_ARRAY.is_double*/


void r260standard_c_typedef(T260* C){
T2 _mem_id=0;
_mem_id=r260id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_785024)))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_6568));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024)),'S');
r2append_in(_mem_id,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\40');
r7extend((T7*)(((T0*)ms54_785024)),'T');
r2append_in(_mem_id,((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_144));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
}


void r260final(T260* C,T0* a1,T0* a2){
C->_base_class_name=a1;
C->_generic_list=se_ma261(1,
a2);
r7copy((T7*)(oBC260tmp_written_mark),((T0*)ms14_1990));
r7extend((T7*)(oBC260tmp_written_mark),'\133');
r7append((T7*)(oBC260tmp_written_mark),X54written_mark(a2));
r7extend((T7*)(oBC260tmp_written_mark),'\135');
C->_written_mark=r84item(oBC260tmp_written_mark);
C->_run_type_memory=(T0*)C;
}
/*No:REAL_CONSTANT.static_value*/
/*No:REAL_CONSTANT.mapping_c_target*/
/*No:REAL_CONSTANT.is_static*/
/*No:REAL_CONSTANT.can_be_dropped*/
/*No:REAL_CONSTANT.is_manifest_string*/
/*No:REAL_CONSTANT.start_position*/
/*No:REAL_CONSTANT.to_string*/
/*No:REAL_CONSTANT.c_simple*/
/*No:REAL_CONSTANT.c_declare_for_old*/


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


T2 r173to_integer(T173* C){
T2 R=0;
r173error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:REAL_CONSTANT.use_current*/
/*No:REAL_CONSTANT.dca_inline_argument*/
/*No:REAL_CONSTANT.compile_to_c*/
/*No:REAL_CONSTANT.to_runnable*/


T2 r173isa_dca_inline_argument(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}
/*No:REAL_CONSTANT.compile_to_c_old*/
/*No:REAL_CONSTANT.is_pre_computable*/
/*No:REAL_CONSTANT.collect_c_tmp*/
/*No:REAL_CONSTANT.fz_iinaiv*/
int fBC173result_type=0;
T0*oBC173result_type=NULL;


T0* r173result_type(void){
if(fBC173result_type==0){
fBC173result_type=1;
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make(n,NULL);
oBC173result_type=(T0*)n;
}
}
return oBC173result_type;}


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


void r173make(T173* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_to_string=a2;
}
/*No:REAL_CONSTANT.is_current*/
/*No:REAL_CONSTANT.unary_minus*/
/*No:REAL_CONSTANT.is_void*/


void r173mapping_c_arg(T173* C,T0* a1){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.6to_reference*/{T271* C1=(T271*)(r173result_type());
r25to_reference((T25*)(oBC12cpp),(T0*)C1,r271type_real_ref());
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T173* C1=C;
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),(C1)->_to_string/*8*/);
/*]*/
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IRF3.6compile_to_c*/{T173* C1=C;
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),(C1)->_to_string/*8*/);
/*]*/
}/*]*/
}
/*FI]*/
}
/*No:REAL_CONSTANT.afd_check*/
/*No:REAL_CONSTANT.is_result*/
/*No:LOCAL_NAME2.static_value*/
/*No:LOCAL_NAME2.is_static*/
/*No:LOCAL_NAME2.is_manifest_string*/
/*No:LOCAL_NAME2.start_position*/


T0* r180to_string(T180* C){
T0* R=NULL;
R=((T183*)(/*(IRF4.6name*/r185item(((T185*)(((T178*)((C)->_local_var_list/*12*/))->_flat_list/*8*/)),(C)->_rank/*8*/)/*)*/))->_to_string/*8*/;
return R;
}
/*No:LOCAL_NAME2.c_simple*/


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


T2 r180to_integer(T180* C){
T2 R=0;
r180error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:LOCAL_NAME2.rank*/
/*No:LOCAL_NAME2.use_current*/


T0* r180to_runnable(T180* C,T0* a1){
T0* R=NULL;
T0* _lvl=NULL;
T0* _rf=NULL;
_rf=r22top_rf((T22*)(oBC12small_eiffel));
_lvl=X51local_vars(_rf);
/*[IF*/
if(((C)->_local_var_list/*12*/)==((void*)(_lvl))){
R=(T0*)C;
}
else{
{T180*n=malloc(sizeof(*n));
*n=M180;
r180refer_to(n,(C)->_start_position/*4*/,_lvl,(C)->_rank/*8*/);
R=(T0*)n;
}
}
/*FI]*/
/*[IRF3.3set_is_used*/((((T183*)((T183*)(/*(IRF4.6name*/r185item(((T185*)((((T178*)_lvl))->_flat_list/*8*/)),(C)->_rank/*8*/)/*)*/))))->_is_used)=(1);
/*]*/
return R;
}
/*No:LOCAL_NAME2.compile_to_c_old*/
/*No:LOCAL_NAME2.is_pre_computable*/
/*No:LOCAL_NAME2.collect_c_tmp*/
/*No:LOCAL_NAME2.fz_iinaiv*/


T0* r180result_type(T180* C){
T0* R=NULL;
R=r178type((T178*)((C)->_local_var_list/*12*/),(C)->_rank/*8*/);
return R;
}
/*No:LOCAL_NAME2.is_result*/


void r180mapping_c_target(T180* C,T0* a1){
T0* _rt=NULL;
T6 _flag=0;
_flag=r25call_invariant_start(a1);
_rt=X54run_type(r180result_type(C));
/*[IF*/
if(X54is_reference(_rt)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='T';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X54id(a1));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\52';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
X54to_expanded(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if(X54is_reference(a1)){
X54to_reference(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:LOCAL_NAME2.can_be_dropped*/
/*No:LOCAL_NAME2.c_declare_for_old*/
/*No:LOCAL_NAME2.local_var_list*/
/*No:LOCAL_NAME2.dca_inline_argument*/
/*No:LOCAL_NAME2.compile_to_c*/
/*No:LOCAL_NAME2.isa_dca_inline_argument*/


void r180refer_to(T180* C,T0* a1,T0* a2,T2 a3){
C->_start_position=a1;
C->_local_var_list=a2;
C->_rank=a3;
}


void r180error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:LOCAL_NAME2.is_current*/


void r180mapping_c_arg(T180* C,T0* a1){
T0* _rt=NULL;
_rt=X54run_type(r180result_type(C));
/*[IF*/
if(X54is_reference(_rt)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
}
else{
X54to_expanded(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
 else if(X54is_reference(a1)){
X54to_reference(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
/*[IF*/
if(X54need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\46';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.6compile_to_c*/{T180* C1=C;
r25print_local((T25*)(oBC12cpp),r180to_string(C1));
}/*]*/
}
/*FI]*/
}
/*No:LOCAL_NAME2.is_void*/
/*No:LOCAL_NAME2.afd_check*/


void r387c_assertion_flag(T387* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r387c_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 r387c_define_opening(T387* C){
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*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]*/
r387c_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*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357compile_to_c((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r387c_define_closing(T387* 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(r387use_current(C)){
r25current_class_invariant((C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*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_7.use_current_state*/
/*No:RUN_FEATURE_7.fz_void*/


void r387default_mapping_procedure(T387* C){
r387default_mapping_function(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*No:RUN_FEATURE_7.address_of_c_define*/
/*No:RUN_FEATURE_7.ucs_false*/
/*No:RUN_FEATURE_7.is_static*/


T0* r387start_position(T387* C){
T0* R=NULL;
R=r290start_position((T290*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_7.c_initialize_locals_one_by_one*/


void r387mapping_name(T387* 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*/)),r387id(C));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_key((C)->_name/*16*/));
/*]*/
}


T6 r387use_current(T387* 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;
r387compute_use_current(C);
R=r387use_current(C);
}
 else {R=1;
}}
return R;
}


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


void r387c_define_with_body(T387* C,T0* a1){
r387define_prototype(C);
r387c_define_opening(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),a1);
/*]*/
r387c_define_closing(C);
/*[IF*/
{/*AT*//*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
}
/*FI]*/
r387c_frame_descriptor(C);
}


void r387routine_afd_check(T387* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r357afd_check((T357*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r215afd_check((T215*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}


void r387std_compute_use_current(T387* 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*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
/*AF*//*AE*/
/*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* r387run_class(T387* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_7.result_type*/
/*No:RUN_FEATURE_7.base_feature*/
/*No:RUN_FEATURE_7.ensure_assertion*/
/*No:RUN_FEATURE_7.static_value_mem*/


T6 r387is_exported_in(T387* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r387clients(C)),a1);
return R;
}


void r387default_mapping_function(T387* C){
T6 _tcbd=0;
T6 _uc=0;
T6 _no_check=0;
_no_check=r43no_check((T43*)(oBC12run_control));
_uc=r387use_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]*/
r387mapping_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_7.arguments*/
/*No:RUN_FEATURE_7.is_once_function*/
/*No:RUN_FEATURE_7.current_type*/
/*No:RUN_FEATURE_7.clients_memory*/


void r387add_client(T387* 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*)(r387run_class(C)),a1);
}
/*No:RUN_FEATURE_7.ucs_in_computation*/


void r387make(T387* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r387run_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);
r387initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_7.ucs_true*/
/*No:RUN_FEATURE_7.routine_body*/
/*No:RUN_FEATURE_7.name*/
/*No:RUN_FEATURE_7.c_prototype*/
/*No:RUN_FEATURE_7.afd_check*/


T0* r387clients(T387* 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=((T290*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T290*)((C)->_base_feature/*32*/))->_clients/*16*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


void r387c_define(T387* C){
T0* _bcn=NULL;
T0* _native=NULL;
T0* _bf=NULL;
_bf=(C)->_base_feature/*32*/;
_native=(((T290*)_bf))->_native/*40*/;
_bcn=((T64*)(((T63*)((((T290*)_bf))->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
X288c_define_procedure(_native,(T0*)C,_bcn,X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((((T290*)_bf))->_names/*8*/)),1)/*)*/));
}
/*No:RUN_FEATURE_7.us_copy*/


void r387once_result_in(T387* C,T0* a1){
r7extend(((T7*)a1),'o');
r290mapping_c_name_in((T290*)((C)->_base_feature/*32*/),a1);
}


void r387fall_down(T387* 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_7.rescue_compound*/
/*No:RUN_FEATURE_7.actuals_clients*/
/*No:RUN_FEATURE_7.us_result*/


void r387define_prototype(T387* 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=r387id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
/*[IF*/
{/*AT*/r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7extend((T7*)(((T0*)ms51_3077376)),'r');
r2append_in(_mem_id,((T0*)ms51_3077376));
X83mapping_c_in((C)->_name/*16*/,((T0*)ms51_3077376));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
/*[IF*/
if(_no_check){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_56460));
/*[IF*/
if((r387use_current(C))||(((C)->_arguments/*36*/)!=((void*)(NULL)))){
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r387use_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(!(r387use_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 r387put_tag(T387* 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*)(((T290*)((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*)(((T290*)((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_7.c_code*/
/*No:RUN_FEATURE_7.fz_00*/


void r387c_initialize_ds_one_by_one(T387* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_37325));
r387c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IF*/
if(r387use_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(r387start_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_7.ucs_not_computed*/
/*No:RUN_FEATURE_7.is_pre_computable*/
/*No:RUN_FEATURE_7.fz_12*/
/*No:RUN_FEATURE_7.collect_c_tmp*/


void r387c_frame_descriptor(T387* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_23640));
r387c_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*/)));
}/*]*/
/*]*/
r387put_tag(C);
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\54');
/*[IF*/
if(r387use_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_7.fz_15*/


T2 r387arg_count(T387* 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;
}
/*No:RUN_FEATURE_7.us_raise_exception*/
/*No:RUN_FEATURE_7.address_of_c_mapping*/


void r387mapping_c(T387* C){
T0* _bcn=NULL;
T0* _native=NULL;
T0* _bf=NULL;
_bf=(C)->_base_feature/*32*/;
_native=(((T290*)_bf))->_native/*40*/;
_bcn=((T64*)(((T63*)((((T290*)_bf))->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
X288c_mapping_procedure(_native,(T0*)C,_bcn,X83to_string(/*(IRF4.6first_name*/r85item(((T85*)((((T290*)_bf))->_names/*8*/)),1)/*)*/));
}


void r387initialize(T387* C){
T0* _n=NULL;
_n=X83to_string(/*(IRF4.6first_name*/r85item(((T85*)(((T290*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/);
C->_arguments=((T290*)((C)->_base_feature/*32*/))->_arguments/*20*/;
/*[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]*/
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
/*[IF*/
if(((((T0*)ms14_1812))==((void*)(X83to_string((C)->_name/*16*/))))&&(X54is_expanded((C)->_current_type/*4*/))){
}
else{
C->_require_assertion=r290run_require((T0*)C);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
C->_ensure_assertion=r290run_ensure((T0*)C);
}
/*FI]*/
/*[IF*/
if((((T0*)ms14_32955))==((void*)(_n))){
/*[IRF3.3set_used*/((((T363*)((T363*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_7.can_be_dropped*/


void r387external_prototype(T387* C,T0* a1){
T0* _t=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_12060));
_t=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if((_t)==((void*)(NULL))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
else{
X54c_type_for_external_in(_t,((T0*)ms51_3077376));
}
/*FI]*/
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r7append((T7*)(((T0*)ms51_3077376)),X289external_c_name(a1));
r7extend((T7*)(((T0*)ms51_3077376)),'\50');
/*[IF*/
if(X289use_current(a1)){
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');
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*36*/)==((void*)(NULL))){
/*[IF*/
if(!(X289use_current(a1))){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1776a));
}
/*FI]*/
}
else{
r187external_prototype_in((T187*)((C)->_arguments/*36*/),((T0*)ms51_3077376));
}
/*FI]*/
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_348));
r25swap_on_h((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
}
/*No:RUN_FEATURE_7.require_assertion*/


void r387compute_use_current(T387* C){
/*[IF*/
if(r290use_current((T290*)((C)->_base_feature/*32*/))){
C->_use_current_state=14;
}
else{
r387std_compute_use_current(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_7.local_vars*/


void r387c_frame_descriptor_name_in(T387* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r387id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}
/*No:E_PRECURSOR_FUNCTION.static_value*/
/*No:E_PRECURSOR_FUNCTION.is_static*/
/*No:E_PRECURSOR_FUNCTION.is_manifest_string*/
/*No:E_PRECURSOR_FUNCTION.start_position*/
/*No:E_PRECURSOR_FUNCTION.c_simple*/


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


T2 r175to_integer(T175* C){
T2 R=0;
r175error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:E_PRECURSOR_FUNCTION.use_current*/


T0* r175to_runnable(T175* C,T0* a1){
T0* R=NULL;
T0* _pn=NULL;
T0* _super=NULL;
T0* _wrf=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
_wrf=r22top_rf((T22*)(oBC12small_eiffel));
/*[IF*/
if((X51result_type(_wrf))==((void*)(NULL))){
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms175_368088);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_super=r175super_feature(C,_wrf);
if(NULL!=(_super))switch(((T0*)_super)->id) {
case 303: 
break;
default:
_super=NULL;
};_pn=r175precursor_name(/*X51name*/((T0*)(((T324*)_wrf))->_name/*16*/),_super);
{T375*n=malloc(sizeof(*n));
*n=M375;
r375make(n,a1,_pn,_super);
C->_run_feature=(T0*)n;
}
r175prepare_arguments(C,a1);
}
else{
{T175*n=malloc(sizeof(*n));
*n=M175;
r175make(n,(C)->_start_position/*4*/,(C)->_parent/*8*/,(C)->_arguments/*16*/);
R=(T0*)n;
}
R=r175to_runnable(((T175*)R),a1);
}
/*FI]*/
return R;
}


void r175compile_to_c_old(T175* C){
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
X149compile_to_c_old((C)->_arguments/*16*/);
}
/*FI]*/
}
/*No:E_PRECURSOR_FUNCTION.is_pre_computable*/


void r175collect_c_tmp(T175* C){
/*[IF*/
if(((C)->_run_feature/*20*/)!=((void*)(NULL))){
r375collect_c_tmp((T375*)((C)->_run_feature/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
X149collect_c_tmp((C)->_arguments/*16*/);
}
/*FI]*/
}
/*No:E_PRECURSOR_FUNCTION.fz_iinaiv*/


T0* r175result_type(T175* C){
T0* R=NULL;
R=((T375*)((C)->_run_feature/*20*/))->_result_type/*40*/;
return R;
}
/*No:E_PRECURSOR_FUNCTION.run_feature*/
/*No:E_PRECURSOR_FUNCTION.fz_bad_arguments*/
/*No:E_PRECURSOR_FUNCTION.is_result*/
/*No:E_PRECURSOR_FUNCTION.fatal_error*/
/*No:E_PRECURSOR_FUNCTION.nb_errors*/
/*No:E_PRECURSOR_FUNCTION.mapping_c_target*/
/*No:E_PRECURSOR_FUNCTION.arguments*/
/*No:E_PRECURSOR_FUNCTION.can_be_dropped*/


void r175c_declare_for_old(T175* C){
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
X149c_declare_for_old((C)->_arguments/*16*/);
}
/*FI]*/
}
/*No:E_PRECURSOR_FUNCTION.dca_inline_argument*/


void r175compile_to_c(T175* C){
r25push_precursor((T25*)(oBC12cpp),(C)->_run_feature/*20*/,(C)->_arguments/*16*/);
r375mapping_c((T375*)((C)->_run_feature/*20*/));
r25pop((T25*)(oBC12cpp));
}
/*No:E_PRECURSOR_FUNCTION.isa_dca_inline_argument*/
/*No:E_PRECURSOR_FUNCTION.current_type*/


T0* r175super_feature(T175* C,T0* a1){
T0* R=NULL;
T0* _pl=NULL;
T0* _wbc=NULL;
T0* _e_feature=NULL;
_e_feature=X51base_feature(a1);
_wbc=/*X93base_class*/((T0*)(((T199*)_e_feature))->_base_class/*4*/);
_pl=(((T63*)_wbc))->_parent_list/*40*/;
/*[IF*/
if((_pl)==((void*)(NULL))){
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms176_269232);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=r78precursor_for(((T78*)_pl),(T0*)C,a1);
}
/*FI]*/
return R;
}


T0* r175precursor_name(T0* a1,T0* a2){
T0* R=NULL;
{T374*n=malloc(sizeof(*n));
*n=M374;
r374refer_to(n,((T63*)(/*X93base_class*/((T0*)(((T199*)a2))->_base_class/*4*/)))->_id/*0*/,a1);
R=(T0*)n;
}
return R;
}


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


void r175make(T175* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_parent=a2;
C->_arguments=a3;
}
/*No:E_PRECURSOR_FUNCTION.is_current*/


void r175prepare_arguments(T175* C,T0* a1){
T0* _a=NULL;
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
_a=X149to_runnable((C)->_arguments/*16*/,a1);
/*[IF*/
if((_a)==((void*)(NULL))){
r175error(X149start_position((C)->_arguments/*16*/),((T0*)ms13_14714));
}
else{
C->_arguments=_a;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
X149match_with((C)->_arguments/*16*/,(C)->_run_feature/*20*/,a1);
}
/*FI]*/
}
 else if((((T375*)((C)->_run_feature/*20*/))->_arguments/*36*/)!=((void*)(NULL))){
r21add_position(r375start_position((T375*)((C)->_run_feature/*20*/)));
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms176_63936);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:E_PRECURSOR_FUNCTION.mapping_c_arg*/
/*No:E_PRECURSOR_FUNCTION.is_void*/
/*No:E_PRECURSOR_FUNCTION.parent*/


void r175afd_check(T175* C){
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
X149afd_check((C)->_arguments/*16*/);
}
/*FI]*/
}
/*No:TYPE_GENERIC.fz_null*/


void r274used_as_reference(T274* C){
/*[IF*/
if(r274is_expanded(C)){
r24used_as_reference((T24*)(r274run_class(C)));
}
/*FI]*/
}


T6 r274is_user_expanded(T274* C){
T6 R=0;
R=((T63*)(r274base_class(C)))->_is_expanded/*20*/;
return R;
}
/*No:TYPE_GENERIC.is_pointer*/


T0* r274to_runnable(T274* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
T0* _rgl=NULL;
T2 _i=0;
/*[IF*/
if(r274is_written_runnable(C)){
R=(T0*)C;
}
else{
_rgl=r261twin((T261*)((C)->_generic_list/*8*/));
_i=(((T261*)_rgl))->_upper/*8*/;
while (!((_i)==(0))) {
_t1=r261item(((T261*)_rgl),_i);
_t2=X54to_runnable(_t1,a1);
/*[IF*/
if(((_t2)==((void*)(NULL)))||(!(X54is_run_type(_t2)))){
r21add_type(_t1,((T0*)ms13_11472));
r21print_as_error((T21*)(oBC12eh));
_i=0;
}
else{
/*[IRF3.6put*/{T261* C1=((T261*)_rgl);
T0* b1=_t2;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_t2=X54run_type(_t2);
/*[IF*/
if(X54is_expanded(_t2)){
r24set_at_run_time((T24*)(X54run_class(_t2)));
}
/*FI]*/
_i=(_i)-(1);
}
{T274*n=malloc(sizeof(*n));
*n=M274;
r274make_runnable(n,(T0*)C,_rgl);
_rt=(T0*)n;
}
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
C->_run_type_memory=_rt;
R=(T0*)C;
}
else{
R=r274twin(C);
/*[IRF3.3set_run_type_memory*/((((T274*)(((T274*)R))))->_run_type_memory)=(_rt);
/*]*/
}
/*FI]*/
r274basic_checks((T274*)(r274run_type(((T274*)R))));
}
/*FI]*/
return R;
}


void r274gc_define1(T274* C){
/*[IF*/
if(r274is_reference(C)){
r274standard_gc_define1(C);
}
/*FI]*/
}


void r274gc_mark_in(T274* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(r274id(C),a1);
}
/*No:TYPE_GENERIC.c_header_pass2*/


void r274make_runnable(T274* C,T0* a1,T0* a2){
T0* _t=NULL;
T2 _i=0;
C->_base_class_name=(((T274*)a1))->_base_class_name/*4*/;
C->_generic_list=a2;
r7copy((T7*)(oBC274tmp_mark),((T64*)((C)->_base_class_name/*4*/))->_to_string/*0*/);
r7extend((T7*)(oBC274tmp_mark),'\133');
_i=1;
while (!((_i)>((((T261*)a2))->_upper/*8*/))) {
_t=r261item(((T261*)a2),_i);
r7append((T7*)(oBC274tmp_mark),X54run_time_mark(_t));
_i=(_i)+(1);
/*[IF*/
if((_i)<=((((T261*)a2))->_upper/*8*/)){
r7extend((T7*)(oBC274tmp_mark),'\54');
}
/*FI]*/
}
r7extend((T7*)(oBC274tmp_mark),'\135');
C->_written_mark=r84item(oBC274tmp_mark);
C->_run_type_memory=(T0*)C;
}


void r274gc_store_in(T274* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_2860));
r2append_in(r274id(C),a1);
}


T0* r274smallest_ancestor(T274* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X54run_type(a1);
/*[IF*/
if(X54is_none(a1)){
R=(T0*)C;
}
 else if(X54is_any(_rto)){
R=_rto;
}
 else if(X54is_a(_rto,r274run_type(C))){
R=(C)->_run_type_memory/*16*/;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(r274is_a((T274*)(r274run_type(C)),_rto)){
R=_rto;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X54is_generic(_rto)){
R=r274type_any();
}
else{
R=X54smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r274gc_info_nb_in(T274* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_15070));
r2append_in(r274id(C),a1);
}
/*No:TYPE_GENERIC.fz_bnga*/


T0* r274run_time_mark(T274* C){
T0* R=NULL;
/*[IF*/
if(r274is_run_type(C)){
R=((T274*)((C)->_run_type_memory/*16*/))->_written_mark/*12*/;
}
/*FI]*/
return R;
}


void r274standard_gc_define2(T274* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=r274run_class(C);
_rcid=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_11536));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_6480));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms54_410));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_667749));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_629541));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_7450784));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_14432));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r274gc_mark_in(C,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_254a));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_600));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
_gc_check_id=(r24is_tagged(((T24*)_rc)))&&(r43no_check((T43*)(oBC12run_control)));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_21692));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_972));
}
/*FI]*/
r24gc_mark_fixed_size(((T24*)_rc),0,((T0*)ms54_3077376));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_276));
}
/*FI]*/
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1776a));
r7extend((T7*)(((T0*)ms54_785024a)),'\40');
r274gc_align_mark_in(C,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_14720));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms54_603));
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_3077376)))))->_count)=(0);
/*]*/
r24gc_align_mark_fixed_size(((T24*)_rc),((T0*)ms54_3077376));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms54_5436));
r2append_in(_rcid,((T0*)ms54_785024a));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms54_455742));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_78450));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_345762));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1580));
r25put_extern5((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)),'\52');
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_1008));
r2append_in(_rcid,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms13_4410));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms13_410));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_924));
/*[IF*/
if(((T330*)(oBC12gc_handler))->_info_flag/*4*/){
r274gc_info_nb_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_660));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_759));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1500));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_3900));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_13425));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11209));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_39879));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_2460));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_752));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_104196));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11970));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11264));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_55955));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790aa));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214aa));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360aa));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_32340));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1433339));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_52000));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1305));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790a));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214a));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360a));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_76164));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1800));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_16175));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_15246));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790));
r274gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214));
r274gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_272a));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_34360));
r274gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_25650));
/*[IF*/
if(r274need_c_struct(C)){
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_14168));
r2append_in(_rcid,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_12699));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
}


void r274gc_info_in(T274* C,T0* a1){
/*[IF*/
if(r274is_reference(C)){
r274standard_gc_info_in(C,a1);
}
/*FI]*/
}


void r274gc_define2(T274* C){
/*[IF*/
if(r274is_reference(C)){
r274standard_gc_define2(C);
}
else{
r274standard_gc_define2_for_expanded(C);
}
/*FI]*/
}
/*No:TYPE_GENERIC.is_like_feature*/


void r274gc_free_in(T274* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_8645));
r2append_in(r274id(C),a1);
}


T6 r274is_a(T274* C,T0* a1){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
T2 _i=0;
/*[IF*/
if(X54is_none(a1)){
}
 else if((r274run_class(C))==((void*)(X54run_class(a1)))){
R=1;
}
 else if(X54is_generic(a1)){
/*[IF*/
if((r274base_class(C))==((void*)(X54base_class(a1)))){
R=1;
_i=((T261*)((C)->_generic_list/*8*/))->_upper/*8*/;
while (!((!(R))||((_i)==(0)))) {
_t1=X54run_type(r261item((T261*)((C)->_generic_list/*8*/),_i));
_t2=X54run_type(r261item((T261*)(X54generic_list(a1)),_i));
/*[IF*/
if(X54is_a(_t1,_t2)){
_i=(_i)-(1);
}
else{
R=0;
/*[IRF3.6append*/{T0* b1=((T0*)ms13_28959);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
}
/*FI]*/
}
}
 else if(r63is_subclass_of((T63*)(r274base_class(C)),X54base_class(a1))){
R=r63is_a_vncg((T63*)(r274base_class(C)),(T0*)C,a1);
}
/*FI]*/
}
else{
/*[IF*/
if(r63is_subclass_of((T63*)(r274base_class(C)),X54base_class(a1))){
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms274_17216));
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.written_mark*/


void r274c_initialize(T274* C){
/*[IF*/
if(r274is_expanded((T274*)((C)->_run_type_memory/*16*/))){
r274c_initialize_expanded(C);
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1300));
/*]*/
}
/*FI]*/
}


void r274make(T274* C,T0* a1,T0* a2){
T0* _t=NULL;
T2 _i=0;
C->_base_class_name=a1;
C->_generic_list=a2;
r7copy((T7*)(oBC274tmp_mark),(((T64*)a1))->_to_string/*0*/);
r7extend((T7*)(oBC274tmp_mark),'\133');
_i=1;
while (!((_i)>((((T261*)a2))->_upper/*8*/))) {
_t=r261item(((T261*)a2),_i);
r7append((T7*)(oBC274tmp_mark),X54written_mark(_t));
_i=(_i)+(1);
/*[IF*/
if((_i)<=((((T261*)a2))->_upper/*8*/)){
r7extend((T7*)(oBC274tmp_mark),'\54');
}
/*FI]*/
}
r7extend((T7*)(oBC274tmp_mark),'\135');
C->_written_mark=r84item(oBC274tmp_mark);
}


void r274demangling_in(T274* C,T0* a1){
/*[IF*/
if(r274is_reference(C)){
r7extend(((T7*)a1),'R');
}
else{
r7extend(((T7*)a1),'E');
}
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r274run_time_mark(C));
}


T2 r274space_for_variable(T274* C){
T2 R=0;
/*[IF*/
if(r274is_reference(C)){
R=r274space_for_pointer();
}
else{
R=r274standard_space_for_object(C);
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.generic_list*/
/*No:TYPE_GENERIC.fz_se_cmpt*/
/*No:TYPE_GENERIC.is_formal_generic*/
/*No:TYPE_GENERIC.body*/


void r274c_type_for_external_in(T274* C,T0* a1){
/*[IF*/
if(r274is_reference(C)){
r7append(((T7*)a1),((T0*)ms13_1776a));
r7extend(((T7*)a1),'\52');
}
else{
r274c_type_for_result_in(C,a1);
}
/*FI]*/
}


void r274c_type_for_argument_in(T274* C,T0* a1){
/*[IF*/
if(r274is_reference(C)){
r7append(((T7*)a1),((T0*)ms13_540));
}
 else if(r274is_dummy_expanded(C)){
r7append(((T7*)a1),((T0*)ms13_1011));
}
else{
r7extend(((T7*)a1),'T');
r2append_in(r274id(C),a1);
r7extend(((T7*)a1),'\52');
}
/*FI]*/
}
/*No:TYPE_GENERIC.fz_printf*/


T0* r274run_type(T274* C){
T0* R=NULL;
/*[IF*/
if(r274is_run_type(C)){
R=(C)->_run_type_memory/*16*/;
}
/*FI]*/
return R;
}
/*No:TYPE_GENERIC.fz_gc_sweep*/


void r274c_frame_descriptor(T274* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
if(r274is_reference(C)){
r7extend((T7*)(oBC12c_frame_descriptor_format),'R');
}
else{
r7extend((T7*)(oBC12c_frame_descriptor_format),'E');
}
/*FI]*/
r2append_in(r274id(C),oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}
/*No:TYPE_GENERIC.fz_t0_star*/


void r274c_header_pass3(T274* C){
/*[IF*/
if(r274is_expanded(C)){
/*[IF*/
if(r274need_c_struct(C)){
r274standard_c_struct(C);
}
/*FI]*/
r274standard_c_object_model(C);
}
/*FI]*/
}


void r274gc_call_new_in(T274* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(r274id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_GENERIC.is_boolean*/

