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


T6 r57invariant_check(T57* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-2);
return R;
}


T0* r57root_procedure(T57* C){
T0* R=NULL;
R=(/*RF2*/(C)->_root_procedure_memory/*17*/);
/*[IF*/
if((R)==((void*)(NULL))){
R=((T0*)ms21_16686);
}
/*FI]*/
return R;
}


T6 r57no_check(T57* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(-5);
return R;
}


T6 r57all_check(T57* C){
T6 R=0;
R=((/*RF2*/(C)->_level/*0*/))>=(0);
return R;
}


void r367c_initialize_in(T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),((T3)'0'));
/*FI]*/
}


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


T0* r367generic_list(T367* C){
T0* R=NULL;
r367fatal_error_generic_list(C);
return R;
}
T0*oBC367type_real_ref=NULL;
int fBC367type_real_ref=0;


T0* r367type_real_ref(void){
if(fBC367type_real_ref==0){fBC367type_real_ref=1;{
T0* _real_ref=NULL;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(((T0*)ms21_7749340));
/*]*/
_real_ref=((T0*)n);
}
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
oBC367type_real_ref=((T0*)n);
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=(_real_ref);
/*]*/
}
}}
return oBC367type_real_ref;
}


T0* r367written_mark(void){
T0* R=NULL;
R=((T0*)ms21_12376);
return R;
}


T6 r367has_creation(T367* C,T0* a1){
T6 R=0;
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r367error(/*(IRF4.6start_position*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_start_position/*0*/)/*)*/,((T0*)ms361_849282034));
}
return R;
}


T0* r367run_time_mark(void){
T0* R=NULL;
R=((T0*)ms21_12376);
return R;
}


T2 r367c_sizeof(void){
T2 R=0;
R=sizeof(T4);
return R;
}


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


T6 r367is_native_array(T367* C){
T6 R=0;
T0* _tna=NULL;
_tna=NULL;
R=(_tna)!=((void*)(NULL));
return R;
}


void r367gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(4,a1);
}


void r367fatal_error_generic_list(T367* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r367c_type_for_argument_in(T0* a1){
r7extend(((T7*)a1),((T3)'T'));
r7extend(((T7*)a1),((T3)'4'));
}


void r367make(T367* C,T104 a1){
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
r77make(n,((T0*)ms21_12376),a1);
(/*SFN*/C->_base_class_name)=((T0*)n);
}
}


T0* r367base_class(T367* C){
T0* R=NULL;
T0* _bcn=NULL;
/*[IF*/
if(((/*RF2*/(C)->_base_class_memory/*4*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
_bcn=(/*RF2*/(C)->_base_class_name/*12*/);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
(/*SFN*/C->_base_class_memory)=r77base_class(((T77*)_bcn));
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_432936020);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type((T0*)C,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
return R;
}
int fBC367check_type=0;


void r367check_type(T367* C){
if(fBC367check_type==0){fBC367check_type=1;{
T0* _rc=NULL;
T0* _bc=NULL;
_bc=r367base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_rc=r367run_class(C);
r367load_ref(((T0*)ms21_7749340));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(!((/*RF2*/(((T61*)_bc))->_is_expanded/*17*/))){
{T104 se_tmp0;
r367error(/*(IRF4.6start_position*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_start_position/*0*/)/*)*/,((T0*)ms367_686319392));
}
}
/*FI]*/
}
/*FI]*/
}}}


T0* r367actual_reference(T0* a1){
T0* R=NULL;
T0* _cn=NULL;
/*[IF*/
if((X62run_time_mark(a1))==((void*)(((T0*)ms21_7749340)))){
R=a1;
}
else{
{T104 se_tmp0;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
r77make(n,((T0*)ms21_7749340),(*(se_tmp0=X62start_position(a1),&se_tmp0)));
_cn=((T0*)n);
}
}
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=(_cn);
/*]*/
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r367is_a_in(T367* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r367written_mark())==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(/*RF2*/(((T60*)a2))->_current_type/*0*/);
_t1=r367to_runnable(C,_ct);
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


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


void r367id_extra_information(T0* a1){
r58put_string(((T58*)a1),((T0*)ms62_1360462097));
/*[IF*/
/*AF*//*AE*/
r58put_string(((T58*)a1),((T0*)ms62_3337));
/*FI]*/
}


T6 r367is_a(T367* C,T0* a1){
T6 R=0;
/*[IF*/
if((X62is_real(a1))||(X62is_double(a1))){
R=1;
}
 else if(r61is_subclass_of((T61*)(r367base_class(C)),X62base_class(a1))){
R=1;
}
/*FI]*/
/*[IF*/
if(!(R)){
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


void r367load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r59run_class_for(a1);
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_16639));
}


T0* r367to_runnable(T367* C,T0* a1){
T0* R=NULL;
R=((T0*)(C));
r367check_type(C);
return R;
}


T0* r367run_class(T367* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_class_memory/*8*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
 else {/*AT*/(/*SFN*/C->_run_class_memory)=r59run_class(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
/*FI]*/
return R;
}


T0* r367smallest_ancestor(T367* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_integer(_rto)){
R=((T0*)(C));
}
 else if(X62is_real(_rto)){
R=((T0*)(C));
}
 else if(X62is_double(_rto)){
R=a1;
}
else{
R=r369smallest_ancestor((T369*)(r367type_real_ref()),_rto);
}
/*FI]*/
return R;
}


void r367gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(4,a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


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


void r203compile_to_c(T203* C){
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
r83check_assertion((T83*)(oBC19cpp),(/*RF2*/(C)->_expression/*4*/),(/*RF2*/(C)->_tag/*0*/));
}
/*FI]*/
}


void r203make(T203* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_tag)=a1;
(/*SFN*/C->_expression)=a2;
(/*SFN*/C->_comment)=a3;
}


void r203afd_check(T203* C){
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
X126afd_check((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
}


T6 r203is_always_true(T203* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))==((void*)(NULL))){
R=1;
}
 else if(X126is_static((/*RF2*/(C)->_expression/*4*/))){
R=(X126static_value((/*RF2*/(C)->_expression/*4*/)))==(1);
}
/*FI]*/
return R;
}


T6 r203use_current(T203* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
R=X126use_current((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
return R;
}


void r203c_declare_for_old(T203* C){
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
X126c_declare_for_old((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
}


void r203compile_to_c_old(T203* C){
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
X126compile_to_c_old((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
}


T6 r203is_pre_computable(T203* C){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))==((void*)(NULL))){
R=1;
}
else{
R=X126is_pre_computable((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
return R;
}


T0* r203to_runnable(T203* C,T0* a1,T3 a2){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
R=((T0*)(C));
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
_e=X126to_runnable((/*RF2*/(C)->_expression/*4*/),a1);
/*[IF*/
if((_e)==((void*)(NULL))){
{T104 se_tmp0;
r203error((*(se_tmp0=r203start_position(C),&se_tmp0)),((T0*)ms20_2042907574));
}
}
else{
(/*SFN*/C->_expression)=_e;
/*[IF*/
if(!(X62is_boolean(X126result_type((/*RF2*/(C)->_expression/*4*/))))){
r82add_type(X126result_type((/*RF2*/(C)->_expression/*4*/)),((T0*)ms20_1495656936));
{T104 se_tmp0;
r203error((*(se_tmp0=r203start_position(C),&se_tmp0)),((T0*)ms20_2042907574));
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL)))&&((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0))){
/*[IF*/
if(r57require_check((T57*)(oBC19run_control))){
X126assertion_check((/*RF2*/(C)->_expression/*4*/),a2);
}
/*FI]*/
}
/*FI]*/
}
else{
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,(/*RF2*/(C)->_tag/*0*/),(/*RF2*/(C)->_expression/*4*/),(/*RF2*/(C)->_comment/*8*/));
R=((T0*)n);
}
R=r203to_runnable(((T203*)R),a1,a2);
}
/*FI]*/
return R;
}


void r203collect_c_tmp(T203* C){
/*[IF*/
if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
X126collect_c_tmp((/*RF2*/(C)->_expression/*4*/));
}
/*FI]*/
}


T104 r203start_position(T203* C){
T104 R={NULL,0};
/*[IF*/
if(((/*RF2*/(C)->_tag/*0*/))!=((void*)(NULL))){
{T104 se_tmp0;
R=(/*RF2*/((T207*)((/*RF2*/(C)->_tag/*0*/)))->_start_position/*4*/);
}
}
 else if(((/*RF2*/(C)->_expression/*4*/))!=((void*)(NULL))){
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*4*/)),&se_tmp0));
}
}
else{
{T104 se_tmp0;
R=(/*RF2*/((T164*)((/*RF2*/(C)->_comment/*8*/)))->_start_position/*0*/);
}
}
/*FI]*/
return R;
}


