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


void r233add_when_item_1(T233* C,T0* a1){
T2 _v=0;
_v=(((T240*)a1))->_expression_value/*12*/;
/*[IF*/
if(/*(IRF4.6includes*/r234includes_integer(((T234*)(((T232*)(/*(IRF4.6e_inspect*/(((T234*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_v)/*)*/){
r233err_occ(C,_v,r240start_position(((T240*)a1)));
}
 else if(((C)->_values/*20*/)==((void*)(NULL))){
{T354*n=malloc(sizeof(*n));
*n=M354;
r354make(n,_v,_v);
C->_values=(T0*)n;
}
/*[IRF3.6put*/{T354* C1=(T354*)((C)->_values/*20*/);
T6 b1=1;
T2 b2=_v;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
else{
r354force((T354*)((C)->_values/*20*/),1,_v);
}
/*FI]*/
}
/*No:E_WHEN.compound*/


T0* r233to_runnable_integer(T233* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r21add_position(((T232*)(/*(IRF4.6e_inspect*/(((T234*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r233error((C)->_start_position/*0*/,((T0*)ms233_54404));
}
else{
_i=((T238*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T238*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X237to_runnable_integer(r238item((T238*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r233error((C)->_start_position/*0*/,((T0*)ms233_18640));
}
else{
/*[IRF3.6put*/{T238* C1=(T238*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X51current_type*/((T0*)((T324*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
C->_compound=r216to_runnable((T216*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r233error((C)->_start_position/*0*/,((T0*)ms233_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T233*n=malloc(sizeof(*n));
*n=M233;
r233from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r233to_runnable_integer(((T233*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_WHEN.start_position*/


void r233add_slice(T233* C,T0* a1,T0* a2){
T0* _element=NULL;
{T241*n=malloc(sizeof(*n));
*n=M241;
r241make(n,a1,a2);
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma238(1,
_element);
}
else{
r238add_last((T238*)((C)->_list/*4*/),_element);
}
/*FI]*/
}


void r233from_e_when(T233* C,T0* a1){
T0* _when_item=NULL;
T2 _i=0;
C->_start_position=(((T233*)a1))->_start_position/*0*/;
C->_list=r238twin((T238*)((((T233*)a1))->_list/*4*/));
_i=((T238*)((C)->_list/*4*/))->_lower/*12*/;
while (!((_i)>(((T238*)((C)->_list/*4*/))->_upper/*8*/))) {
_when_item=X237twin(r238item((T238*)((C)->_list/*4*/),_i));
/*X237clear_e_when*//*[IRF3.3clear_e_when*/((((T240*)(((T240*)_when_item))))->_e_when)=(NULL);
/*]*/
/*[IRF3.6put*/{T238* C1=(T238*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
C->_header_comment=(((T233*)a1))->_header_comment/*8*/;
C->_compound=(((T233*)a1))->_compound/*12*/;
}
/*No:E_WHEN.em1*/
/*No:E_WHEN.em2*/


T6 r233use_current(T233* C){
T6 R=0;
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
R=r216use_current((T216*)((C)->_compound/*12*/));
}
/*FI]*/
return R;
}


T6 r233includes_integer(T233* C,T2 a1){
T6 R=0;
R=((((C)->_values/*20*/)!=((void*)(NULL)))&&(r354valid_index((T354*)((C)->_values/*20*/),a1)))&&(r354item((T354*)((C)->_values/*20*/),a1));
return R;
}


void r233add_when_item_2(T233* C,T0* a1){
T2 _i=0;
T2 _u=0;
T2 _l=0;
_l=(((T241*)a1))->_lower_value/*20*/;
_u=(((T241*)a1))->_upper_value/*16*/;
/*[IF*/
if((_l)>=(_u)){
r233error(r241start_position(((T241*)a1)),((T0*)ms233_20927));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_i=_l;
while (!((_i)>(_u))) {
/*[IF*/
if(/*(IRF4.6includes*/r234includes_integer(((T234*)(((T232*)(/*(IRF4.6e_inspect*/(((T234*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_i)/*)*/){
r233err_occ(C,_i,r241start_position(((T241*)a1)));
_i=(_u)+(1);
}
else{
_i=(_i)+(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_values/*20*/)==((void*)(NULL))){
{T354*n=malloc(sizeof(*n));
*n=M354;
r354make(n,_l,_u);
C->_values=(T0*)n;
}
/*[IRF3.6set_all_with*/{T354* C1=(T354*)((C)->_values/*20*/);
T6 b1=1;
r355set_all_with((C1)->_storage/*0*/,b1,((C1)->_upper/*8*/)-((C1)->_lower/*12*/));
}/*]*/
}
else{
r354force((T354*)((C)->_values/*20*/),1,_l);
r354force((T354*)((C)->_values/*20*/),1,_u);
r354set_slice_with((T354*)((C)->_values/*20*/),1,_l,_u);
}
/*FI]*/
}
/*FI]*/
}


void r233compile_to_c(T233* C){
T2 _bs=0;
T2 _bi=0;
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_1068));
/*]*/
_bi=((T354*)((C)->_values/*20*/))->_lower/*12*/;
while (!((_bi)>(((T354*)((C)->_values/*20*/))->_upper/*8*/))) {
_bs=(_bi)+(1);
while (!(((_bs)>(((T354*)((C)->_values/*20*/))->_upper/*8*/))||(!(r354item((T354*)((C)->_values/*20*/),_bs))))) {
_bs=(_bs)+(1);
}
_bs=(_bs)-(1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if((_bi)==(_bs)){
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_bi);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_250));
/*]*/
r25put_inspect((T25*)(oBC12cpp));
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_bi);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_248a));
/*]*/
r25put_inspect((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_668));
/*]*/
r25put_inspect((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_248));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),_bs);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
_bi=(_bs)+(1);
while (!(((_bi)>(((T354*)((C)->_values/*20*/))->_upper/*8*/))||(r354item((T354*)((C)->_values/*20*/),_bi)))) {
_bi=(_bi)+(1);
}
/*[IF*/
if((_bi)<=(((T354*)((C)->_values/*20*/))->_upper/*8*/)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_502));
/*]*/
}
/*FI]*/
}
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms233_540));
/*]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_compound/*12*/));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_276));
/*]*/
}
/*No:E_WHEN.header_comment*/


void r233add_value(T233* C,T0* a1){
T0* _element=NULL;
{T240*n=malloc(sizeof(*n));
*n=M240;
/*[IRF3.3make*/((((T240*)(n)))->_expression)=(a1);
/*]*/
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma238(1,
_element);
}
else{
r238add_last((T238*)((C)->_list/*4*/),_element);
}
/*FI]*/
}
/*No:E_WHEN.fz_12*/
/*No:E_WHEN.e_inspect*/
/*No:E_WHEN.set_compound*/


void r233err_occ(T233* C,T2 a1,T0* a2){
r21add_position(((T232*)(/*(IRF4.6e_inspect*/(((T234*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms233_63886);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r233error(a2,((T0*)ms233_29634));
}


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


void r233make(T233* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_header_comment=a2;
}
/*No:E_WHEN.when_list*/
/*No:E_WHEN.values*/


void r233afd_check(T233* C){
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
r216afd_check((T216*)((C)->_compound/*12*/));
}
/*FI]*/
}
/*No:E_WHEN.list*/


T0* r233to_runnable_character(T233* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r21add_position(((T232*)(/*(IRF4.6e_inspect*/(((T234*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r233error((C)->_start_position/*0*/,((T0*)ms233_54404));
}
else{
_i=((T238*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T238*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X237to_runnable_character(r238item((T238*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r233error((C)->_start_position/*0*/,((T0*)ms233_18640));
}
else{
/*[IRF3.6put*/{T238* C1=(T238*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X51current_type*/((T0*)((T324*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
C->_compound=r216to_runnable((T216*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r233error((C)->_start_position/*0*/,((T0*)ms233_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T233*n=malloc(sizeof(*n));
*n=M233;
r233from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r233to_runnable_character(((T233*)R),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.base_class*/
/*No:CST_ATT_BOOLEAN.value_mem*/


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


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


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


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


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


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


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


T0* r205try_to_undefine_aux(T205* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r205start_position(C));
r205error(X83start_position(a1),((T0*)ms201_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_BOOLEAN.fz_dot*/
/*No:CST_ATT_BOOLEAN.stupid_switch*/


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


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


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


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


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


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


T0* r389once_mark(T389* C){
T0* R=NULL;
R=X83to_string(/*(IRF4.6first_name*/r85item(((T85*)(((T305*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/);
return R;
}


void r389default_mapping_procedure(T389* C){
r389default_mapping_function(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*No:RUN_FEATURE_5.fz_void*/


void r389address_of_c_define(T389* C,T0* a1){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r389use_current(C)){
}
else{
r389address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
else{
r389address_of_c_define_wrapper(C,a1);
}
/*FI]*/
}
/*No:RUN_FEATURE_5.ucs_false*/
/*No:RUN_FEATURE_5.is_static*/


T0* r389start_position(T389* C){
T0* R=NULL;
R=r305start_position((T305*)((C)->_base_feature/*32*/));
return R;
}
/*No:RUN_FEATURE_5.c_initialize_locals_one_by_one*/


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


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

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


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


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


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


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


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


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


T6 r389is_exported_in(T389* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r389clients(C)),a1);
return R;
}


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


void r389address_of_wrapper_name_in(T389* C,T0* a1){
r7extend(((T7*)a1),'W');
r2append_in(r389id(C),a1);
r7append(((T7*)a1),X83to_key((C)->_name/*16*/));
}
/*No:RUN_FEATURE_5.clients_memory*/
/*No:RUN_FEATURE_5.current_type*/


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


void r389make(T389* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r389run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X83to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r389initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_5.ucs_true*/
/*No:RUN_FEATURE_5.routine_body*/
/*No:RUN_FEATURE_5.name*/
/*No:RUN_FEATURE_5.fz_int*/
/*No:RUN_FEATURE_5.afd_check*/


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


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


void r389c_define(T389* C){
T0* _bfbc=NULL;
_bfbc=((T305*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if(!(r63once_flag(((T63*)_bfbc),r389once_mark(C)))){
r389once_boolean(C);
}
/*FI]*/
r389define_prototype(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms389_1156));
/*]*/
r389once_flag(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms389_2454));
/*]*/
r389c_define_opening(C);
r389once_flag(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms389_756));
/*]*/
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r216compile_to_c((T216*)((C)->_routine_body/*44*/));
}
/*FI]*/
r389c_define_closing(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms389_798));
/*]*/
r389c_frame_descriptor(C);
}


void r389once_result_in(T389* C,T0* a1){
r7extend(((T7*)a1),'o');
r305mapping_c_name_in((T305*)((C)->_base_feature/*32*/),a1);
}
/*No:RUN_FEATURE_5.rescue_compound*/


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


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


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


void r389c_initialize_ds_one_by_one(T389* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms51_37325));
r389c_frame_descriptor_name_in(C,((T0*)ms51_3077376));
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms13_144));
/*[IF*/
if(r389use_current(C)){
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_18550));
}
else{
r7append((T7*)(((T0*)ms51_3077376)),((T0*)ms51_11254));
}
/*FI]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_3077376));
/*]*/
r25put_position_in_ds(r389start_position(C));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_11736));
/*]*/
/*[IF*/
if((((T204*)(oBC12c_frame_descriptor_local_count))->_value/*0*/)>(0)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_12150));
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_5.ucs_not_computed*/
/*No:RUN_FEATURE_5.is_pre_computable*/
/*No:RUN_FEATURE_5.collect_c_tmp*/


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


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


void r389address_of_c_mapping(T389* C){
/*[IF*/
if(r43boost((T43*)(oBC12run_control))){
/*[IF*/
if(r389use_current(C)){
r389mapping_name(C);
}
else{
r389address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
else{
r389address_of_c_mapping_wrapper(C);
}
/*FI]*/
}
/*No:RUN_FEATURE_5.mapping_c*/
/*No:RUN_FEATURE_5.can_be_dropped*/


void r389initialize(T389* C){
C->_arguments=((T305*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r187is_runnable((T187*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T187*n=malloc(sizeof(*n));
*n=M187;
r187with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T305*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
C->_local_vars=r178to_runnable((T178*)((C)->_local_vars/*40*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T305*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
C->_routine_body=r216to_runnable((T216*)((C)->_routine_body/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r43require_check((T43*)(oBC12run_control))){
C->_require_assertion=r305run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r43ensure_check((T43*)(oBC12run_control))){
C->_ensure_assertion=r305run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T305*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T363*)((T363*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r216to_runnable((T216*)((C)->_rescue_compound/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
r344add_procedure((T0*)C);
}
/*No:RUN_FEATURE_5.require_assertion*/


void r389once_boolean(T389* C){
r7copy((T7*)(((T0*)ms51_3077376)),((T0*)ms13_1011));
r7extend((T7*)(((T0*)ms51_3077376)),'\40');
r389once_flag_in(C,((T0*)ms51_3077376));
r25put_extern2((T25*)(oBC12cpp),((T0*)ms51_3077376),'0');
}


void r389once_flag_in(T389* C,T0* a1){
r7extend(((T7*)a1),'f');
r305mapping_c_name_in((T305*)((C)->_base_feature/*32*/),a1);
}
/*No:RUN_FEATURE_5.compute_use_current*/
/*No:RUN_FEATURE_5.local_vars*/


void r389c_frame_descriptor_name_in(T389* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r389id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}
/*No:COMMENT.start_position*/
/*No:COMMENT.add_last*/


void r82good_end(T82* C,T0* a1){
/*[IF*/
if(!(r7has_string((T7*)(r39item((T39*)((C)->_list/*4*/),1)),(((T64*)a1))->_to_string/*0*/))){
r21add_position((((T64*)a1))->_start_position/*4*/);
r82warning((C)->_start_position/*0*/,((T0*)ms82_44577));
}
/*FI]*/
}


void r82warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:COMMENT.count*/


void r82make(T82* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}


void r82append(T82* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>(((T39*)((((T82*)a1))->_list/*4*/))->_upper/*8*/))) {
/*[IRF3.5add_last*/r39add_last(((T39*)((C)->_list/*4*/)),r39item((T39*)((((T82*)a1))->_list/*4*/),_i));
/*]*/
_i=(_i)+(1);
}
}
/*No:COMMENT.list*/
/*No:PRECURSOR_NAME.us_precursor*/


T6 r374is_frozen(T374* C){
T6 R=0;
R=X83is_frozen((C)->_enclosing/*4*/);
return R;
}


void r374undefine_in(T374* C,T0* a1){
/*[IF*/
if(r374is_frozen(C)){
r374error(r374start_position(C),((T0*)ms83_117530));
r63fatal_undefine(((T63*)a1),(T0*)C);
}
/*FI]*/
}


T0* r374origin_base_class(T374* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=r374start_position(C);
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r70base_class(((T70*)_sp));
}
/*FI]*/
return R;
}


T0* r374start_position(T374* C){
T0* R=NULL;
R=X83start_position((C)->_enclosing/*4*/);
return R;
}


T0* r374to_string(T374* C){
T0* R=NULL;
R=X83to_string((C)->_enclosing/*4*/);
return R;
}
/*No:PRECURSOR_NAME.put_cpp_tag*/
/*No:PRECURSOR_NAME.declaration_in*/
/*No:PRECURSOR_NAME.to_key*/


T0* r374name_in(T374* C,T0* a1){
T0* R=NULL;
T0* _bc=NULL;
_bc=r374origin_base_class(C);
/*[IF*/
if((_bc)==((void*)(a1))){
R=(T0*)C;
}
else{
R=r63new_name_of(((T63*)a1),_bc,(T0*)C);
}
/*FI]*/
return R;
}


void r374refer_to(T374* C,T2 a1,T0* a2){
C->_enclosing=a2;
C->_to_key=r84for_precursor(a1,X83to_key(a2));
}


void r374error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:PRECURSOR_NAME.mapping_c_in*/
/*No:PRECURSOR_NAME.enclosing*/


void r313append_in(T313* C,T0* a1){
X179add_last(a1,(C)->_name/*4*/);
}
/*No:DECLARATION_1.count*/


void r313make(T313* C,T0* a1,T0* a2){
C->_name=a1;
/*X184set_result_type*//*[IRF3.3set_result_type*/((((T183*)((T183*)((C)->_name/*4*/))))->_result_type)=(a2);
/*]*/
}
/*No:DECLARATION_1.name*/
/*No:ASSERTION.tag*/


T0* r103start_position(T103* C){
T0* R=NULL;
/*[IF*/
if(((C)->_tag/*0*/)!=((void*)(NULL))){
R=((T107*)((C)->_tag/*0*/))->_start_position/*4*/;
}
 else if(((C)->_expression/*4*/)!=((void*)(NULL))){
R=X56start_position((C)->_expression/*4*/);
}
else{
R=((T82*)((C)->_comment/*8*/))->_start_position/*0*/;
}
/*FI]*/
return R;
}


void r103c_declare_for_old(T103* C){
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
X56c_declare_for_old((C)->_expression/*4*/);
}
/*FI]*/
}


T6 r103is_always_true(T103* C){
T6 R=0;
/*[IF*/
if(((C)->_expression/*4*/)==((void*)(NULL))){
R=1;
}
 else if(X56is_static((C)->_expression/*4*/)){
R=(X56static_value((C)->_expression/*4*/))==(1);
}
/*FI]*/
return R;
}
/*No:ASSERTION.expression*/
/*No:ASSERTION.fz_is_not_boolean*/


T6 r103use_current(T103* C){
T6 R=0;
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
R=X56use_current((C)->_expression/*4*/);
}
/*FI]*/
return R;
}


void r103compile_to_c(T103* C){
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
r25check_assertion((T25*)(oBC12cpp),(C)->_expression/*4*/);
}
/*FI]*/
}


T0* r103to_runnable(T103* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
_e=X56to_runnable((C)->_expression/*4*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r103error(r103start_position(C),((T0*)ms13_14266));
}
else{
C->_expression=_e;
/*[IF*/
if(!(X54is_boolean(X56result_type((C)->_expression/*4*/)))){
r21add_type(X56result_type((C)->_expression/*4*/),((T0*)ms13_18320));
r103error(r103start_position(C),((T0*)ms13_14266));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
else{
{T103*n=malloc(sizeof(*n));
*n=M103;
r103make(n,(C)->_tag/*0*/,(C)->_expression/*4*/,(C)->_comment/*8*/);
R=(T0*)n;
}
R=r103to_runnable(((T103*)R),a1);
}
/*FI]*/
return R;
}
/*No:ASSERTION.fz_bad_assertion*/
/*No:ASSERTION.current_type*/


void r103compile_to_c_old(T103* C){
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
X56compile_to_c_old((C)->_expression/*4*/);
}
/*FI]*/
}


T6 r103is_pre_computable(T103* C){
T6 R=0;
/*[IF*/
if(((C)->_expression/*4*/)==((void*)(NULL))){
R=1;
}
else{
R=X56is_pre_computable((C)->_expression/*4*/);
}
/*FI]*/
return R;
}


void r103collect_c_tmp(T103* C){
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
X56collect_c_tmp((C)->_expression/*4*/);
}
/*FI]*/
}


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


void r103make(T103* C,T0* a1,T0* a2,T0* a3){
C->_tag=a1;
C->_expression=a2;
C->_comment=a3;
}
/*No:ASSERTION.comment*/


void r103afd_check(T103* C){
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
X56afd_check((C)->_expression/*4*/);
}
/*FI]*/
}
/*No:REVERSE_ASSIGNMENT.nb_errors*/
/*No:REVERSE_ASSIGNMENT.fz_cast_t0_star*/
/*No:REVERSE_ASSIGNMENT.fz_brhsoa*/


T0* r283start_position(T283* C){
T0* R=NULL;
R=X56start_position((C)->_left_side/*4*/);
return R;
}


T0* r283add_comment(T283* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r283right_type(T283* C){
T0* R=NULL;
R=X56result_type((C)->_right_side/*8*/);
return R;
}
/*No:REVERSE_ASSIGNMENT.right_side*/


T6 r283use_current(T283* C){
T6 R=0;
/*[IF*/
if(X56use_current((C)->_left_side/*4*/)){
R=1;
}
else{
R=X56use_current((C)->_right_side/*8*/);
}
/*FI]*/
return R;
}


void r283compile_to_c(T283* C){
T2 _i=0;
T0* _run=NULL;
/*[IF*/
if(X54is_expanded(X54run_type(r283right_type(C)))){
r21add_position(r283start_position(C));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms283_116775);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_run=((T24*)(X54run_class(r283left_type(C))))->_running/*12*/;
/*[IF*/
if((_run)==((void*)(NULL))){
/*[IF*/
if(!(X56can_be_dropped((C)->_right_side/*8*/))){
X56compile_to_c((C)->_right_side/*8*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*FI]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_3227));
/*]*/
}
else{
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(X56is_current((C)->_right_side/*8*/)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
}
/*FI]*/
X56compile_to_c((C)->_right_side/*8*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_9732));
/*]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_15765));
/*]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_462));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_2856));
/*]*/
_i=(((T328*)_run))->_lower/*12*/;
while (!((_i)>((((T328*)_run))->_upper/*8*/))) {
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_2295));
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T24*)(r328item(((T328*)_run),_i)))->_id/*4*/);
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_186));
/*]*/
_i=(_i)+(1);
}
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_10285));
/*]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms283_8298));
/*]*/
}
/*FI]*/
}


T0* r283to_runnable(T283* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X56to_runnable((C)->_left_side/*4*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r283error(X56start_position((C)->_left_side/*4*/),((T0*)ms13_63888));
}
else{
C->_left_side=_e;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_e=X56to_runnable((C)->_right_side/*8*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r283error(X56start_position((C)->_right_side/*8*/),((T0*)ms13_67592));
}
else{
C->_right_side=_e;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0))&&(X54is_a(X54run_type(r283right_type(C)),X54run_type(r283left_type(C))))){
/*[IF*/
if((!(X56is_current((C)->_right_side/*8*/)))&&(!(X54is_like_current(r283left_type(C))))){
r21add_type(r283right_type(C),((T0*)ms283_3528));
r21add_type(r283left_type(C),((T0*)ms283_101700));
r283warning(r283start_position(C),((T0*)ms283_34875));
}
/*FI]*/
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T69*)((T69*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(!(X54is_reference(X54run_type(r283left_type(C))))){
r21add_type(X54run_type(r283left_type(C)),((T0*)ms283_38975));
r283error(r283start_position(C),((T0*)ms283_71925));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
{T283*n=malloc(sizeof(*n));
*n=M283;
r283make(n,(C)->_left_side/*4*/,(C)->_right_side/*8*/);
R=(T0*)n;
}
R=r283to_runnable(((T283*)R),a1);
}
/*FI]*/
return R;
}
/*No:REVERSE_ASSIGNMENT.fz_00*/


void r283warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:REVERSE_ASSIGNMENT.fz_blhsoa*/
/*No:REVERSE_ASSIGNMENT.current_type*/
/*No:REVERSE_ASSIGNMENT.is_pre_computable*/


void r283collect_c_tmp(T283* C){
X56collect_c_tmp((C)->_right_side/*8*/);
}


T0* r283left_type(T283* C){
T0* R=NULL;
R=X56result_type((C)->_left_side/*4*/);
return R;
}
/*No:REVERSE_ASSIGNMENT.left_side*/


void r283error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:REVERSE_ASSIGNMENT.end_mark_comment*/


void r283make(T283* C,T0* a1,T0* a2){
C->_left_side=a1;
C->_right_side=a2;
}


void r283afd_check(T283* C){
X56afd_check((C)->_right_side/*8*/);
}
/*No:REVERSE_ASSIGNMENT.fatal_error*/


void r198set_require_else(T198* C,T0* a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T286*n=malloc(sizeof(*n));
*n=M286;
r286make(n,a1,a2,a3);
C->_require_assertion=(T0*)n;
}
/*[IRF3.3set_require_else*/((((T286*)((T286*)((C)->_require_assertion/*16*/))))->_is_require_else)=(1);
/*]*/
}
/*FI]*/
}
/*No:TMP_FEATURE.set_obsolete_mark*/


T0* r198to_cst_att_integer(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_integer((C)->_type/*4*/)){
{T213*n=malloc(sizeof(*n));
*n=M213;
r213make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
 else if(X54is_real((C)->_type/*4*/)){
{T211*n=malloc(sizeof(*n));
*n=M211;
r211make(n,r198n(),(C)->_type/*4*/,r174to_real_constant(((T174*)a1)));
R=(T0*)n;
}
}
 else if(X54is_double((C)->_type/*4*/)){
{T212*n=malloc(sizeof(*n));
*n=M212;
r212make(n,r198n(),(C)->_type/*4*/,r174to_real_constant(((T174*)a1)));
R=(T0*)n;
}
}
else{
r198error(X54start_position((C)->_type/*4*/),((T0*)ms198_236778));
}
/*FI]*/
return R;
}


T0* r198to_external_routine(T198* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T290*n=malloc(sizeof(*n));
*n=M290;
r290make(n,r198n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,a1,a2);
R=(T0*)n;
}
}
else{
{T291*n=malloc(sizeof(*n));
*n=M291;
r291make(n,r198n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,a1,a2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r198to_deferred_routine(T198* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T285*n=malloc(sizeof(*n));
*n=M285;
/*[IRF3.6make*/{T285* C1=n;
T0* b1=r198n();
T0* b2=(C)->_arguments/*0*/;
T0* b3=(C)->_obsolete_mark/*12*/;
T0* b4=(C)->_header_comment/*8*/;
T0* b5=(C)->_require_assertion/*16*/;
r285make_routine(C1,b1,b2,b3,b4,b5);
}/*]*/
R=(T0*)n;
}
}
else{
{T287*n=malloc(sizeof(*n));
*n=M287;
r287make(n,r198n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.header_comment*/
T0*oBC198names=NULL;


T0* r198to_cst_att_boolean(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_boolean((C)->_type/*4*/)){
{T205*n=malloc(sizeof(*n));
*n=M205;
r205make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r198error(X54start_position((C)->_type/*4*/),((T0*)ms198_147888));
}
/*FI]*/
return R;
}


T0* r198to_writable_attribute(T198* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r198error(X83start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T86*)(oBC198names))->_storage/*0*/)[0]/*)*//*)*/),((T0*)ms198_33810));
}
 else if(((C)->_arguments/*0*/)!=((void*)(NULL))){
/*[IRF3.6ecp*/{T34* C1=(T34*)(oBC12eiffel_parser);
T0* b1=((T0*)ms198_99097);
r34error(r34current_position(C1),b1);
}/*]*/
}
/*FI]*/
{T314*n=malloc(sizeof(*n));
*n=M314;
r314make(n,r198n(),(C)->_type/*4*/);
R=(T0*)n;
}
return R;
}
/*No:TMP_FEATURE.us_void*/


T0* r198to_procedure_or_function(T198* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T302*n=malloc(sizeof(*n));
*n=M302;
r302make(n,r198n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
else{
{T303*n=malloc(sizeof(*n));
*n=M303;
r303make(n,r198n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.fatal_error*/
/*No:TMP_FEATURE.set_local_vars*/


void r198set_require(T198* C,T0* a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T286*n=malloc(sizeof(*n));
*n=M286;
r286make(n,a1,a2,a3);
C->_require_assertion=(T0*)n;
}
}
/*FI]*/
}
/*No:TMP_FEATURE.arguments*/


void r198initialize(T198* C){
/*[IRF3.3clear*/((((T86*)((T86*)(oBC198names))))->_upper)=(-(1));
/*]*/
C->_arguments=NULL;
C->_type=NULL;
C->_header_comment=NULL;
C->_obsolete_mark=NULL;
C->_require_assertion=NULL;
C->_local_vars=NULL;
C->_routine_body=NULL;
}


T0* r198n(void){
T0* R=NULL;
{T85*n=malloc(sizeof(*n));
*n=M85;
r85make_n(n,oBC198names);
R=(T0*)n;
}
return R;
}
/*No:TMP_FEATURE.type*/


T0* r198to_cst_att_bit(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_bit((C)->_type/*4*/)){
{T210*n=malloc(sizeof(*n));
*n=M210;
r210make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r198error(X54start_position((C)->_type/*4*/),((T0*)ms198_127680));
}
/*FI]*/
return R;
}


void r198add_synonym(T0* a1){
/*[IF*/
if((X83to_string(a1))==((void*)(((T0*)ms14_1648)))){
r21add_position(X83start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_116370);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
r86add_last((T86*)(oBC198names),a1);
}
/*No:TMP_FEATURE.require_assertion*/
/*No:TMP_FEATURE.em01*/


T0* r198to_cst_att_real(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_real((C)->_type/*4*/)){
{T211*n=malloc(sizeof(*n));
*n=M211;
r211make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
 else if(X54is_double((C)->_type/*4*/)){
{T212*n=malloc(sizeof(*n));
*n=M212;
r212make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r21add_position(X54start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_186794);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.set_routine_body*/
/*No:TMP_FEATURE.set_arguments*/


void r198to_cst_att_check_result_type(T198* C){
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r21add_position(X83start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T86*)(oBC198names))->_storage/*0*/)[0]/*)*//*)*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_98322);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(!(X54is_run_type((C)->_type/*4*/))){
r21add_position(X54start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_84360);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r198to_cst_att_unique(T198* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r21add_position(X83start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T86*)(oBC198names))->_storage/*0*/)[0]/*)*//*)*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_87134);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(X54is_integer((C)->_type/*4*/)){
{T199*n=malloc(sizeof(*n));
*n=M199;
r199make(n,r198n(),(C)->_type/*4*/);
R=(T0*)n;
}
}
else{
r21add_position(X54start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms198_87134);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


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


T0* r198to_cst_att_string(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_string((C)->_type/*4*/)){
{T207*n=malloc(sizeof(*n));
*n=M207;
r207make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r198error(X54start_position((C)->_type/*4*/),((T0*)ms198_142698));
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.routine_body*/


T0* r198to_cst_att_character(T198* C,T0* a1){
T0* R=NULL;
r198to_cst_att_check_result_type(C);
/*[IF*/
if(X54is_character((C)->_type/*4*/)){
{T206*n=malloc(sizeof(*n));
*n=M206;
r206make(n,r198n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r198error(X54start_position((C)->_type/*4*/),((T0*)ms198_158544));
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.set_type*/
/*No:TMP_FEATURE.local_vars*/
/*No:TMP_FEATURE.set_header_comment*/


T0* r198to_once_routine(T198* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T305*n=malloc(sizeof(*n));
*n=M305;
r305make(n,r198n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
else{
{T306*n=malloc(sizeof(*n));
*n=M306;
r306make(n,r198n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.obsolete_mark*/
/*No:WRITTEN_CURRENT.fz_cast_t0_star*/
/*No:WRITTEN_CURRENT.static_value*/


void r158mapping_c_target(T0* a1){
T6 _flag=0;
/*[IF*/
{/*AT*/_flag=r25call_invariant_start(a1);
}
/*FI]*/
r25print_current((T25*)(oBC12cpp));
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T45* C1=(T45*)(oBC25out_c);
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
/*No:WRITTEN_CURRENT.is_static*/
/*No:WRITTEN_CURRENT.can_be_dropped*/
/*No:WRITTEN_CURRENT.is_manifest_string*/
/*No:WRITTEN_CURRENT.start_position*/
/*No:WRITTEN_CURRENT.c_simple*/
/*No:WRITTEN_CURRENT.c_declare_for_old*/


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


T2 r158to_integer(T158* C){
T2 R=0;
r158error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:WRITTEN_CURRENT.use_current*/
/*No:WRITTEN_CURRENT.dca_inline_argument*/


void r158compile_to_c(T158* C){
/*[IF*/
if(X54is_user_expanded((C)->_result_type/*8*/)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\52';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
r25print_current((T25*)(oBC12cpp));
}


T0* r158to_runnable(T158* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_result_type/*8*/)==((void*)(NULL))){
C->_result_type=a1;
R=(T0*)C;
}
 else if(((C)->_result_type/*8*/)==((void*)(a1))){
R=(T0*)C;
}
else{
{T158*n=malloc(sizeof(*n));
*n=M158;
/*[IRF3.3make*/((((T158*)(n)))->_start_position)=((C)->_start_position/*4*/);
/*]*/
R=(T0*)n;
}
R=r158to_runnable(((T158*)R),a1);
}
/*FI]*/
return R;
}
/*No:WRITTEN_CURRENT.isa_dca_inline_argument*/
/*No:WRITTEN_CURRENT.compile_to_c_old*/
/*No:WRITTEN_CURRENT.is_pre_computable*/
/*No:WRITTEN_CURRENT.collect_c_tmp*/
/*No:WRITTEN_CURRENT.fz_iinaiv*/
/*No:WRITTEN_CURRENT.result_type*/


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


void r158mapping_c_arg(T158* C,T0* a1){
T0* _rt=NULL;
_rt=X54run_type((C)->_result_type/*8*/);
/*[IF*/
if(X54is_reference(_rt)){
/*[IF*/
if(X54is_reference(a1)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
r25print_current((T25*)(oBC12cpp));
}
else{
X54to_expanded(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25print_current((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(a1)){
X54to_reference(_rt);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25print_current((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
else{
r25print_current((T25*)(oBC12cpp));
}
/*FI]*/
}
/*FI]*/
}
/*No:WRITTEN_CURRENT.is_void*/
/*No:WRITTEN_CURRENT.afd_check*/
/*No:WRITTEN_CURRENT.is_result*/

