/*
-- 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_BIT_REF.type_bit*/
/*No:TYPE_BIT_REF.fz_null*/
/*No:TYPE_BIT_REF.fz_void*/
/*No:TYPE_BIT_REF.start_position*/


void r373standard_c_print_function(T373* C){
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r24c_print_function((T24*)(r373run_class(C)));
}
/*FI]*/
}
/*No:TYPE_BIT_REF.used_as_reference*/


T2 r373id(T373* C){
T2 R=0;
R=((T24*)(r373run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_REF.is_user_expanded*/
/*No:TYPE_BIT_REF.is_pointer*/
/*No:TYPE_BIT_REF.to_runnable*/
/*No:TYPE_BIT_REF.c_initialize_in*/
/*No:TYPE_BIT_REF.gc_define1*/
/*No:TYPE_BIT_REF.to_reference*/


void r373gc_mark_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(r373id(C),a1);
}


T0* r373run_class(T373* C){
T0* R=NULL;
R=r22run_class(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
return R;
}


void r373c_header_pass2(T373* C){
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024)),'S');
r2append_in(r373id(C),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms373_11313));
r2append_in(X53id((C)->_type_bit/*4*/),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms373_5610));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms373_5520));
r2append_in(r373id(C),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms373_254));
r2append_in(X53id((C)->_type_bit/*4*/),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms373_2035));
r25put_c_heading((T25*)(oBC12cpp),((T0*)ms54_785024));
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
r330allocation((T330*)(oBC12gc_handler),r373run_class(C));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms373_23095));
/*]*/
r25swap_on_h((T25*)(oBC12cpp));
}


void r373c_header_pass4(T373* C){
T0* _rc=NULL;
T2 _mem_id=0;
_rc=r373run_class(C);
_mem_id=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms13_5537));
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));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms13_144));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
/*[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));
r7extend((T7*)(((T0*)ms54_785024)),'\75');
r7extend((T7*)(((T0*)ms54_785024)),'\173');
/*[IF*/
if(r24is_tagged(((T24*)_rc))){
r2append_in(_mem_id,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\54');
}
/*FI]*/
X53c_initialize_in((C)->_type_bit/*4*/,((T0*)ms54_785024));
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));
/*]*/
r25swap_on_h((T25*)(oBC12cpp));
r373standard_c_print_function(C);
}
/*No:TYPE_BIT_REF.is_like_current*/
/*No:TYPE_BIT_REF.is_bit*/
/*No:TYPE_BIT_REF.fz_extern*/


void r373gc_store_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_2860));
r2append_in(r373id(C),a1);
}


T0* r373smallest_ancestor(T373* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X54run_time_mark(a1)))){
R=(T0*)C;
}
else{
R=r373type_any();
}
/*FI]*/
return R;
}


void r373gc_info_nb_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_15070));
r2append_in(r373id(C),a1);
}
/*No:TYPE_BIT_REF.fz_eq_h*/
/*No:TYPE_BIT_REF.us_bit_n_ref*/
/*No:TYPE_BIT_REF.run_time_mark*/
/*No:TYPE_BIT_REF.is_expanded*/


void r373standard_gc_define2(T373* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=r373run_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_629541));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_7450784));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r373gc_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');
r373gc_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');
r373gc_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*/){
r373gc_info_nb_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_660));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_759));
r373gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1500));
r373gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_3900));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_13425));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11209));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_39879));
r373gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_2460));
r373gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_752));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_104196));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11970));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11264));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_55955));
r373gc_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790aa));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214aa));
r373gc_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_32340));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1433339));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_52000));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1305));
r373gc_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790a));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214a));
r373gc_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_76164));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1800));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r373gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_16175));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_15246));
r373gc_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));
r373gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790));
r373gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214));
r373gc_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));
r373gc_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_BIT_REF.gc_info_in*/
/*No:TYPE_BIT_REF.gc_define2*/
/*No:TYPE_BIT_REF.is_like_feature*/
/*No:TYPE_BIT_REF.fz_dot*/


void r373gc_free_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_8645));
r2append_in(r373id(C),a1);
}


T6 r373is_a(T373* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X54run_time_mark(a1)))){
R=1;
}
else{
R=r63is_subclass_of((T63*)(r373base_class(C)),X54base_class(a1));
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_REF.c_initialize*/
/*No:TYPE_BIT_REF.is_character*/
/*No:TYPE_BIT_REF.written_mark*/


void r373make(T373* C,T0* a1){
C->_type_bit=a1;
C->_run_time_mark=((T0*)ms373_1060);
r2append_in(X53nb((C)->_type_bit/*4*/),(C)->_run_time_mark/*12*/);
r7append((T7*)((C)->_run_time_mark/*12*/),((T0*)ms373_1052));
C->_run_time_mark=r84item((C)->_run_time_mark/*12*/);
C->_written_mark=(C)->_run_time_mark/*12*/;
}


void r373demangling_in(T373* C,T0* a1){
/*[IF*/
{/*AT*/r7extend(((T7*)a1),'R');
}
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),(C)->_run_time_mark/*12*/);
}