void r245from_model(T245* C,T0* a1){
(/*SFN*/C->_first_one)=/*SSWARF2*//*X245first_one*/(/*RF2*/(((T245*)a1))->_first_one/*4*/);
(/*SFN*/C->_remainder)=/*SSWARF2*//*X245remainder*/(/*RF2*/(((T245*)a1))->_remainder/*8*/);
/*[IF*/
if(((/*RF2*/(C)->_remainder/*8*/))!=((void*)(NULL))){
(/*SFN*/C->_remainder)=X212twin((/*RF2*/(C)->_remainder/*8*/));
}
/*FI]*/
}


T2 r245count(T245* C){
T2 R=0;
/*[IF*/
if(((/*RF2*/(C)->_remainder/*8*/))==((void*)(NULL))){
R=1;
}
else{
R=(/*SSWARF2*//*X212upper*/(/*RF2*/((T212*)((/*RF2*/(C)->_remainder/*8*/)))->_upper/*12*/))+(2);
}
/*FI]*/
return R;
}


T6 r245can_be_dropped(T245* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r245count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126can_be_dropped(r245expression(C,_i));
_i=(_i)-(1);
}
return R;
}


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


void r245put(T245* C,T0* a1,T2 a2){
/*[IF*/
if((a2)==(1)){
(/*SFN*/C->_first_one)=a1;
}
else{
X212put((/*RF2*/(C)->_remainder/*8*/),a1,(a2)-(2));
}
/*FI]*/
}


void r245compile_to_c_ith(T245* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r245expression(C,a2);
_ft=X62run_type(r121type(((T121*)a1),a2));
X126mapping_c_arg(_e,_ft);
}


T6 r245is_static(T245* C){
T6 R=0;
T2 _i=0;
R=1;
_i=r245count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126is_static(r245expression(C,_i));
_i=(_i)-(1);
}
return R;
}


void r245dca_inline_ith(T245* C,T0* a1,T2 a2){
T0* _ft=NULL;
T0* _e=NULL;
_e=r245expression(C,a2);
_ft=X62run_type(r121type(((T121*)a1),a2));
X126dca_inline_argument(_e,_ft);
}


void r245match_with(T245* C,T0* a1,T0* a2){
T0* _T2=NULL;
T0* _T1=NULL;
T0* _ft=NULL;
T0* _at=NULL;
T0* _e=NULL;
T2 _i=0;
T0* _fal=NULL;
_fal=X96arguments(a1);
/*[IF*/
if((_fal)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=r245start_position(C),&se_tmp0)),((T0*)ms245_172193497));
}
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0))&&((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/(((T121*)_fal))->_flat_list/*8*/))))/*)*/)!=(r245count(C)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r121start_position(((T121*)_fal)),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=r245start_position(C),&se_tmp0)),((T0*)ms245_172193497));
}
}
/*FI]*/
_i=r245count(C);
while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_e=r245expression(C,_i);
_at=X126result_type(_e);
_ft=r121type(((T121*)_fal),_i);
/*[IF*/
if(X126is_void(_e)){
/*[IF*/
if(X62is_expanded(_ft)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_172033369));
}
}
/*FI]*/
}
 else if(X62is_like_current(_ft)){
/*[IF*/
if(X62is_a(X62run_type(_at),X62run_type(_ft))){
/*[IF*/
if(X62is_expanded(X62run_type(_at))){
}
 else if(X62is_a(X62run_type(_at),X62run_type(_ft))){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_673325704));
}
}
/*FI]*/
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_673325704));
}
}
/*FI]*/
}
 else if(X62is_like_feature(_ft)){
_T1=X62run_type(_at);
_T2=X62run_type(_ft);
/*[IF*/
if(X62is_a(X62run_type(_at),X62run_type(_ft))){
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(_e),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=X62start_position(_ft),&se_tmp0)),((T0*)ms245_367486352));
}
}
/*FI]*/
}
 else if(r245is_like_argument(C,_e,_at,_ft)){
}
 else if(X62is_a(_at,_ft)){
}
else{
{T104 se_tmp0;
r245error((*(se_tmp0=X126start_position(_e),&se_tmp0)),((T0*)ms245_1141347885));
}
}
/*FI]*/
_e=r440implicit_cast((T440*)(oBC19conversion_handler),_e,_ft);
r245put(C,_e,_i);
_i=(_i)-(1);
}
}


void r245compile_to_c(T245* C,T0* a1){
T2 _up=0;
T2 _i=0;
_i=1;
_up=r245count(C);
while (!((_i)>(_up)))
{
r245compile_to_c_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
}


T6 r245stupid_switch(T245* C,T0* a1){
T6 R=0;
T2 _i=0;
R=1;
_i=r245count(C);
while (!((!(R))||((_i)==(0))))
{
R=X126stupid_switch(r245expression(C,_i),a1);
_i=(_i)-(1);
}
return R;
}


void r245make_n(T245* C,T0* a1,T0* a2){
(/*SFN*/C->_first_one)=a1;
(/*SFN*/C->_remainder)=a2;
}


T6 r245isa_dca_inline(T245* 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=X96arguments(a1);
_args=X96arguments(a2);
R=1;
_i=r245count(C);
r483force((T483*)(oBC245isa_dca_inline_memory),0,_i);
/*[IRF3.6clear_all*/{T483* C1=(T483*)(oBC245isa_dca_inline_memory);
T6 __value=0;
/*[IRF3.6set_all_with*/{T483* C2=C1;
T6 c1=__value;
r486set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,((/*RF2*/(C2)->_upper/*8*/))-((/*RF2*/(C2)->_lower/*12*/)));
}/*]*/
}/*]*/
while (!((!(R))||((_i)==(0))))
{
_e=r245expression(C,_i);
_r=X126isa_dca_inline_argument(_e);
/*[INSPECT*/
{int z1=_r;
switch(z1){
case 0:
R=0;
break;
case -1:
/*[IF*/
if(X62is_expanded(r121type(((T121*)_args),_i))){
R=X62is_expanded(X126result_type(_e));
}
else{
R=X62is_reference(X126result_type(_e));
}
/*FI]*/
break;
default:;
/*[IRF3.6put*/{T483* C1=(T483*)(oBC245isa_dca_inline_memory);
T6 b1=1;
T2 b2=_r;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
/*[IF*/
if(X62is_reference(r121type(((T121*)_relay_args),_r))){
/*[IF*/
if(X62is_reference(r121type(((T121*)_args),_i))){
R=X62is_reference(X126result_type(_e));
}
else{
R=0;
}
/*FI]*/
}
 else if(X62is_expanded(r121type(((T121*)_args),_i))){
R=X62is_expanded(X126result_type(_e));
}
else{
R=0;
}
/*FI]*/
}
}/*INSPECT]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
/*[IF*/
if((X96arguments(a1))!=((void*)(NULL))){
_i=/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)(X96arguments(a1)))->_flat_list/*8*/))))/*)*/;
}
else{
_i=0;
}
/*FI]*/
while (!((!(R))||((_i)==(0))))
{
R=r483item((T483*)(oBC245isa_dca_inline_memory),_i);
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r245dca_inline(T245* C,T0* a1){
T2 _up=0;
T2 _i=0;
_up=r245count(C);
_i=1;
while (!((_i)>(_up)))
{
r245dca_inline_ith(C,a1,_i);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(_up)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
}


void r245assertion_check(T245* C,T3 a1){
T2 _i=0;
_i=r245count(C);
while (!((_i)==(0)))
{
X126assertion_check(r245expression(C,_i),a1);
_i=(_i)-(1);
}
}


void r245afd_check(T245* C){
T2 _i=0;
_i=r245count(C);
while (!((_i)==(0)))
{
X126afd_check(r245expression(C,_i));
_i=(_i)-(1);
}
}


T6 r245use_current(T245* C){
T6 R=0;
T2 _i=0;
_i=r245count(C);
while (!((R)||((_i)==(0))))
{
R=X126use_current(r245expression(C,_i));
_i=(_i)-(1);
}
return R;
}
T0*oBC245isa_dca_inline_memory=NULL;


T0* r245expression(T245* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(/*RF2*/(C)->_first_one/*4*/);
}
else{
R=X212item((/*RF2*/(C)->_remainder/*8*/),(a1)-(2));
}
/*FI]*/
return R;
}


void r245c_declare_for_old(T245* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r245count(C);
while (!((_i)>(_c)))
{
X126c_declare_for_old(r245expression(C,_i));
_i=(_i)+(1);
}
}


void r245compile_to_c_old(T245* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r245count(C);
while (!((_i)>(_c)))
{
X126compile_to_c_old(r245expression(C,_i));
_i=(_i)+(1);
}
}


T6 r245is_pre_computable(T245* C){
T6 R=0;
T2 _i=0;
_i=r245count(C);
R=1;
while (!((!(R))||((_i)==(0))))
{
R=X126is_pre_computable(r245expression(C,_i));
_i=(_i)-(1);
}
return R;
}


T6 r245is_like_argument(T245* 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 355:
break;
default:
_tla=NULL;
}
}/*[IF*/
if((_tla)!=((void*)(NULL))){
R=1;
_ot=X126result_type(r245expression(C,/*(IRF4.6rank*/(/*RF2*/(((T275*)((/*RF2*/(((T355*)_tla))->_like_what/*20*/))))->_rank/*12*/)/*)*/));
/*[IF*/
if(!(X62is_a(X62run_type(a2),X62run_type(_ot)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r245error((*(se_tmp0=X62start_position(a3),&se_tmp0)),((T0*)ms245_1841665413));
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r245to_runnable(T245* C,T0* a1){
T0* R=NULL;
T0* _e2=NULL;
T0* _e1=NULL;
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_current_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
_i=r245count(C);
while (!((_i)==(0)))
{
_e1=r245expression(C,_i);
_e2=X126to_runnable(_e1,(/*RF2*/(C)->_current_type/*12*/));
/*[IF*/
if((_e2)==((void*)(NULL))){
{T104 se_tmp0;
r245error((*(se_tmp0=X126start_position(_e1),&se_tmp0)),((T0*)ms245_1263631766));
}
}
else{
r245put(C,_e2,_i);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
{T245*n=((T245*)se_malloc(sizeof(*n))/*16*/);
*n=M245;
r245from_model(n,(T0*)C);
R=((T0*)n);
}
R=X245to_runnable(R,a1);
}
/*FI]*/
return R;
}


void r245collect_c_tmp(T245* C){
T2 _c=0;
T2 _i=0;
_i=1;
_c=r245count(C);
while (!((_i)>(_c)))
{
X126collect_c_tmp(r245expression(C,_i));
_i=(_i)+(1);
}
}


T104 r245start_position(T245* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position(/*(IRF4.3first*/(/*RF2*/(C)->_first_one/*4*/)/*)*/),&se_tmp0));
}
return R;
}


T0* r393try_to_undefine_aux(T393* C,T0* a1,T0* a2){
T0* R=NULL;
{T384*n=((T384*)se_malloc(sizeof(*n))/*44*/);
*n=M384;
r384from_effective(n,a1,(/*RF2*/(C)->_arguments/*20*/),(/*RF2*/(C)->_result_type/*56*/),(/*RF2*/(C)->_require_assertion/*28*/),(/*RF2*/(C)->_ensure_assertion/*32*/),a2);
R=((T0*)n);
}
return R;
}


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


T6 r393can_hide(T393* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*56*/))!=((void*)(X99result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*56*/))==((void*)(NULL)))||((X99result_type(a1))==((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r393error((*(se_tmp0=r393start_position(C),&se_tmp0)),((T0*)ms99_1393094289));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(X99arguments(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL)))||((X99arguments(a1))==((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r393error((*(se_tmp0=r393start_position(C),&se_tmp0)),((T0*)ms99_1854646737));
}
}
 else if((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))/*)*/)!=(/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)(X99arguments(a1)))->_flat_list/*8*/))))/*)*/)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r393error((*(se_tmp0=r393start_position(C),&se_tmp0)),((T0*)ms99_1060258809));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*56*/))!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((/*RF2*/(C)->_result_type/*56*/),X99result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_895448585);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((/*RF2*/(((T60*)a2))->_current_type/*0*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(r121is_a_in((T121*)((/*RF2*/(C)->_arguments/*20*/)),X99arguments(a1),a2))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r393start_position(C),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms99_895448585);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((/*RF2*/(((T60*)a2))->_current_type/*0*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r393merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


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


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


void r393make_effective_routine(T393* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r393make_routine(C,a1,a2,a3,a4,a5);
(/*SFN*/C->_local_vars)=a6;
(/*SFN*/C->_routine_body)=a7;
(/*SFN*/C->_use_current_state)=20;
}


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


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


void r393make(T393* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r393make_effective_routine(C,a1,a2,a4,a5,a6,a7,a8);
(/*SFN*/C->_result_type)=a3;
}


void r393check_obsolete(T393* C,T104 a1){
/*[IF*/
if(((/*RF2*/(C)->_obsolete_mark/*24*/))!=((void*)(NULL))){
/*[IF*/
if(!((/*RF2*/((T59*)(oBC19small_eiffel))->_short_flag/*5*/))){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=((T0*)ms99_2129004198);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/((T262*)((/*RF2*/(C)->_obsolete_mark/*24*/)))->_to_string/*12*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r393start_position(C),&se_tmp0)));
}
r82print_as_warning((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}


T0* r393to_run_feature(T393* C,T0* a1,T0* a2){
T0* R=NULL;
{T523*n=((T523*)se_malloc(sizeof(*n))/*69*/);
*n=M523;
r523make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
return R;
}


void r393set_header_comment(T393* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r52count(((T52*)((/*RF2*/(((T164*)a1))->_list/*8*/))))/*)*/)>(1))){
(/*SFN*/C->_end_comment)=a1;
}
/*FI]*/
}


T6 r393is_not_mergeable_with(T393* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*56*/))==((void*)(NULL))){
R=(X99result_type(a1))!=((void*)(NULL));
}
else{
R=(X99result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1393094289);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
else{
/*[IF*/
if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
R=(X99arguments(a1))!=((void*)(NULL));
}
else{
R=(X99arguments(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1854646737);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
 else if(((/*RF2*/(C)->_arguments/*20*/))==((void*)(NULL))){
}
 else if((/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*20*/)))->_flat_list/*8*/))))/*)*/)!=(/*(IRF4.6count*/r128count(((T128*)((/*RF2*/((T121*)(X99arguments(a1)))->_flat_list/*8*/))))/*)*/)){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1060258809);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
R=1;
}
/*FI]*/
}
/*FI]*/
r393merge_header_comments(C,a1);
return R;
}


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


void r207make(T207* C,T0* a1,T104 a2){
(/*SFN*/C->_to_string)=a1;
(/*SFN*/C->_start_position)=a2;
}


void r231run_feature_match(T231* C,T0* a1){
r231run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


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


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


T6 r231is_static(T231* C){
T6 R=0;
/*[IF*/
if(X62is_integer(r231result_type(C))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r231arg1(C)))){
R=1;
(/*SFN*/C->_static_value_mem)=(X126static_value((/*RF2*/(C)->_target/*4*/)))%(X126static_value(r231arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r231operator(void){
T0* R=NULL;
R=((T0*)ms21_552);
return R;
}


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


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


T6 r231stupid_switch(T231* C,T0* a1){
T6 R=0;
R=r231call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r231result_type(C)));
}
/*FI]*/
return R;
}


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


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


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


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


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


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


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


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


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


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


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


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


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


T2 r231to_integer_or_error(T231* C){
T2 R=0;
r231to_integer_error(C);
return R;
}


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