void r373standard_gc_define1(T373* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r373run_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');
r373gc_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');
r373gc_store_left_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms54_2420));
r373gc_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');
r373gc_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');
r373gc_info_nb_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
}
/*FI]*/
}
/*No:TYPE_BIT_REF.fz_typedef*/


void r373fatal_error_generic_list(T373* C){
r21add_type((T0*)C,((T0*)ms54_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*No:TYPE_BIT_REF.is_array*/
/*No:TYPE_BIT_REF.fz_int*/
/*No:TYPE_BIT_REF.tmp_string*/
/*No:TYPE_BIT_REF.is_dummy_expanded*/
/*No:TYPE_BIT_REF.space_for_variable*/
/*No:TYPE_BIT_REF.to_expanded*/


T0* r373generic_list(T373* C){
T0* R=NULL;
r373fatal_error_generic_list(C);
return R;
}


T0* r373base_class(T373* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r373base_class_name();
/*[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 r373cast_to_ref(T373* C){
r373cast_to_ref((T373*)(/*(IRF4.4run_type*/((T0*)(C))/*)*/));
}
int fBC373base_class_name=0;
T0*oBC373base_class_name=NULL;


T0* r373base_class_name(void){
if(fBC373base_class_name==0){
fBC373base_class_name=1;
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,((T0*)ms14_9369),NULL);
oBC373base_class_name=(T0*)n;
}
}
return oBC373base_class_name;}
/*No:TYPE_BIT_REF.is_formal_generic*/


T6 r373is_a_in(T373* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_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_BIT_REF.body*/


T0* r373look_up_for(T373* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r373base_class(C)),a1,a2);
return R;
}
/*No:TYPE_BIT_REF.fz_00*/
/*No:TYPE_BIT_REF.fz_10*/


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


void r373c_type_for_target_in(T373* C,T0* a1){
r7extend(((T7*)a1),'T');
r2append_in(r373id(C),a1);
r7extend(((T7*)a1),'\52');
}
/*No:TYPE_BIT_REF.c_type_for_result_in*/
/*No:TYPE_BIT_REF.run_type*/
/*No:TYPE_BIT_REF.fz_gc_sweep*/
/*No:TYPE_BIT_REF.expanded_initializer*/


void r373c_frame_descriptor(T373* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
{/*AT*/r7extend((T7*)(oBC12c_frame_descriptor_format),'R');
}
/*FI]*/
r2append_in(r373id(C),oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}
/*No:TYPE_BIT_REF.has_creation*/
/*No:TYPE_BIT_REF.fz_t0_star*/


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


void r373gc_call_new_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(r373id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_BIT_REF.fz_new*/
/*No:TYPE_BIT_REF.is_boolean*/


void r373mapping_cast(T373* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_15696)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\50');
r373c_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_BIT_REF.is_generic*/
/*No:TYPE_BIT_REF.fz_struct*/
/*No:TYPE_BIT_REF.is_real*/
/*No:TYPE_BIT_REF.need_c_struct*/
/*No:TYPE_BIT_REF.is_any*/


void r373standard_gc_info_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_7104));
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\42');
r7append(((T7*)a1),(C)->_run_time_mark/*12*/);
r7append(((T7*)a1),((T0*)ms13_6030));
r373gc_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');
r373gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_6030));
r373gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_348));
}
/*No:TYPE_BIT_REF.header*/
/*No:TYPE_BIT_REF.is_basic_eiffel_expanded*/
/*No:TYPE_BIT_REF.fz_gc_mark*/


void r373gc_store_chunk_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_19239));
r2append_in(r373id(C),a1);
}


T0* r373type_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_BIT_REF.need_gc_mark_function*/


T6 r373is_native_array(T373* 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_BIT_REF.is_string*/


void r373gc_align_mark_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_24804));
r2append_in(r373id(C),a1);
}
/*No:TYPE_BIT_REF.is_integer*/
/*No:TYPE_BIT_REF.is_anchored*/
/*No:TYPE_BIT_REF.is_run_type*/
/*No:TYPE_BIT_REF.is_reference*/


void r373standard_just_before_gc_mark_in(T373* C,T0* a1){
r373gc_free_in(C,a1);
r7extend(((T7*)a1),'\75');
r7append(((T7*)a1),((T0*)ms13_1300));
r7append(((T7*)a1),((T0*)ms13_144));
}
/*No:TYPE_BIT_REF.is_none*/
/*No:TYPE_BIT_REF.fz_inako*/
/*No:TYPE_BIT_REF.fz_c_void_args*/
/*No:TYPE_BIT_REF.is_like_argument*/
/*No:TYPE_BIT_REF.just_before_gc_mark_in*/