T0* r231to_runnable(T231* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r231runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r231runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r231arg1(C));
/*[IF*/
if(X62is_real(_argument_type)){
/*[IF*/
if(X62is_integer(_target_type)){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X62is_double(_argument_type)){
/*[IF*/
if((X62is_integer(_target_type))||(X62is_real(_target_type))){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r231run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r231run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T231*n=((T231*)se_malloc(sizeof(*n))/*24*/);
*n=M231;
r231with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


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


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


void r368gc_store_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_89821));
r2append_in(7,a1);
}


void r368c_type_for_external_in(T0* a1){
/*[IF*/
{/*AT*/r7append(((T7*)a1),((T0*)ms20_18150));
r7extend(((T7*)a1),((T3)'\52'));
}
/*FI]*/
}


T0* r368generic_list(T368* C){
T0* R=NULL;
r368fatal_error_generic_list(C);
return R;
}


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


T0* r368written_mark(void){
T0* R=NULL;
R=((T0*)ms21_324411);
return R;
}


T6 r368has_creation(T368* C,T0* a1){
T6 R=0;
R=r61has_creation((T61*)(r368base_class(C)),a1);
return R;
}


T0* r368run_time_mark(void){
T0* R=NULL;
R=((T0*)ms21_324411);
return R;
}


void r368gc_store_chunk_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_1403828457));
r2append_in(7,a1);
}


void r368standard_gc_define2(T368* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=r368run_class(C);
_rcid=(/*RF2*/(((T60*)_rc))->_id/*16*/);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r7append((T7*)(oBC62header),((T0*)ms20_9980517));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_5161461));
r7copy((T7*)(oBC62body),((T0*)ms62_614));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_976559263));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1815688614));
r368gc_store_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_84678371));
r444memory_dispose(oBC62body,((T0*)ms62_604),r368run_class(C));
r7append((T7*)(oBC62body),((T0*)ms62_503314970));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_2045816469));
r444memory_dispose(oBC62body,((T0*)ms62_605),r368run_class(C));
r7append((T7*)(oBC62body),((T0*)ms62_720252832));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_2124916149));
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r368gc_mark_in(oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_284));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1646));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62body))))->_count)=(0);
/*]*/
_gc_check_id=(r60is_tagged(((T60*)_rc)))&&(r57no_check((T57*)(oBC19run_control)));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(oBC62body),((T0*)ms62_1985327250));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_6773));
}
/*FI]*/
r60gc_mark_fixed_size(((T60*)_rc),0,oBC62body);
/*[IF*/
if(_gc_check_id){
r7append((T7*)(oBC62body),((T0*)ms62_175));
}
/*FI]*/
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r368gc_align_mark_in(oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_129037214));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1651));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62body))))->_count)=(0);
/*]*/
r60gc_align_mark_fixed_size(((T60*)_rc),oBC62body);
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms62_407207));
r2append_in(_rcid,oBC62header);
r7copy((T7*)(oBC62body),((T0*)ms62_2051940780));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1665297219));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1831440704));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_160930));
r83put_extern5((T83*)(oBC19cpp),oBC62header,oBC62body);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62header))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62header),((T3)'T'));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r7append((T7*)(oBC62header),((T0*)ms20_3374));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms20_215791));
r7copy((T7*)(oBC62body),((T0*)ms20_614));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_8305));
/*[IF*/
if((/*RF2*/((T444*)(oBC19gc_handler))->_info_flag/*1*/)){
r368gc_info_nb_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_6755));
}
/*FI]*/
r7append((T7*)(oBC62body),((T0*)ms62_3175));
r368gc_store_left_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_46525));
r368gc_store_left_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_176986));
r368gc_store_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_411775958));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_479982486));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1748680500));
r368gc_store_left_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_236525));
r368gc_store_left_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_9130));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1648235130));
r368gc_store_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1800342110));
r7append((T7*)(oBC62body),((T0*)ms62_938298091));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_842464717));
r368gc_initialize_chunk(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1704089558));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_672427151));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1562678200));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_8260));
r368gc_initialize_chunk(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1519036636));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_41861));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r368gc_free_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_69947558));
r368gc_store_chunk_in(oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_54875475));
r368gc_initialize_chunk(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_433411101));
/*[IF*/
{/*AT*/r7append((T7*)(oBC62body),((T0*)ms62_1196941282));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
}
/*FI]*/
r7append((T7*)(oBC62body),((T0*)ms62_54686284));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_171955));
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
}


void r368standard_gc_define1(T368* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r368run_class(C);
_rcid=(/*RF2*/(((T60*)_rc))->_id/*16*/);
r7copy((T7*)(oBC62header),((T0*)ms20_11381817));
r7append((T7*)(oBC62header),((T0*)ms20_2248337));
r7extend((T7*)(oBC62header),((T3)'B'));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\40'));
r7append((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms20_305));
r7append((T7*)(oBC62header),((T0*)ms20_2248337));
r7extend((T7*)(oBC62header),((T3)'B'));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_699));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1527651872));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1126647264));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62header);
/*]*/
r7copy((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r368gc_store_in(oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
r7copy((T7*)(oBC62header),((T0*)ms20_3291));
r7extend((T7*)(oBC62header),((T3)'\40'));
r368gc_store_left_in(oBC62header);
r83put_extern2((T83*)(oBC19cpp),oBC62header,((T3)'0'));
r7copy((T7*)(oBC62header),((T0*)ms62_81437));
r368gc_store_chunk_in(oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
r7copy((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r368gc_free_in(oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
/*[IF*/
if((/*RF2*/((T444*)(oBC19gc_handler))->_info_flag/*1*/)){
r7copy((T7*)(oBC62header),((T0*)ms20_3291));
r7extend((T7*)(oBC62header),((T3)'\40'));
r368gc_info_nb_in(oBC62header);
r83put_extern2((T83*)(oBC19cpp),oBC62header,((T3)'0'));
}
/*FI]*/
}


T6 r368is_native_array(T368* C){
T6 R=0;
T0* _tna=NULL;
_tna=NULL;
R=(_tna)!=((void*)(NULL));
return R;
}


void r368gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(7,a1);
}


T2 r368c_sizeof_pointer(void){
T2 R=0;
T8 _p=NULL;
R=sizeof(T8);
return R;
}


void r368standard_gc_info_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_1419822228a));
r7append(((T7*)a1),r368run_time_mark());
r7append(((T7*)a1),((T0*)ms20_17723839));
r368gc_info_nb_in(a1);
r7append(((T7*)a1),((T0*)ms20_1330));
r7append(((T7*)a1),((T0*)ms62_1419822228));
r368gc_store_left_in(a1);
r7append(((T7*)a1),((T0*)ms20_17723839));
r368gc_store_left_in(a1);
r7append(((T7*)a1),((T0*)ms20_1330));
}


void r368fatal_error_generic_list(T368* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


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


void r368make(T368* C,T104 a1){
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
r77make(n,((T0*)ms21_324411),a1);
(/*SFN*/C->_base_class_name)=((T0*)n);
}
}
int fBC368set_at_run_time=0;


void r368set_at_run_time(void){
if(fBC368set_at_run_time==0){fBC368set_at_run_time=1;{
T0* _rf=NULL;
T0* _rc=NULL;
T0* _bc=NULL;
_bc=r368base_class((T368*)(r368type_string()));
_rc=r368run_class((T368*)(r368type_string()));
r60set_at_run_time(((T60*)_rc));
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_9676326));
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_79341));
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_2246041));
r60set_at_run_time((T60*)(X62run_class(X96result_type(_rf))));
}}}


T0* r368base_class(T368* C){
T0* R=NULL;
T0* _bcn=NULL;
/*[IF*/
if(((/*RF2*/(C)->_base_class_memory/*4*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
_bcn=(/*RF2*/(C)->_base_class_name/*12*/);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
(/*SFN*/C->_base_class_memory)=r77base_class(((T77*)_bcn));
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_432936020);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type((T0*)C,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368gc_free_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_1994331));
r2append_in(7,a1);
}


T6 r368is_a_in(T368* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r368written_mark())==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(/*RF2*/(((T60*)a2))->_current_type/*0*/);
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368demangling_in(T0* a1){
/*[IF*/
{/*AT*/r7extend(((T7*)a1),((T3)'R'));
}
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),r368run_time_mark());
}


void r368gc_align_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_1085305030));
r2append_in(7,a1);
}