void r373gc_store_left_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_17320));
r2append_in(r373id(C),a1);
}
/*No:TYPE_BIT_REF.mapping_cast_memory*/
/*No:TYPE_BIT_REF.fz_gc*/
/*No:TYPE_BIT_REF.is_double*/


void r373standard_c_typedef(T373* C){
T2 _mem_id=0;
_mem_id=r373id(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));
/*]*/
}
/*No:TYPE_REF_TO_EXP.fz_null*/
/*No:TYPE_REF_TO_EXP.fz_void*/
/*No:TYPE_REF_TO_EXP.start_position*/
/*No:TYPE_REF_TO_EXP.used_as_reference*/
/*No:TYPE_REF_TO_EXP.id*/
/*No:TYPE_REF_TO_EXP.is_user_expanded*/
/*No:TYPE_REF_TO_EXP.is_pointer*/
/*No:TYPE_REF_TO_EXP.to_runnable*/
/*No:TYPE_REF_TO_EXP.c_initialize_in*/
/*No:TYPE_REF_TO_EXP.gc_define1*/
/*No:TYPE_REF_TO_EXP.to_reference*/


void r378gc_mark_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}
/*No:TYPE_REF_TO_EXP.run_class*/
/*No:TYPE_REF_TO_EXP.c_header_pass2*/


void r378c_header_pass4(T378* C){
T2 _mem_id=0;
T0* _rc=NULL;
r24c_header_pass4((T24*)(X54run_class((C)->_expanded_type/*12*/)));
_rc=(C)->_run_class/*4*/;
_mem_id=(((T24*)_rc))->_id/*4*/;
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms13_5600));
r7extend((T7*)(((T0*)ms54_785024)),'S');
r2append_in(_mem_id,((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms378_11313));
r2append_in(X54id((C)->_expanded_type/*12*/),((T0*)ms54_785024));
r7append((T7*)(((T0*)ms54_785024)),((T0*)ms378_5640));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_785024));
/*]*/
/*[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);
/*]*/
r7extend((T7*)(((T0*)ms54_785024)),'\173');
r2append_in(_mem_id,((T0*)ms54_785024));
r7extend((T7*)(((T0*)ms54_785024)),'\54');
r24c_object_model_in((T24*)(X54run_class((C)->_expanded_type/*12*/)),((T0*)ms54_785024));
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));
/*]*/
r25swap_on_h((T25*)(oBC12cpp));
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms378_20449));
r2append_in(_mem_id,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms378_254));
r2append_in(_mem_id,((T0*)ms54_785024a));
r7append((T7*)(((T0*)ms54_785024a)),((T0*)ms378_984));
r7copy((T7*)(((T0*)ms54_3077376)),((T0*)ms378_98256));
r7append((T7*)(((T0*)ms54_3077376)),(C)->_written_mark/*8*/);
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms378_532194));
r2append_in(X54id((C)->_expanded_type/*12*/),((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms378_127538));
r25put_c_function((T25*)(oBC12cpp),((T0*)ms54_785024a),((T0*)ms54_3077376));
}
/*FI]*/
}
/*No:TYPE_REF_TO_EXP.is_like_current*/
/*No:TYPE_REF_TO_EXP.is_bit*/


void r378gc_store_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_2860));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}


T0* r378smallest_ancestor(T0* a1){
T0* R=NULL;
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms378_87172);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
return R;
}
/*No:TYPE_REF_TO_EXP.expanded_type*/
/*No:TYPE_REF_TO_EXP.fatal_error*/


void r378gc_info_nb_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_15070));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}
/*No:TYPE_REF_TO_EXP.fz_eq_h*/
/*No:TYPE_REF_TO_EXP.run_time_mark*/
/*No:TYPE_REF_TO_EXP.is_expanded*/


void r378standard_gc_define2(T378* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=(C)->_run_class/*4*/;
_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_629541));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_7450784));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r378gc_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');
r378gc_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');
r378gc_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*/){
r378gc_info_nb_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_660));
}
/*FI]*/
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_759));
r378gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1500));
r378gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_3900));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_13425));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11209));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_39879));
r378gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_2460));
r378gc_store_left_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_752));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_104196));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11970));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11264));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_55955));
r378gc_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790aa));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214aa));
r378gc_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_32340));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1433339));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_52000));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1305));
r378gc_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790a));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214a));
r378gc_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_76164));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_1800));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms13_144));
r378gc_free_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_16175));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_15246));
r378gc_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));
r378gc_store_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_9790));
r378gc_store_chunk_in(C,((T0*)ms54_3077376));
r7append((T7*)(((T0*)ms54_3077376)),((T0*)ms54_11214));
r378gc_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));
r378gc_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_REF_TO_EXP.gc_info_in*/
/*No:TYPE_REF_TO_EXP.gc_define2*/
/*No:TYPE_REF_TO_EXP.is_like_feature*/
/*No:TYPE_REF_TO_EXP.fz_dot*/