void r368standard_c_struct(T368* C){
T0* _t=NULL;
T0* _a=NULL;
T2 _mem_id=0;
T2 _i=0;
T0* _wa=NULL;
_mem_id=7;
_wa=r60writable_attributes((T60*)(r368run_class(C)));
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_2248337));
r7extend((T7*)(oBC62tmp_string),((T3)'S'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
/*[IF*/
{/*AT*//*[IF*/
if(r60is_tagged((T60*)(r368run_class(C)))){
r7append((T7*)(oBC62tmp_string),((T0*)ms62_1710309));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T445*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_a=r445item(((T445*)_wa),_i);
_t=X62run_type((/*RF2*/(((T152*)_a))->_result_type/*32*/));
X62c_type_for_result_in(_t,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'\137'));
r7append((T7*)(oBC62tmp_string),X117to_string((/*RF2*/(((T152*)_a))->_name/*16*/)));
r7extend((T7*)(oBC62tmp_string),((T3)'\73'));
_i=(_i)-(1);
}
}
/*FI]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\175'));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r368gc_initialize_chunk(T2 a1,T0* a2){
r7extend(((T7*)a2),((T3)'\52'));
r368gc_store_chunk_in(a2);
r7append(((T7*)a2),((T0*)ms20_377));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms20_305));
r368gc_store_in(a2);
r7append(((T7*)a2),((T0*)ms62_44739));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms62_32605));
r368gc_store_chunk_in(a2);
r7append(((T7*)a2),((T0*)ms62_212314278));
r368gc_store_left_in(a2);
r7append(((T7*)a2),((T0*)ms20_377));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms62_365929075));
r368gc_store_in(a2);
r7append(((T7*)a2),((T0*)ms62_169510));
}


void r368id_extra_information(T0* a1){
r58put_string(((T58*)a1),((T0*)ms62_1360462097));
/*[IF*/
{/*AT*/r58put_string(((T58*)a1),((T0*)ms62_18257));
}
/*FI]*/
}


T6 r368is_a(T368* C,T0* a1){
T6 R=0;
/*[IF*/
if(X62is_string(a1)){
R=1;
}
else{
R=r61is_subclass_of((T61*)(r368base_class(C)),X62base_class(a1));
}
/*FI]*/
/*[IF*/
if(!(R)){
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


void r368standard_c_object_model(T368* C){
T0* _rc=NULL;
T2 _mem_id=0;
_rc=r368run_class(C);
_mem_id=(/*RF2*/(((T60*)_rc))->_id/*16*/);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'M'));
r2append_in(_mem_id,oBC62tmp_string);
r83put_extern7((T83*)(oBC19cpp),oBC62tmp_string);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r60c_object_model_in(((T60*)_rc),oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
r83swap_on_h((T83*)(oBC19cpp));
}


void r368gc_store_left_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_280766651));
r2append_in(7,a1);
}


T0* r368run_class(T368* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_class_memory/*8*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
 else {/*AT*/(/*SFN*/C->_run_class_memory)=r59run_class(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
/*FI]*/
return R;
}


void r368c_header_pass4(T368* C){
r368standard_c_struct(C);
r368standard_c_object_model(C);
}


void r368standard_just_before_gc_mark_in(T0* a1){
r368gc_free_in(a1);
r7extend(((T7*)a1),((T3)'\75'));
r7append(((T7*)a1),((T0*)ms20_12331));
r7append(((T7*)a1),((T0*)ms20_305));
}


T0* r368smallest_ancestor(T368* C,T0* a1){
T0* R=NULL;
T0* _bc2=NULL;
T0* _bc=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_string(_rto)){
R=((T0*)(C));
}
 else if(X62is_none(_rto)){
R=((T0*)(C));
}
 else if(X62is_any(_rto)){
R=_rto;
}
 else if(X62is_expanded(_rto)){
R=X62smallest_ancestor(_rto,(T0*)C);
}
else{
_bc=r368base_class(C);
_bc2=X62base_class(_rto);
/*[IF*/
if(r61is_subclass_of(((T61*)_bc2),_bc)){
R=((T0*)(C));
}
 else if(r61is_subclass_of(((T61*)_bc),_bc2)){
R=_rto;
}
else{
R=r368type_any();
}
/*FI]*/
}
/*FI]*/
return R;
}


void r368gc_info_nb_in(T0* a1){
r7append(((T7*)a1),((T0*)ms62_249330648));
r2append_in(7,a1);
}


void r368gc_call_new_in(T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(7,a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


void r77make(T77* C,T0* a1,T104 a2){
(/*SFN*/C->_to_string)=a1;
(/*SFN*/C->_start_position)=a2;
}


T6 r77is_subclass_of(T77* C,T0* a1){
T6 R=0;
/*[IF*/
if((((T0*)ms21_12184))==((void*)((/*RF2*/(C)->_to_string/*8*/)))){
R=1;
}
 else if((((T0*)ms21_2104))==((void*)((/*RF2*/(((T77*)a1))->_to_string/*8*/)))){
R=1;
}
 else if((((T0*)ms21_12184))==((void*)((/*RF2*/(((T77*)a1))->_to_string/*8*/)))){
}
else{
R=r61is_subclass_of((T61*)(r77base_class(C)),r77base_class(((T77*)a1)));
}
/*FI]*/
return R;
}


T0* r77base_class(T77* C){
T0* R=NULL;
R=r59base_class((T59*)(oBC19small_eiffel),(T0*)C);
return R;
}


void r369c_initialize_in(T369* C,T0* a1){
/*[IF*/
if(r369is_expanded(C)){
/*[IF*/
if(r369need_c_struct(C)){
r60c_object_model_in((T60*)(r369run_class(C)),a1);
}
else{
r7extend(((T7*)a1),((T3)'0'));
}
/*FI]*/
}
else{
r7append(((T7*)a1),((T0*)ms20_12331));
}
/*FI]*/
}


void r369gc_store_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_89821));
r2append_in(r369id(C),a1);
}


void r369c_type_for_external_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r7append(((T7*)a1),((T0*)ms20_18150));
r7extend(((T7*)a1),((T3)'\52'));
}
else{
r369c_type_for_result_in(C,a1);
}
/*FI]*/
}


T0* r369generic_list(T369* C){
T0* R=NULL;
r369fatal_error_generic_list(C);
return R;
}


T6 r369has_creation(T369* C,T0* a1){
T6 R=0;
R=r61has_creation((T61*)(r369base_class(C)),a1);
return R;
}


T2 r369c_sizeof(T369* C){
T2 R=0;
/*[IF*/
if(r369is_reference(C)){
R=r369c_sizeof_pointer();
}
else{
R=r60c_sizeof((T60*)(r369run_class(C)));
}
/*FI]*/
return R;
}


void r369gc_store_chunk_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_1403828457));
r2append_in(r369id(C),a1);
}


void r369c_type_for_result_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r7append(((T7*)a1),((T0*)ms20_2382));
}
 else if(r369is_dummy_expanded(C)){
r7append(((T7*)a1),((T0*)ms20_3291));
}
else{
r7extend(((T7*)a1),((T3)'T'));
r2append_in(r369id(C),a1);
}
/*FI]*/
}