void r378gc_free_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_8645));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}


T6 r378is_a(T378* C,T0* a1){
T6 R=0;
/*[IF*/
if((X54run_time_mark(a1))!=((void*)(X54run_time_mark((C)->_expanded_type/*12*/)))){
R=X54is_a((C)->_expanded_type/*12*/,a1);
}
else{
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_REF_TO_EXP.written_mark*/
/*No:TYPE_REF_TO_EXP.c_initialize*/
/*No:TYPE_REF_TO_EXP.is_character*/


void r378make(T378* C,T0* a1){
C->_expanded_type=a1;
r7copy((T7*)(((T0*)ms54_785024)),((T0*)ms378_2610));
r7append((T7*)(((T0*)ms54_785024)),X54run_time_mark(a1));
C->_written_mark=r84item(((T0*)ms54_785024));
C->_run_class=r22run_class((T0*)C);
r24set_at_run_time((T24*)((C)->_run_class/*4*/));
}


void r378demangling_in(T378* C,T0* a1){
/*[IF*/
{/*AT*/r7extend(((T7*)a1),'R');
}
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),/*(IRF4.3run_time_mark*/(C)->_written_mark/*8*//*)*/);
}


void r378standard_gc_define1(T378* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=(C)->_run_class/*4*/;
_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');
r378gc_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');
r378gc_store_left_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
r7copy((T7*)(((T0*)ms54_785024a)),((T0*)ms54_2420));
r378gc_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');
r378gc_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');
r378gc_info_nb_in(C,((T0*)ms54_785024a));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms54_785024a),'0');
}
/*FI]*/
}
/*No:TYPE_REF_TO_EXP.fz_typedef*/
/*No:TYPE_REF_TO_EXP.is_array*/
/*No:TYPE_REF_TO_EXP.fz_int*/
/*No:TYPE_REF_TO_EXP.tmp_string*/
/*No:TYPE_REF_TO_EXP.is_dummy_expanded*/
/*No:TYPE_REF_TO_EXP.space_for_variable*/
/*No:TYPE_REF_TO_EXP.to_expanded*/


T0* r378generic_list(T378* C){
T0* R=NULL;
R=X54generic_list((C)->_expanded_type/*12*/);
return R;
}


T0* r378base_class(T378* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r378base_class_name(C);
/*[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 r378cast_to_ref(T378* C){
X54cast_to_ref(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
}


T0* r378base_class_name(T378* C){
T0* R=NULL;
R=X54base_class_name((C)->_expanded_type/*12*/);
return R;
}
/*No:TYPE_REF_TO_EXP.is_formal_generic*/


T6 r378is_a_in(T378* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_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_REF_TO_EXP.body*/


T0* r378look_up_for(T378* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r378base_class(C)),a1,a2);
return R;
}
/*No:TYPE_REF_TO_EXP.fz_00*/
/*No:TYPE_REF_TO_EXP.fz_10*/


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


void r378c_type_for_target_in(T378* C,T0* a1){
r7extend(((T7*)a1),'T');
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
r7extend(((T7*)a1),'\52');
}
/*No:TYPE_REF_TO_EXP.c_type_for_result_in*/
/*No:TYPE_REF_TO_EXP.run_type*/
/*No:TYPE_REF_TO_EXP.fz_gc_sweep*/
/*No:TYPE_REF_TO_EXP.expanded_initializer*/


void r378c_frame_descriptor(T378* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
{/*AT*/r7extend((T7*)(oBC12c_frame_descriptor_format),'R');
}
/*FI]*/
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}
/*No:TYPE_REF_TO_EXP.has_creation*/
/*No:TYPE_REF_TO_EXP.fz_t0_star*/


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


void r378gc_call_new_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_REF_TO_EXP.fz_new*/
/*No:TYPE_REF_TO_EXP.is_boolean*/


void r378mapping_cast(T378* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_15696)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\50');
r378c_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));
/*]*/
}


T6 r378is_generic(T378* C){
T6 R=0;
R=X54is_generic((C)->_expanded_type/*12*/);
return R;
}
/*No:TYPE_REF_TO_EXP.fz_struct*/
/*No:TYPE_REF_TO_EXP.is_real*/
/*No:TYPE_REF_TO_EXP.need_c_struct*/
/*No:TYPE_REF_TO_EXP.is_any*/


void r378standard_gc_info_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_7104));
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\42');
r7append(((T7*)a1),/*(IRF4.3run_time_mark*/(C)->_written_mark/*8*//*)*/);
r7append(((T7*)a1),((T0*)ms13_6030));
r378gc_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');
r378gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_6030));
r378gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms13_348));
}
/*No:TYPE_REF_TO_EXP.header*/
/*No:TYPE_REF_TO_EXP.is_basic_eiffel_expanded*/
/*No:TYPE_REF_TO_EXP.fz_gc_mark*/


void r378gc_store_chunk_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_19239));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}
/*No:TYPE_REF_TO_EXP.need_gc_mark_function*/


T6 r378is_native_array(T378* 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_REF_TO_EXP.is_string*/


void r378gc_align_mark_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_24804));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}
/*No:TYPE_REF_TO_EXP.is_integer*/
/*No:TYPE_REF_TO_EXP.is_anchored*/
/*No:TYPE_REF_TO_EXP.is_run_type*/
/*No:TYPE_REF_TO_EXP.is_reference*/


void r378standard_just_before_gc_mark_in(T378* C,T0* a1){
r378gc_free_in(C,a1);
r7extend(((T7*)a1),'\75');
r7append(((T7*)a1),((T0*)ms13_1300));
r7append(((T7*)a1),((T0*)ms13_144));
}
/*No:TYPE_REF_TO_EXP.is_none*/
/*No:TYPE_REF_TO_EXP.fz_inako*/
/*No:TYPE_REF_TO_EXP.fz_c_void_args*/
/*No:TYPE_REF_TO_EXP.is_like_argument*/
/*No:TYPE_REF_TO_EXP.just_before_gc_mark_in*/


void r378gc_store_left_in(T378* C,T0* a1){
r7append(((T7*)a1),((T0*)ms54_17320));
r2append_in(/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/,a1);
}
/*No:TYPE_REF_TO_EXP.mapping_cast_memory*/
/*No:TYPE_REF_TO_EXP.fz_gc*/
/*No:TYPE_REF_TO_EXP.is_double*/


void r378standard_c_typedef(T378* C){
T2 _mem_id=0;
_mem_id=/*(IRF4.6id*/(((T24*)((C)->_run_class/*4*/)))->_id/*4*//*)*/;
/*[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));
/*]*/
}
/*No:CALL_INFIX_TIMES.static_value*/
/*No:CALL_INFIX_TIMES.call_proc_call_c2c*/
/*No:CALL_INFIX_TIMES.feature_name*/


void r136finalize(T136* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(C)->_run_feature/*16*/;
_rc=X54run_class(/*X51current_type*/((T0*)(((T324*)_rf))->_current_type/*4*/));
C->_run_feature=r24dynamic((T24*)(r328first((T328*)((((T24*)_rc))->_running/*12*/))),_rf);
}
/*No:CALL_INFIX_TIMES.us_muls*/