void r369standard_gc_define2(T369* C){
T6 _gc_check_id=0;
T2 _rcid=0;
T0* _rc=NULL;
_rc=r369run_class(C);
_rcid=(/*RF2*/(((T60*)_rc))->_id/*16*/);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r7append((T7*)(oBC62header),((T0*)ms20_9980517));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_5161461));
r7copy((T7*)(oBC62body),((T0*)ms62_614));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_976559263));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1815688614));
r369gc_store_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_84678371));
r444memory_dispose(oBC62body,((T0*)ms62_604),r369run_class(C));
r7append((T7*)(oBC62body),((T0*)ms62_503314970));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_2045816469));
r444memory_dispose(oBC62body,((T0*)ms62_605),r369run_class(C));
r7append((T7*)(oBC62body),((T0*)ms62_720252832));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_2124916149));
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r369gc_mark_in(C,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_284));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1646));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62body))))->_count)=(0);
/*]*/
_gc_check_id=(r60is_tagged(((T60*)_rc)))&&(r57no_check((T57*)(oBC19run_control)));
/*[IF*/
if(_gc_check_id){
r7append((T7*)(oBC62body),((T0*)ms62_1985327250));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_6773));
}
/*FI]*/
r60gc_mark_fixed_size(((T60*)_rc),0,oBC62body);
/*[IF*/
if(_gc_check_id){
r7append((T7*)(oBC62body),((T0*)ms62_175));
}
/*FI]*/
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r369gc_align_mark_in(C,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_129037214));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1651));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62body))))->_count)=(0);
/*]*/
r60gc_align_mark_fixed_size(((T60*)_rc),oBC62body);
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
r7copy((T7*)(oBC62header),((T0*)ms62_407207));
r2append_in(_rcid,oBC62header);
r7copy((T7*)(oBC62body),((T0*)ms62_2051940780));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1665297219));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1831440704));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_160930));
r83put_extern5((T83*)(oBC19cpp),oBC62header,oBC62body);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62header))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62header),((T3)'T'));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r7append((T7*)(oBC62header),((T0*)ms20_3374));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms20_215791));
r7copy((T7*)(oBC62body),((T0*)ms20_614));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_8305));
/*[IF*/
if((/*RF2*/((T444*)(oBC19gc_handler))->_info_flag/*1*/)){
r369gc_info_nb_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_6755));
}
/*FI]*/
r7append((T7*)(oBC62body),((T0*)ms62_3175));
r369gc_store_left_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_46525));
r369gc_store_left_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_176986));
r369gc_store_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_411775958));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_479982486));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1748680500));
r369gc_store_left_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_236525));
r369gc_store_left_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_9130));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1648235130));
r369gc_store_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1800342110));
r7append((T7*)(oBC62body),((T0*)ms62_938298091));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_842464717));
r369gc_initialize_chunk(C,_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1704089558));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_672427151));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1562678200));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_8260));
r369gc_initialize_chunk(C,_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_1519036636));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_41861));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
r369gc_free_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_69947558));
r369gc_store_chunk_in(C,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_54875475));
r369gc_initialize_chunk(C,_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_433411101));
/*[IF*/
if(r369need_c_struct(C)){
r7append((T7*)(oBC62body),((T0*)ms62_1196941282));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms20_305));
}
/*FI]*/
r7append((T7*)(oBC62body),((T0*)ms62_54686284));
r2append_in(_rcid,oBC62body);
r7append((T7*)(oBC62body),((T0*)ms62_171955));
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
}


void r369standard_gc_define1(T369* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r369run_class(C);
_rcid=(/*RF2*/(((T60*)_rc))->_id/*16*/);
r7copy((T7*)(oBC62header),((T0*)ms20_11381817));
r7append((T7*)(oBC62header),((T0*)ms20_2248337));
r7extend((T7*)(oBC62header),((T3)'B'));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\40'));
r7append((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms20_305));
r7append((T7*)(oBC62header),((T0*)ms20_2248337));
r7extend((T7*)(oBC62header),((T3)'B'));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_699));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1527651872));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1126647264));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62header);
/*]*/
r7copy((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r369gc_store_in(C,oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
r7copy((T7*)(oBC62header),((T0*)ms20_3291));
r7extend((T7*)(oBC62header),((T3)'\40'));
r369gc_store_left_in(C,oBC62header);
r83put_extern2((T83*)(oBC19cpp),oBC62header,((T3)'0'));
r7copy((T7*)(oBC62header),((T0*)ms62_81437));
r369gc_store_chunk_in(C,oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
r7copy((T7*)(oBC62header),((T0*)ms20_614));
r2append_in(_rcid,oBC62header);
r7extend((T7*)(oBC62header),((T3)'\52'));
r369gc_free_in(C,oBC62header);
r83put_extern5((T83*)(oBC19cpp),oBC62header,((T0*)ms20_12331));
/*[IF*/
if((/*RF2*/((T444*)(oBC19gc_handler))->_info_flag/*1*/)){
r7copy((T7*)(oBC62header),((T0*)ms20_3291));
r7extend((T7*)(oBC62header),((T3)'\40'));
r369gc_info_nb_in(C,oBC62header);
r83put_extern2((T83*)(oBC19cpp),oBC62header,((T3)'0'));
}
/*FI]*/
}


T6 r369is_native_array(T369* C){
T6 R=0;
T0* _tna=NULL;
_tna=NULL;
R=(_tna)!=((void*)(NULL));
return R;
}


void r369gc_mark_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(r369id(C),a1);
}


void r369standard_gc_define2_for_expanded(T369* C){
T2 _rcid=0;
T0* _rc=NULL;
_rc=r369run_class(C);
/*[IF*/
if(r60gc_mark_to_follow(((T60*)_rc))){
_rcid=(/*RF2*/(((T60*)_rc))->_id/*16*/);
r7copy((T7*)(oBC62header),((T0*)ms20_18150));
r7extend((T7*)(oBC62header),((T3)'\40'));
r369gc_mark_in(C,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_284a));
r2append_in(_rcid,oBC62header);
r7append((T7*)(oBC62header),((T0*)ms62_1646a));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62body))))->_count)=(0);
/*]*/
r60gc_mark_fixed_size(((T60*)_rc),1,oBC62body);
r83put_c_function((T83*)(oBC19cpp),oBC62header,oBC62body);
}
/*FI]*/
}


void r369just_before_gc_mark_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r369standard_just_before_gc_mark_in(C,a1);
}
/*FI]*/
}


T2 r369id(T369* C){
T2 R=0;
R=(/*RF2*/((T61*)(r369base_class(C)))->_id/*0*/);
return R;
}


T2 r369c_sizeof_pointer(void){
T2 R=0;
T8 _p=NULL;
R=sizeof(T8);
return R;
}


void r369mapping_cast(T369* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62mapping_cast_buffer))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62mapping_cast_buffer),((T3)'\50'));
r369c_type_for_target_in(C,oBC62mapping_cast_buffer);
r7extend((T7*)(oBC62mapping_cast_buffer),((T3)'\51'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62mapping_cast_buffer);
/*]*/
}


void r369standard_gc_info_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_1419822228a));
r7append(((T7*)a1),/*(IRF4.6run_time_mark*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_to_string/*8*/)/*)*/);
r7append(((T7*)a1),((T0*)ms20_17723839));
r369gc_info_nb_in(C,a1);
r7append(((T7*)a1),((T0*)ms20_1330));
r7append(((T7*)a1),((T0*)ms62_1419822228));
r369gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms20_17723839));
r369gc_store_left_in(C,a1);
r7append(((T7*)a1),((T0*)ms20_1330));
}


void r369c_initialize(T369* C){
/*[IF*/
if(r369is_expanded(C)){
r369c_initialize_expanded(C);
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_12331));
/*]*/
}
/*FI]*/
}


void r369standard_c_typedef(T369* C){
T2 _mem_id=0;
_mem_id=r369id(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
/*[IF*/
if(r369need_c_struct(C)){
r7append((T7*)(oBC62tmp_string),((T0*)ms20_11381817));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_2248337));
r7extend((T7*)(oBC62tmp_string),((T3)'S'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
}
 else if(r369is_dummy_expanded(C)){
r7append((T7*)(oBC62tmp_string),((T0*)ms20_11381817));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_3291));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
}
 else if(r369is_reference(C)){
r7append((T7*)(oBC62tmp_string),((T0*)ms20_11381817));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_18150));
r7extend((T7*)(oBC62tmp_string),((T3)'\52'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
}


T6 r369need_gc_mark_function(T369* C){
T6 R=0;
/*[IF*/
if(r369is_reference(C)){
R=1;
}
else{
R=r60gc_mark_to_follow((T60*)(r369run_class(C)));
}
/*FI]*/
return R;
}


void r369fatal_error_generic_list(T369* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r369c_type_for_argument_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r7append(((T7*)a1),((T0*)ms20_2382));
}
 else if(r369is_dummy_expanded(C)){
r7append(((T7*)a1),((T0*)ms20_3291));
}
else{
r7extend(((T7*)a1),((T3)'T'));
r2append_in(r369id(C),a1);
}
/*FI]*/
}