T6 r136is_static(T136* C){
T6 R=0;
/*[IF*/
if(X54is_integer(r136result_type(C))){
/*[IF*/
if((X56is_static((C)->_target/*4*/))&&(X56is_static(r136arg1(C)))){
R=1;
C->_static_value_mem=(X56static_value((C)->_target/*4*/))*(X56static_value(r136arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_TIMES.is_manifest_string*/


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


T0* r136add_comment(T136* 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 r136to_integer(T136* C){
T2 R=0;
r136error(r136start_position(C),((T0*)ms13_45846));
return R;
}


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


T0* r136to_runnable(T136* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r136runnable_expression((C)->_target/*4*/,a1);
_a=r136runnable_args((C)->_arguments/*8*/,a1);
_tt=X56result_type(_t);
_at=X56result_type(r136arg1(C));
/*[IF*/
{/*AT*//*[IF*/
if(X54is_real(_at)){
/*[IF*/
if(X54is_integer(_tt)){
_tbee=X54run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 270: case 268: case 266: case 267: case 271: case 264: 
break;
default:
_tbee=NULL;
};{T377*n=malloc(sizeof(*n));
*n=M377;
r377make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X54is_double(_at)){
/*[IF*/
if((X54is_integer(_tt))||(X54is_real(_tt))){
_tbee=X54run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 270: case 268: case 266: case 267: case 271: case 264: 
break;
default:
_tbee=NULL;
};{T377*n=malloc(sizeof(*n));
*n=M377;
r377make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r136run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r136run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T136*n=malloc(sizeof(*n));
*n=M136;
r136with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


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


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


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


void r136with(T136* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r136run_feature_match(C,a5);
}
/*No:CALL_INFIX_TIMES.is_result*/
/*No:CALL_INFIX_TIMES.fatal_error*/


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


void r136run_feature_match(T136* C,T0* a1){
r136run_feature_has_result(C);
X149match_with((C)->_arguments/*8*/,(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_TIMES.arguments*/


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


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


T0* r136arg1(T136* C){
T0* R=NULL;
R=/*X149first*/((T0*)/*(IRF4.3first*/((T149*)((C)->_arguments/*8*/))->_first_one/*4*//*)*/);
return R;
}


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


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


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


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


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


T0* r136operator(void){
T0* R=NULL;
R=((T0*)ms14_43);
return R;
}


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


void r149make_n(T149* C,T0* a1,T0* a2){
C->_first_one=a1;
C->_remainder=a2;
}


T6 r149is_static(T149* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r149count(C);
while (!((!(R))||((_i)==(0)))) {
R=X56is_static(r149expression(C,_i));
_i=(_i)-(1);
}
return R;
}


T0* r149start_position(T149* C){
T0* R=NULL;
R=X56start_position(/*(IRF4.3first*/(C)->_first_one/*4*//*)*/);
return R;
}
/*No:EFFECTIVE_ARG_LIST.em1*/
/*No:EFFECTIVE_ARG_LIST.em2*/


T6 r149use_current(T149* C){
T6 R=0;
T2 _i=0;
_i=r149count(C);
while (!((R)||((_i)==(0)))) {
R=X56use_current(r149expression(C,_i));
_i=(_i)-(1);
}
return R;
}
/*No:EFFECTIVE_ARG_LIST.first_one*/


T0* r149to_runnable(T149* C,T0* a1){
T0* R=NULL;
T0* _e2=NULL;
T0* _e1=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
_i=r149count(C);
while (!((_i)==(0))) {
_e1=r149expression(C,_i);
_e2=X56to_runnable(_e1,(C)->_current_type/*12*/);
/*[IF*/
if((_e2)==((void*)(NULL))){
r149error(X56start_position(_e1),((T0*)ms149_16515));
}
 else if((_e1)!=((void*)(_e2))){
r149put(C,_e2,_i);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
 else if((X54run_class(a1))==((void*)(r149run_class(C)))){
R=(T0*)C;
}
else{
{T149*n=malloc(sizeof(*n));
*n=M149;
r149from_model(n,(T0*)C);
R=(T0*)n;
}
R=X149to_runnable(R,a1);
}
/*FI]*/
return R;
}


void r149dca_inline(T149* C,T0* a1){
T2 _up=0;
T2 _i=0;
_up=r149count(C);
_i=1;
while (!((_i)>(_up))) {
r149dca_inline_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[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]*/
}
}


void r149compile_to_c_old(T149* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r149count(C);
while (!((_i)>(_c))) {
X56compile_to_c_old(r149expression(C,_i));
_i=(_i)+(1);
}
}


T6 r149is_pre_computable(T149* C){
T6 R=0;
T2 _i=0;
_i=r149count(C);
R=1;
while (!((!(R))||((_i)==(0)))) {
R=X56is_pre_computable(r149expression(C,_i));
_i=(_i)-(1);
}
return R;
}


void r149collect_c_tmp(T149* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r149count(C);
while (!((_i)>(_c))) {
X56collect_c_tmp(r149expression(C,_i));
_i=(_i)+(1);
}
}


void r149match_with(T149* C,T0* a1,T0* a2){
T0* _ft=NULL;
T0* _at=NULL;
T0* _e=NULL;
T2 _i=0;
T0* _fal=NULL;
_fal=X51arguments(a1);
/*[IF*/
if((_fal)==((void*)(NULL))){
r21add_position(X51start_position(a1));
r149error(r149start_position(C),((T0*)ms149_36576));
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0))&&((/*(IRF4.6count*/(((T191*)((((T187*)_fal))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(r149count(C)))){
r21add_position(r187start_position(((T187*)_fal)));
r149error(r149start_position(C),((T0*)ms149_36576));
}
/*FI]*/
_i=r149count(C);
while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)>(0)))) {
_e=r149expression(C,_i);
_at=X56result_type(_e);
_ft=r187type(((T187*)_fal),_i);
/*[IF*/
if(X56is_void(_e)){
/*[IF*/
if(X54is_expanded(_ft)){
r21add_position(X56start_position(_e));
r149error(X54start_position(_ft),((T0*)ms149_89856));
}
/*FI]*/
}
 else if(X54is_like_current(_ft)){
/*[IF*/
if(X56is_current(_e)){
}
 else if(X54is_a(X54run_type(_at),X54run_type(_ft))){
/*[IF*/
if(X54is_expanded(X54run_type(_at))){
}
 else if(X54is_a(X54run_type(_at),X54run_type(_ft))){
}
else{
r21add_position(X56start_position(_e));
r149error(X54start_position(_ft),((T0*)ms149_35448));
}
/*FI]*/
}
else{
r21add_position(X56start_position(_e));
r149error(X54start_position(_ft),((T0*)ms149_35448));
}
/*FI]*/
}
 else if(X54is_like_feature(_ft)){
/*[IF*/
if(X54is_a(X54run_type(_at),X54run_type(_ft))){
}
else{
r21add_position(X56start_position(_e));
r149error(X54start_position(_ft),((T0*)ms149_40794));
}
/*FI]*/
}
 else if(r149is_like_argument(C,_e,_at,_ft)){
}
 else if(X54is_a(_at,_ft)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
_at=X54to_runnable(_at,a2);
/*[IF*/
if(!(X54is_a(_at,_ft))){
r149error(X56start_position(_e),((T0*)ms149_99792));
}
/*FI]*/
}
/*FI]*/
_at=X54run_type(_at);
_ft=X54run_type(_ft);
/*[IF*/
if(X54is_expanded(_ft)){
/*[IF*/
if(X54is_expanded(_at)){
}
else{
X54used_as_reference(_ft);
}
/*FI]*/
}
 else if(X54is_expanded(_at)){
X54used_as_reference(_at);
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r149run_class(T149* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*12*/);
return R;
}


void r149dca_inline_ith(T149* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r149expression(C,a2);
_ft=X54run_type(r187type(((T187*)a1),a2));
X56dca_inline_argument(_e,_ft);
}
/*No:EFFECTIVE_ARG_LIST.remainder*/


void r149put(T149* C,T0* a1,T2 a2){
/*[IF*/
if((a2)==(1)){
C->_first_one=a1;
}
else{
/*X151put*//*[IRF3.6put*/{T151* C1=(T151*)((C)->_remainder/*8*/);
T0* b1=a1;
T2 b2=(a2)-(2);
((C1)->_storage/*4*/)[b2]=(b1);
}/*]*/
}
/*FI]*/
}
/*No:EFFECTIVE_ARG_LIST.nb_errors*/


T6 r149isa_dca_inline(T149* C,T0* a1,T0* a2){
T6 R=0;
T2 _r=0;
T2 _i=0;
T0* _e=NULL;
T0* _args=NULL;
T0* _relay_args=NULL;
_relay_args=X51arguments(a1);
_args=X51arguments(a2);
R=1;
_i=r149count(C);
r354force((T354*)(oBC149isa_dca_inline_memory),0,_i);
/*[IRF3.6clear_all*/{T354* C1=(T354*)(oBC149isa_dca_inline_memory);
T6 __value=0;
/*[IRF3.6set_all_with*/{T354* C2=C1;
T6 c1=__value;
r355set_all_with((C2)->_storage/*0*/,c1,((C2)->_upper/*8*/)-((C2)->_lower/*12*/));
}/*]*/
}/*]*/
while (!((!(R))||((_i)==(0)))) {
_e=r149expression(C,_i);
_r=X56isa_dca_inline_argument(_e);
{int z1=_r;

if((0==z1)){
R=0;
}
 else 
if((-1==z1)){
/*[IF*/
if(X54is_expanded(r187type(((T187*)_args),_i))){
R=X54is_expanded(X56result_type(_e));
}
else{
R=X54is_reference(X56result_type(_e));
}
/*FI]*/
}
 else{/*[IRF3.6put*/{T354* C1=(T354*)(oBC149isa_dca_inline_memory);
T6 b1=1;
T2 b2=_r;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
/*[IF*/
if(X54is_reference(r187type(((T187*)_relay_args),_r))){
/*[IF*/
if(X54is_reference(r187type(((T187*)_args),_i))){
R=X54is_reference(X56result_type(_e));
}
else{
R=0;
}
/*FI]*/
}
 else if(X54is_expanded(r187type(((T187*)_args),_i))){
R=X54is_expanded(X56result_type(_e));
}
else{
R=0;
}
/*FI]*/
}}
_i=(_i)-(1);
}
/*[IF*/
if(R){
_i=X51arg_count(a1);
while (!((!(R))||((_i)==(0)))) {
R=r354item((T354*)(oBC149isa_dca_inline_memory),_i);
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T6 r149can_be_dropped(T149* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r149count(C);
while (!((!(R))||((_i)==(0)))) {
R=X56can_be_dropped(r149expression(C,_i));
_i=(_i)-(1);
}
return R;
}
/*No:EFFECTIVE_ARG_LIST.make_1*/


void r149compile_to_c_ith(T149* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r149expression(C,a2);
_ft=X54run_type(r187type(((T187*)a1),a2));
X56mapping_c_arg(_e,_ft);
}


void r149c_declare_for_old(T149* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r149count(C);
while (!((_i)>(_c))) {
X56c_declare_for_old(r149expression(C,_i));
_i=(_i)+(1);
}
}


T0* r149expression(T149* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(C)->_first_one/*4*/;
}
else{
R=/*X151item*/((T0*)r151item((T151*)((C)->_remainder/*8*/),(a1)-(2)));
}
/*FI]*/
return R;
}


void r149from_model(T149* C,T0* a1){
C->_first_one=/*X149first_one*/((T0*)(((T149*)a1))->_first_one/*4*/);
C->_remainder=/*X149remainder*/((T0*)(((T149*)a1))->_remainder/*8*/);
/*[IF*/
if(((C)->_remainder/*8*/)!=((void*)(NULL))){
C->_remainder=X151twin((C)->_remainder/*8*/);
}
/*FI]*/
}


void r149compile_to_c(T149* C,T0* a1){
T2 _up=0;
T2 _i=0;
_i=1;
_up=r149count(C);
while (!((_i)>(_up))) {
r149compile_to_c_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[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]*/
}
}
/*No:EFFECTIVE_ARG_LIST.current_type*/
/*No:EFFECTIVE_ARG_LIST.first*/


T2 r149count(T149* C){
T2 R=0;
/*[IF*/
if(((C)->_remainder/*8*/)==((void*)(NULL))){
R=1;
}
else{
R=(/*X151upper*/((T2)((T151*)((C)->_remainder/*8*/))->_upper/*12*/))+(2);
}
/*FI]*/
return R;
}


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


T6 r149is_like_argument(T149* C,T0* a1,T0* a2,T0* a3){
T6 R=0;
T0* _ot=NULL;
T0* _tla=NULL;
_tla=a3;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=1;
_ot=X56result_type(r149expression(C,/*(IRF4.6rank*/(((T188*)((((T258*)_tla))->_like_what/*8*/)))->_rank/*8*//*)*/));
/*[IF*/
if(!(X54is_a(X54run_type(a2),X54run_type(_ot)))){
r21add_position(X56start_position(a1));
r149error(X54start_position(a3),((T0*)ms149_43605));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r149afd_check(T149* C){
T2 _i=0;
_i=r149count(C);
while (!((_i)==(0))) {
X56afd_check(r149expression(C,_i));
_i=(_i)-(1);
}
}


T2 r144static_value(T144* C){
T2 R=0;
/*[IF*/
if(X54is_integer(X56result_type((C)->_target/*4*/))){
/*[IF*/
if(X56is_static((C)->_target/*4*/)){
R=X56static_value((C)->_target/*4*/);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_PREFIX_PLUS.call_proc_call_c2c*/
/*No:CALL_PREFIX_PLUS.feature_name*/


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


T6 r144is_static(T144* C){
T6 R=0;
/*[IF*/
if(X54is_integer(X56result_type((C)->_target/*4*/))){
/*[IF*/
if(X56is_static((C)->_target/*4*/)){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_PREFIX_PLUS.is_manifest_string*/


T0* r144start_position(T144* C){
T0* R=NULL;
R=((T142*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}
/*No:CALL_PREFIX_PLUS.c_simple*/


T0* r144add_comment(T144* 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 r144to_integer(T144* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(C)->_run_feature/*8*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 376: 
break;
default:
_rf1=NULL;
};/*[IF*/
if((_rf1)==((void*)(NULL))){
r144error(r144start_position(C),((T0*)ms13_45846));
}
else{
R=X56to_integer((((T376*)_rf1))->_value/*36*/);
}
/*FI]*/
return R;
}


T6 r144use_current(T144* C){
T6 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(R){
}
 else if(X56is_current((C)->_target/*4*/)){
R=X51use_current((C)->_run_feature/*8*/);
}
else{
R=X56use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}


T0* r144to_runnable(T144* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r144runnable_expression((C)->_target/*4*/,a1);
_rf=r144run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r144run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T144*n=malloc(sizeof(*n));
*n=M144;
r144with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r144compile_to_c_old(T144* C){
X56compile_to_c_old((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:CALL_PREFIX_PLUS.is_pre_computable*/


void r144collect_c_tmp(T144* C){
/*[IF*/
if(((C)->_run_feature/*8*/)!=((void*)(NULL))){
X51collect_c_tmp((C)->_run_feature/*8*/);
}
/*FI]*/
X56collect_c_tmp((C)->_target/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:CALL_PREFIX_PLUS.fz_iinaiv*/


T0* r144result_type(T144* C){
T0* R=NULL;
R=X51result_type((C)->_run_feature/*8*/);
/*[IF*/
if(X54is_like_current(R)){
R=/*X51current_type*/((T0*)((T324*)((C)->_run_feature/*8*/))->_current_type/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_PREFIX_PLUS.run_feature*/
/*No:CALL_PREFIX_PLUS.fz_07*/
/*No:CALL_PREFIX_PLUS.arg_count*/


void r144with(T144* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r144run_feature_match(C);
}
/*No:CALL_PREFIX_PLUS.is_result*/
/*No:CALL_PREFIX_PLUS.fatal_error*/


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


void r144run_feature_match(T144* C){
r144run_feature_has_result(C);
/*[IF*/
if((X51arg_count((C)->_run_feature/*8*/))>(0)){
r21add_position(((T142*)((C)->_feature_name/*12*/))->_start_position/*8*/);
r21add_position(X51start_position((C)->_run_feature/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms141_50512);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_PREFIX_PLUS.arguments*/


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