void r369c_frame_descriptor(T369* C){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
/*[IF*/
if(r369is_reference(C)){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'R'));
}
else{
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'E'));
}
/*FI]*/
r2append_in(r369id(C),oBC19c_frame_descriptor_format);
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
}


T6 r369is_expanded(T369* C){
T6 R=0;
R=(/*RF2*/((T61*)(r369base_class(C)))->_is_expanded/*17*/);
return R;
}


void r369gc_info_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r369standard_gc_info_in(C,a1);
}
/*FI]*/
}


T0* r369base_class(T369* C){
T0* R=NULL;
T0* _bcn=NULL;
/*[IF*/
if(((/*RF2*/(C)->_base_class_memory/*4*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
_bcn=(/*RF2*/(C)->_base_class_name/*12*/);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
(/*SFN*/C->_base_class_memory)=r77base_class(((T77*)_bcn));
R=(/*RF2*/(C)->_base_class_memory/*4*/);
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_432936020);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82add_type((T0*)C,((T0*)ms20_46));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r369is_dummy_expanded(T369* C){
T6 R=0;
/*[IF*/
if(r369is_expanded(C)){
R=(r60writable_attributes((T60*)(r369run_class(C))))==((void*)(NULL));
}
/*FI]*/
return R;
}


void r369standard_c_print_function(T369* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r60c_print_function((T60*)(r369run_class(C)));
}
/*FI]*/
}


T6 r369is_reference(T369* C){
T6 R=0;
R=!((/*RF2*/((T61*)(r369base_class(C)))->_is_expanded/*17*/));
return R;
}


T6 r369need_c_struct(T369* C){
T6 R=0;
/*[IF*/
if(r369is_dummy_expanded(C)){
}
 else if(r369is_expanded(C)){
R=1;
}
 else if(r60is_tagged((T60*)(r369run_class(C)))){
R=1;
}
else{
R=(r60writable_attributes((T60*)(r369run_class(C))))!=((void*)(NULL));
}
/*FI]*/
return R;
}


void r369gc_define1(T369* C){
/*[IF*/
if(r369is_reference(C)){
r369standard_gc_define1(C);
}
/*FI]*/
}


void r369gc_define2(T369* C){
/*[IF*/
if(r369is_reference(C)){
r369standard_gc_define2(C);
}
else{
r369standard_gc_define2_for_expanded(C);
}
/*FI]*/
}


void r369c_type_for_target_in(T369* C,T0* a1){
/*[IF*/
if(r369is_dummy_expanded(C)){
r7append(((T7*)a1),((T0*)ms20_3291));
}
else{
r7extend(((T7*)a1),((T3)'T'));
r2append_in(r369id(C),a1);
r7extend(((T7*)a1),((T3)'\52'));
}
/*FI]*/
}


T0* r369expanded_initializer(T369* C){
T0* R=NULL;
/*[IF*/
if(r369is_expanded(C)){
R=r61expanded_initializer((T61*)(r369base_class(C)),(T0*)C);
}
/*FI]*/
return R;
}


T0* r369actual_reference(T369* C,T0* a1){
T0* R=NULL;
T104 _sp={NULL,0};
{T104 se_tmp0;
_sp=(*(se_tmp0=X62start_position(a1),&se_tmp0));
}
{T521*n=((T521*)se_malloc(sizeof(*n))/*28*/);
*n=M521;
r521from_expanded(n,_sp,(T0*)C);
R=((T0*)n);
}
return R;
}


void r369gc_free_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_1994331));
r2append_in(r369id(C),a1);
}


T6 r369is_a_in(T369* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_to_string/*8*/)/*)*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(/*RF2*/(((T60*)a2))->_current_type/*0*/);
_t1=r369to_runnable(C,_ct);
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r369demangling_in(T369* C,T0* a1){
/*[IF*/
if(r369is_reference(C)){
r7extend(((T7*)a1),((T3)'R'));
}
else{
r7extend(((T7*)a1),((T3)'E'));
}
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),/*(IRF4.6run_time_mark*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_to_string/*8*/)/*)*/);
}


void r369gc_align_mark_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_1085305030));
r2append_in(r369id(C),a1);
}


void r369c_initialize_expanded(T369* C){
T0* _rf=NULL;
T2 _i=0;
T0* _wa=NULL;
/*[IF*/
if(r369is_dummy_expanded(C)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\173');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
_wa=r60writable_attributes((T60*)(r369run_class(C)));
_i=(/*RF2*/(((T445*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_rf=r445item(((T445*)_wa),_i);
X62c_initialize((/*RF2*/(((T152*)_rf))->_result_type/*32*/));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\54');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\175');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r369standard_c_struct(T369* C){
T0* _t=NULL;
T0* _a=NULL;
T2 _mem_id=0;
T2 _i=0;
T0* _wa=NULL;
_mem_id=r369id(C);
_wa=r60writable_attributes((T60*)(r369run_class(C)));
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_2248337));
r7extend((T7*)(oBC62tmp_string),((T3)'S'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
/*[IF*/
if(r369is_reference(C)){
/*[IF*/
if(r60is_tagged((T60*)(r369run_class(C)))){
r7append((T7*)(oBC62tmp_string),((T0*)ms62_1710309));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_wa)!=((void*)(NULL))){
_i=(/*RF2*/(((T445*)_wa))->_upper/*12*/);
while (!((_i)==(0)))
{
_a=r445item(((T445*)_wa),_i);
_t=X62run_type((/*RF2*/(((T152*)_a))->_result_type/*32*/));
X62c_type_for_result_in(_t,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'\137'));
r7append((T7*)(oBC62tmp_string),X117to_string((/*RF2*/(((T152*)_a))->_name/*16*/)));
r7extend((T7*)(oBC62tmp_string),((T3)'\73'));
_i=(_i)-(1);
}
}
/*FI]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\175'));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
/*[IF*/
if(r369is_expanded(C)){
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_3291));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_2187619));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms62_284aa));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms62_35404));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms62_7066));
r83put_c_function((T83*)(oBC19cpp),oBC62tmp_string,((T0*)ms62_1029549485));
}
/*FI]*/
}
T0*oBC369check_memory=NULL;


void r369gc_initialize_chunk(T369* C,T2 a1,T0* a2){
r7extend(((T7*)a2),((T3)'\52'));
r369gc_store_chunk_in(C,a2);
r7append(((T7*)a2),((T0*)ms20_377));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms20_305));
r369gc_store_in(C,a2);
r7append(((T7*)a2),((T0*)ms62_44739));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms62_32605));
r369gc_store_chunk_in(C,a2);
r7append(((T7*)a2),((T0*)ms62_212314278));
r369gc_store_left_in(C,a2);
r7append(((T7*)a2),((T0*)ms20_377));
r2append_in(a1,a2);
r7append(((T7*)a2),((T0*)ms62_365929075));
r369gc_store_in(C,a2);
r7append(((T7*)a2),((T0*)ms62_169510));
}


void r369id_extra_information(T369* C,T0* a1){
r58put_string(((T58*)a1),((T0*)ms62_1360462097));
/*[IF*/
if(r369is_reference(C)){
r58put_string(((T58*)a1),((T0*)ms62_18257));
}
else{
r58put_string(((T58*)a1),((T0*)ms62_3337));
}
/*FI]*/
}


T6 r369is_a(T369* C,T0* a1){
T6 R=0;
T0* _obcn=NULL;
T0* _bcn=NULL;
_bcn=(/*RF2*/(C)->_base_class_name/*12*/);
_obcn=X62base_class_name(a1);
/*[IF*/
if(((/*RF2*/(((T77*)_bcn))->_to_string/*8*/))==((void*)((/*RF2*/(((T77*)_obcn))->_to_string/*8*/)))){
R=1;
}
 else if((r369is_reference(C))&&(X62is_expanded(a1))){
}
 else if(r77is_subclass_of(((T77*)_bcn),_obcn)){
/*[IF*/
if(X62is_generic(a1)){
R=r61is_a_vncg((T61*)(r77base_class(((T77*)_bcn))),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


T0* r369to_runnable(T369* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
_bc=r369base_class(C);
/*[IF*/
if(((/*RF2*/(((T61*)_bc))->_is_expanded/*17*/))&&(!(r184fast_has((T184*)(oBC369check_memory),_bc)))){
r184add_last((T184*)(oBC369check_memory),_bc);
r60set_at_run_time((T60*)(r369run_class(C)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(((T61*)_bc))->_formal_generic_list/*22*/))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T193*)((/*RF2*/(((T61*)_bc))->_formal_generic_list/*22*/)))->_start_position/*0*/));
}
r82add_type((T0*)C,((T0*)ms369_1618317100));
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
R=((T0*)(C));
return R;
}


void r369standard_c_object_model(T369* C){
T0* _rc=NULL;
T2 _mem_id=0;
_rc=r369run_class(C);
_mem_id=(/*RF2*/(((T60*)_rc))->_id/*16*/);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'M'));
r2append_in(_mem_id,oBC62tmp_string);
r83put_extern7((T83*)(oBC19cpp),oBC62tmp_string);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r60c_object_model_in(((T60*)_rc),oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
r83swap_on_h((T83*)(oBC19cpp));
}


void r369gc_store_left_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_280766651));
r2append_in(r369id(C),a1);
}


T0* r369run_class(T369* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_class_memory/*8*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
 else {/*AT*/(/*SFN*/C->_run_class_memory)=r59run_class(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
/*FI]*/
return R;
}


void r369c_header_pass3(T369* C){
/*[IF*/
if(r369is_expanded(C)){
/*[IF*/
if(r369need_c_struct(C)){
r369standard_c_struct(C);
}
/*FI]*/
}
/*FI]*/
}


void r369c_header_pass4(T369* C){
/*[IF*/
if(r369is_reference(C)){
/*[IF*/
if(r369need_c_struct(C)){
r369standard_c_struct(C);
}
/*FI]*/
}
/*FI]*/
r369standard_c_object_model(C);
r369standard_c_print_function(C);
}


void r369standard_just_before_gc_mark_in(T369* C,T0* a1){
r369gc_free_in(C,a1);
r7extend(((T7*)a1),((T3)'\75'));
r7append(((T7*)a1),((T0*)ms20_12331));
r7append(((T7*)a1),((T0*)ms20_305));
}


T0* r369smallest_ancestor(T369* C,T0* a1){
T0* R=NULL;
T0* _bc2=NULL;
T0* _bc=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_none(a1)){
R=((T0*)(C));
}
 else if(X62is_any(_rto)){
R=_rto;
}
else{
_bc=r369base_class(C);
_bc2=X62base_class(_rto);
/*[IF*/
if((_bc2)==((void*)(_bc))){
R=((T0*)(C));
}
 else if(r61is_subclass_of(((T61*)_bc2),_bc)){
R=((T0*)(C));
}
 else if(r61is_subclass_of(((T61*)_bc),_bc2)){
R=_rto;
}
 else if((X62is_expanded(_rto))&&(!(r369is_expanded(C)))){
R=X62smallest_ancestor(_rto,(T0*)C);
}
else{
R=r61smallest_ancestor(((T61*)_bc2),_rto,(T0*)C);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r369gc_info_nb_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms62_249330648));
r2append_in(r369id(C),a1);
}


void r369gc_call_new_in(T369* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(r369id(C),a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


void r256run_feature_match(T256* C,T0* a1){
r256run_feature_has_no_result(C);
X245match_with((/*RF2*/(C)->_arguments/*16*/),(/*RF2*/(C)->_run_feature/*12*/),a1);
}


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


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


T0* r256make_runnable(T256* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_arguments)=a2;
(/*SFN*/C->_run_feature)=a3;
R=((T0*)(C));
}
else{
{T256*n=((T256*)se_malloc(sizeof(*n))/*20*/);
*n=M256;
r256make(n,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
R=((T0*)n);
}
/*[IRF3.3set_run_feature*/((((T256*)(((T256*)R))))->_run_feature)=(a3);
/*]*/
}
/*FI]*/
return R;
}


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


void r256run_feature_has_no_result(T256* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*12*/)))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r256fatal_error(((T0*)ms167_1742784741));
}
/*FI]*/
}


void r256compile_to_c(T256* C){
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(*(se_tmp0=r256start_position(C),&se_tmp0)));
}
/*[IRF3.6call_proc_call_c2c*/{T256* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}


T6 r256stupid_switch(T256* C,T0* a1){
T6 R=0;
R=r256call_proc_call_stupid_switch(C,a1);
return R;
}


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


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


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


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


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


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


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


T2 r256arg_count(T256* C){
T2 R=0;
R=/*SSFRF4*//*X245count*/r245count((T245*)((/*RF2*/(C)->_arguments/*16*/)));
return R;
}


T0* r256to_runnable(T256* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r256runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r256runnable_args((/*RF2*/(C)->_arguments/*16*/),a1);
_rf=r256run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r256run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*16*/))))){
R=((T0*)(C));
}
else{
{T256*n=((T256*)se_malloc(sizeof(*n))/*20*/);
*n=M256;
r256with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


void r256finalize(T256* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*12*/);
_rc=X62run_class(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


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


void r255run_feature_match(T255* C,T0* a1){
r255run_feature_has_no_result(C);
X245match_with((/*RF2*/(C)->_arguments/*16*/),(/*RF2*/(C)->_run_feature/*12*/),a1);
}


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


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


T0* r255make_runnable(T255* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_arguments)=a2;
(/*SFN*/C->_run_feature)=a3;
R=((T0*)(C));
}
else{
{T255*n=((T255*)se_malloc(sizeof(*n))/*20*/);
*n=M255;
r255make(n,a1,(/*RF2*/(C)->_feature_name/*8*/),a2);
R=((T0*)n);
}
/*[IRF3.3set_run_feature*/((((T255*)(((T255*)R))))->_run_feature)=(a3);
/*]*/
}
/*FI]*/
return R;
}


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


void r255run_feature_has_no_result(T255* C){
/*[IF*/
if((X96result_type((/*RF2*/(C)->_run_feature/*12*/)))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
r255fatal_error(((T0*)ms167_1742784741));
}
/*FI]*/
}


void r255compile_to_c(T255* C){
{T104 se_tmp0;
r83se_trace_ins((T83*)(oBC19cpp),(*(se_tmp0=r255start_position(C),&se_tmp0)));
}
/*[IRF3.6call_proc_call_c2c*/{T255* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
}


T6 r255stupid_switch(T255* C,T0* a1){
T6 R=0;
R=r255call_proc_call_stupid_switch(C,a1);
return R;
}


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


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


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


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


T6 r255use_current(T255* C){
T6 R=0;
T0* _s=NULL;
T0* _ms=NULL;
/*[IF*/
if((((T0*)ms21_240810599))==((void*)(X117to_string((/*RF2*/(C)->_feature_name/*8*/))))){
_ms=r255arg1(C);
if(NULL!=(_ms)){
switch(((T0*)_ms)->id){
case 262:
break;
default:
_ms=NULL;
}
}/*[IF*/
if((_ms)!=((void*)(NULL))){
r470used_for_c_inline(_ms);
_s=(/*RF2*/(((T262*)_ms))->_to_string/*12*/);
R=r7has(((T7*)_s),((T3)'C'));
}
/*FI]*/
}
else{
R=r255standard_use_current(C);
}
/*FI]*/
return R;
}


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


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


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


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


T0* r255to_runnable(T255* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r255runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r255runnable_args((/*RF2*/(C)->_arguments/*16*/),a1);
_rf=r255run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r255run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*16*/))))){
R=((T0*)(C));
}
else{
{T255*n=((T255*)se_malloc(sizeof(*n))/*20*/);
*n=M255;
r255with(n,_t,(/*RF2*/(C)->_feature_name/*8*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


void r255finalize(T255* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*12*/);
_rc=X62run_class(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/((T63*)((/*RF2*/(((T60*)_rc))->_running/*21*/)))->_storage/*4*/))[0]/*)*/),_rf);
}


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


void r166run_feature_match(T166* C){
r166run_feature_has_no_result(C);
/*[IF*/
if((X96arguments((/*RF2*/(C)->_run_feature/*12*/)))!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position((/*RF2*/(C)->_feature_name/*8*/)),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position((/*RF2*/(C)->_run_feature/*12*/)),&se_tmp0)));
}
r166fatal_error(((T0*)ms166_1369876739));
}
/*FI]*/
}


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

