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


void r280used_as_reference(T280* C){
/*[IF*/
if(r280is_expanded(C)){
r24used_as_reference((T24*)(r280run_class(C)));
}
/*FI]*/
}


T2 r280id(T280* C){
T2 R=0;
R=((T24*)(r280run_class(C)))->_id/*4*/;
return R;
}


T6 r280is_user_expanded(T280* C){
T6 R=0;
R=X54is_user_expanded((C)->_run_type/*12*/);
return R;
}


T6 r280is_pointer(T280* C){
T6 R=0;
R=X54is_pointer((C)->_run_type/*12*/);
return R;
}


T0* r280formal_arg(T280* C){
T0* R=NULL;
R=/*(IRF4.6item*/r279item(((T279*)(((T94*)(r280formal_generic_list(C)))->_list/*4*/)),(C)->_rank/*8*/)/*)*/;
return R;
}


T0* r280to_runnable(T280* C,T0* a1){
T0* R=NULL;
T0* _gl=NULL;
T0* _t=NULL;
T0* _p=NULL;
T0* _bc_ct=NULL;
T0* _bc_written=NULL;
_bc_written=r70base_class((T70*)(/*(IRF4.6start_position*/(((T64*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/));
_bc_ct=X54base_class(a1);
/*[IF*/
if((_bc_written)==((void*)(_bc_ct))){
_gl=X54generic_list(a1);
/*[IF*/
if(((_gl)==((void*)(NULL)))||(((C)->_rank/*8*/)>((((T261*)_gl))->_upper/*8*/))){
r21add_position(X54start_position(a1));
r21add_position(/*(IRF4.6start_position*/(((T64*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_60544);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=r280make_runnable(C,r261item(((T261*)_gl),(C)->_rank/*8*/));
}
/*FI]*/
}
else{
_p=/*(IRF4.6first_parent_for*/r78first_parent_for(((T78*)((((T63*)_bc_ct))->_parent_list/*40*/)),_bc_written)/*)*/;
while (!((_p)==((void*)(NULL)))) {
_t=(((T79*)_p))->_type/*4*/;
_t=X54run_type(X54to_runnable(_t,a1));
/*[IF*/
if((R)==((void*)(NULL))){
R=r280to_runnable(C,_t);
_p=NULL;
}
else{
_p=/*(IRF4.6next_parent_for*/r78next_parent_for(((T78*)((((T63*)_bc_ct))->_parent_list/*40*/)),_bc_written,_p)/*)*/;
}
/*FI]*/
}
/*[IF*/
if((R)==((void*)(NULL))){
r21add_type(a1,((T0*)ms280_18416));
r280warning(/*(IRF4.6start_position*/(((T64*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms280_50428));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r280c_initialize_in(T280* C,T0* a1){
X54c_initialize_in((C)->_run_type/*12*/,a1);
}


void r280gc_define1(T280* C){
X54gc_define1((C)->_run_type/*12*/);
}


void r280to_reference(T280* C){
X54to_reference((C)->_run_type/*12*/);
}


void r280gc_mark_in(T280* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_8869));
r2append_in(r280id(C),a1);
}


T0* r280run_class(T280* C){
T0* R=NULL;
R=r22run_class((C)->_run_type/*12*/);
return R;
}


void r280c_header_pass2(T280* C){
X54c_header_pass2((C)->_run_type/*12*/);
}


T0* r280formal_generic_list(T280* C){
T0* R=NULL;
R=((T63*)(r70base_class((T70*)(/*(IRF4.6start_position*/(((T64*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/))))->_formal_generic_list/*28*/;
return R;
}


void r280c_header_pass4(T280* C){
X54c_header_pass4((C)->_run_type/*12*/);
}
/*No:TYPE_FORMAL_GENERIC.is_like_current*/


T0* r280make_runnable(T280* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
_rt2=X54run_type(a1);
/*[IF*/
if((_rt2)==((void*)(NULL))){
/*[IF*/
if((a1)!=((void*)(NULL))){
r21add_position(X54start_position(a1));
}
/*FI]*/
r280error(/*(IRF4.6start_position*/(((T64*)((C)->_formal_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms13_28959));
}
 else if(((C)->_run_type/*12*/)==((void*)(NULL))){
C->_run_type=_rt2;
R=(T0*)C;
}
else{
R=r280twin(C);
/*[IRF3.3set_run_type*/((((T280*)(((T280*)R))))->_run_type)=(_rt2);
/*]*/
}
/*FI]*/
return R;
}


T6 r280is_bit(T280* C){
T6 R=0;
R=X54is_bit((C)->_run_type/*12*/);
return R;
}


T0* r280smallest_ancestor(T280* C,T0* a1){
T0* R=NULL;
R=X54smallest_ancestor((C)->_run_type/*12*/,a1);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fatal_error*/
/*No:TYPE_FORMAL_GENERIC.set_run_type*/
/*No:TYPE_FORMAL_GENERIC.fz_bnga*/


T0* r280run_time_mark(T280* C){
T0* R=NULL;
R=X54run_time_mark((C)->_run_type/*12*/);
return R;
}


T6 r280is_expanded(T280* C){
T6 R=0;
R=X54is_expanded((C)->_run_type/*12*/);
return R;
}


void r280warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}


void r280gc_info_in(T280* C,T0* a1){
X54gc_info_in((C)->_run_type/*12*/,a1);
}


void r280gc_define2(T280* C){
X54gc_define2((C)->_run_type/*12*/);
}
/*No:TYPE_FORMAL_GENERIC.fz_dot*/
/*No:TYPE_FORMAL_GENERIC.is_like_feature*/


T6 r280is_a(T280* C,T0* a1){
T6 R=0;
R=X54is_a((C)->_run_type/*12*/,a1);
return R;
}


void r280c_initialize(T280* C){
X54c_initialize((C)->_run_type/*12*/);
}


T6 r280is_character(T280* C){
T6 R=0;
R=X54is_character((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.written_mark*/


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


void r280make(T280* C,T0* a1,T2 a2){
C->_rank=a2;
C->_formal_name=a1;
}


void r280demangling_in(T280* C,T0* a1){
/*[IF*/
if(r280is_reference(C)){
r7extend(((T7*)a1),'R');
}
else{
r7extend(((T7*)a1),'E');
}
/*FI]*/
r7extend(((T7*)a1),'\40');
r7append(((T7*)a1),r280run_time_mark(C));
}


void r280fatal_error_generic_list(T280* C){
r21add_type((T0*)C,((T0*)ms54_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}


T6 r280is_array(T280* C){
T6 R=0;
R=X54is_array((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fz_bga*/


T6 r280is_dummy_expanded(T280* C){
T6 R=0;
R=X54is_dummy_expanded((C)->_run_type/*12*/);
return R;
}


T2 r280space_for_variable(T280* C){
T2 R=0;
R=X54space_for_variable((C)->_run_type/*12*/);
return R;
}


void r280to_expanded(T280* C){
X54to_expanded((C)->_run_type/*12*/);
}


T0* r280generic_list(T280* C){
T0* R=NULL;
/*[IF*/
if(r280is_generic(C)){
R=X54generic_list((C)->_run_type/*12*/);
}
else{
r280fatal_error_generic_list(C);
}
/*FI]*/
return R;
}


T0* r280base_class(T280* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r280base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r64base_class(((T64*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms54_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:TYPE_FORMAL_GENERIC.formal_name*/


void r280cast_to_ref(T280* C){
X54cast_to_ref((C)->_run_type/*12*/);
}


T0* r280base_class_name(T280* C){
T0* R=NULL;
R=X54base_class_name((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.is_formal_generic*/


T6 r280is_a_in(T280* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((/*(IRF4.6written_mark*/(((T64*)((C)->_formal_name/*4*/)))->_to_string/*0*//*)*/)==((void*)(X54written_mark(a1)))){
R=1;
}
else{
_ct=(((T24*)a2))->_current_type/*0*/;
_t1=r280to_runnable(C,_ct);
_t2=X54to_runnable(a1,_ct);
/*[IF*/
if((X54run_time_mark(_t1))==((void*)(X54run_time_mark(_t2)))){
R=1;
}
else{
R=X54is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_FORMAL_GENERIC.rank*/


T0* r280look_up_for(T280* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r280base_class(C)),a1,a2);
return R;
}


void r280c_type_for_external_in(T280* C,T0* a1){
/*[IF*/
if(r280is_reference(C)){
r7append(((T7*)a1),((T0*)ms13_1776a));
r7extend(((T7*)a1),'\52');
}
else{
r280c_type_for_result_in(C,a1);
}
/*FI]*/
}


void r280c_type_for_argument_in(T280* C,T0* a1){
X54c_type_for_argument_in((C)->_run_type/*12*/,a1);
}


void r280c_header_pass1(T280* C){
X54c_header_pass1((C)->_run_type/*12*/);
}


void r280c_type_for_target_in(T280* C,T0* a1){
X54c_type_for_target_in((C)->_run_type/*12*/,a1);
}
/*No:TYPE_FORMAL_GENERIC.run_type*/


void r280c_type_for_result_in(T280* C,T0* a1){
X54c_type_for_result_in((C)->_run_type/*12*/,a1);
}


T0* r280expanded_initializer(T280* C){
T0* R=NULL;
R=X54expanded_initializer((C)->_run_type/*12*/);
return R;
}


void r280c_frame_descriptor(T280* C){
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
/*[IF*/
if(r280is_reference(C)){
r7extend((T7*)(oBC12c_frame_descriptor_format),'R');
}
else{
r7extend((T7*)(oBC12c_frame_descriptor_format),'E');
}
/*FI]*/
r2append_in(r280id(C),oBC12c_frame_descriptor_format);
r7extend((T7*)(oBC12c_frame_descriptor_format),'\45');
}


T6 r280has_creation(T280* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)((C)->_run_type/*12*/))){
R=r63has_creation((T63*)(r280base_class(C)),a1);
}
else{
R=X54has_creation((C)->_run_type/*12*/,a1);
}
/*FI]*/
return R;
}


void r280c_header_pass3(T280* C){
X54c_header_pass3((C)->_run_type/*12*/);
}


void r280gc_call_new_in(T280* C,T0* a1){
r7append(((T7*)a1),((T0*)ms13_1008));
r2append_in(r280id(C),a1);
r7extend(((T7*)a1),'\50');
r7extend(((T7*)a1),'\51');
}
/*No:TYPE_FORMAL_GENERIC.fz_new*/


T6 r280is_boolean(T280* C){
T6 R=0;
R=X54is_boolean((C)->_run_type/*12*/);
return R;
}


void r280mapping_cast(T280* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms54_15696)))))->_count)=(0);
/*]*/
r7extend((T7*)(((T0*)ms54_15696)),'\50');
r280c_type_for_target_in(C,((T0*)ms54_15696));
r7extend((T7*)(((T0*)ms54_15696)),'\51');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms54_15696));
/*]*/
}


T6 r280is_generic(T280* C){
T6 R=0;
R=X54is_generic((C)->_run_type/*12*/);
return R;
}


T6 r280is_real(T280* C){
T6 R=0;
R=X54is_real((C)->_run_type/*12*/);
return R;
}


T6 r280need_c_struct(T280* C){
T6 R=0;
R=X54need_c_struct((C)->_run_type/*12*/);
return R;
}


T6 r280is_any(T280* C){
T6 R=0;
R=X54is_any((C)->_run_type/*12*/);
return R;
}


T0* r280twin(T280* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T280*)R)=*C;
return R;
}


T6 r280is_basic_eiffel_expanded(T280* C){
T6 R=0;
R=X54is_basic_eiffel_expanded((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.fz_gc_mark*/


T6 r280need_gc_mark_function(T280* C){
T6 R=0;
R=X54need_gc_mark_function((C)->_run_type/*12*/);
return R;
}


T6 r280is_native_array(T280* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 263: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}


T6 r280is_string(T280* C){
T6 R=0;
R=X54is_string((C)->_run_type/*12*/);
return R;
}


T6 r280is_integer(T280* C){
T6 R=0;
R=X54is_integer((C)->_run_type/*12*/);
return R;
}
/*No:TYPE_FORMAL_GENERIC.is_anchored*/
/*No:TYPE_FORMAL_GENERIC.is_run_type*/


T6 r280is_reference(T280* C){
T6 R=0;
R=X54is_reference((C)->_run_type/*12*/);
return R;
}


T6 r280is_none(T280* C){
T6 R=0;
R=X54is_none((C)->_run_type/*12*/);
return R;
}


T0* r280constraint(T280* C){
T0* R=NULL;
R=((T278*)(r280formal_arg(C)))->_constraint/*4*/;
return R;
}
/*No:TYPE_FORMAL_GENERIC.is_like_argument*/


void r280just_before_gc_mark_in(T280* C,T0* a1){
X54just_before_gc_mark_in((C)->_run_type/*12*/,a1);
}
/*No:TYPE_FORMAL_GENERIC.mapping_cast_memory*/


T6 r280is_double(T280* C){
T6 R=0;
R=X54is_double((C)->_run_type/*12*/);
return R;
}
/*No:MANIFEST_STRING.fz_cast_t0_star*/
/*No:MANIFEST_STRING.static_value*/
/*No:MANIFEST_STRING.is_static*/
/*No:MANIFEST_STRING.is_manifest_string*/
/*No:MANIFEST_STRING.start_position*/
/*No:MANIFEST_STRING.to_string*/
/*No:MANIFEST_STRING.c_simple*/


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


T2 r171to_integer(T171* C){
T2 R=0;
r171error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:MANIFEST_STRING.use_current*/


T0* r171to_runnable(T171* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_mangling/*24*/)==((void*)(NULL))){
C->_mangling=r347register((T0*)C);
}
/*FI]*/
R=(T0*)C;
return R;
}
/*No:MANIFEST_STRING.compile_to_c_old*/
/*No:MANIFEST_STRING.is_pre_computable*/
/*No:MANIFEST_STRING.collect_c_tmp*/
/*No:MANIFEST_STRING.fz_iinaiv*/
/*No:MANIFEST_STRING.result_type*/


void r171break_line(T171* C){
/*[IF*/
if(((C)->_break/*12*/)==((void*)(NULL))){
C->_break=se_ma172(1,
(((T7*)((C)->_to_string/*8*/))->_count/*4*/)+(1));
}
else{
r172add_last((T172*)((C)->_break/*12*/),(((T7*)((C)->_to_string/*8*/))->_count/*4*/)+(1));
}
/*FI]*/
}
/*No:MANIFEST_STRING.percent*/
/*No:MANIFEST_STRING.is_result*/
/*No:MANIFEST_STRING.mapping_c_target*/
/*No:MANIFEST_STRING.can_be_dropped*/


T0* r171twin(T171* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T171*)R)=*C;
return R;
}
/*No:MANIFEST_STRING.c_declare_for_old*/
/*No:MANIFEST_STRING.dca_inline_argument*/


void r171compile_to_c(T171* 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*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),(C)->_mangling/*24*/);
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:MANIFEST_STRING.isa_dca_inline_argument*/
/*No:MANIFEST_STRING.add*/
/*No:MANIFEST_STRING.count*/


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


void r171make(T171* C,T0* a1){
C->_start_position=a1;
{T7*n=malloc(sizeof(*n));
*n=M7;
r7make(n,0);
C->_to_string=(T0*)n;
}
}


void r171add_percent(T171* C,T3 a1){
r7extend((T7*)((C)->_to_string/*8*/),a1);
/*[IF*/
if(((C)->_percent/*20*/)==((void*)(NULL))){
C->_percent=se_ma172(1,
((T7*)((C)->_to_string/*8*/))->_count/*4*/);
}
else{
r172add_last((T172*)((C)->_percent/*20*/),((T7*)((C)->_to_string/*8*/))->_count/*4*/);
}
/*FI]*/
}
/*No:MANIFEST_STRING.is_current*/
/*No:MANIFEST_STRING.break*/
/*No:MANIFEST_STRING.mapping_c_arg*/
/*No:MANIFEST_STRING.is_void*/
/*No:MANIFEST_STRING.mangling*/


void r171add_ascii(T171* C,T3 a1){
r7extend((T7*)((C)->_to_string/*8*/),a1);
/*[IF*/
if(((C)->_ascii/*16*/)==((void*)(NULL))){
C->_ascii=se_ma172(1,
((T7*)((C)->_to_string/*8*/))->_count/*4*/);
}
else{
r172add_last((T172*)((C)->_ascii/*16*/),((T7*)((C)->_to_string/*8*/))->_count/*4*/);
}
/*FI]*/
}
/*No:MANIFEST_STRING.afd_check*/
/*No:MANIFEST_STRING.ascii*/


T0* r171type_string(void){
if(fBC12type_string==0){
fBC12type_string=1;
{T272*n=malloc(sizeof(*n));
*n=M272;
r272make(n,NULL);
oBC12type_string=(T0*)n;
}
}
return oBC12type_string;}


T0* r187start_position(T187* C){
T0* R=NULL;
R=((T190*)(r191first((T191*)((C)->_flat_list/*8*/))))->_start_position/*4*/;
return R;
}


T6 r187is_a_in(T187* C,T0* a1,T0* a2){
T6 R=0;
T0* _t2=NULL;
T0* _t1=NULL;
T2 _i=0;
_i=/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
/*[IF*/
if((/*(IRF4.6count*/(((T191*)((((T187*)a1))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(_i)){
r21add_position(r187start_position(((T187*)a1)));
r187error(r187start_position(C),((T0*)ms187_36576));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=1;
while (!((!(R))||((_i)==(0)))) {
_t1=r187type(C,_i);
_t2=r187type(((T187*)a1),_i);
/*[IF*/
if(!(X54is_a_in(_t1,_t2,a2))){
R=0;
r21print_as_error((T21*)(oBC12eh));
r21add_position(X54start_position(_t1));
r21add_position(X54start_position(_t2));
/*[IRF3.6append*/{T0* b1=((T0*)ms187_26862);
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]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r187add_last(T187* C,T0* a1){
T0* _n2=NULL;
T2 _i=0;
_i=1;
while (!((r191item((T191*)((C)->_flat_list/*8*/),_i))==((void*)(NULL)))) {
_n2=r191item((T191*)((C)->_flat_list/*8*/),_i);
/*[IF*/
if(((((T190*)_n2))->_to_string/*8*/)==((void*)((((T190*)a1))->_to_string/*8*/))){
r21add_position((((T190*)a1))->_start_position/*4*/);
r21add_position((((T190*)_n2))->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms179_36984);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IRF3.6put*/{T191* C1=(T191*)((C)->_flat_list/*8*/);
T0* b1=a1;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
/*[IRF3.3set_rank*/((((T190*)(((T190*)a1))))->_rank)=(_i);
/*]*/
}
/*No:FORMAL_ARG_LIST.em1*/
/*No:FORMAL_ARG_LIST.fz_00*/
T0*oBC12c_frame_descriptor_local_count=NULL;
/*No:FORMAL_ARG_LIST.fz_cad*/
T0*oBC12c_frame_descriptor_locals=NULL;


void r187check_name_clash(T187* C,T0* a1){
T2 _i=0;
_i=((T191*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
/*[IRF3.6name_clash*/{T190* C1=(T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),_i)/*)*/);
T0* b1=a1;
r190name_clash_for(C1,b1,((T0*)ms190_120934));
}/*]*/
_i=(_i)-(1);
}
}


void r187with(T187* C,T0* a1,T0* a2){
*((T187*)(C))=*((T187*)(a1));
r187dynamic_runnable(C,a2);
r187check_name_clash(C,a2);
}
/*No:FORMAL_ARG_LIST.list*/
/*No:FORMAL_ARG_LIST.fatal_error*/
/*No:FORMAL_ARG_LIST.nb_errors*/


void r187inline_one_pc(T187* C){
T0* _t=NULL;
T2 _i=0;
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/))) {
_t=X54run_type(r187type(C,_i));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC187tmp_string))))->_count)=(0);
/*]*/
X54c_type_for_argument_in(_t,oBC187tmp_string);
r7extend((T7*)(oBC187tmp_string),'\40');
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),oBC187tmp_string);
/*]*/
r25inline_level_incr((T25*)(oBC12cpp));
r25print_argument((T25*)(oBC12cpp),_i);
r25inline_level_decr((T25*)(oBC12cpp));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25put_ith_argument((T25*)(oBC12cpp),_i);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
_i=(_i)+(1);
}
}


T0* r187type(T187* C,T2 a1){
T0* R=NULL;
R=((T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),a1)/*)*/))->_result_type/*12*/;
return R;
}


T2 r187rank_of(T187* C,T0* a1){
T2 R=0;
R=/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
while (!(((R)==(0))||((a1)==((void*)(((T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),R)/*)*/))->_to_string/*8*/))))) {
R=(R)-(1);
}
return R;
}


void r187dynamic_runnable(T187* C,T0* a1){
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
C->_flat_list=r191twin((T191*)((C)->_flat_list/*8*/));
_i=((T191*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r191item((T191*)((C)->_flat_list/*8*/),_i);
_n2=r190to_runnable(((T190*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r187error((((T190*)_n1))->_start_position/*4*/,((T0*)ms179_18336));
}
else{
/*[IRF3.6put*/{T191* C1=(T191*)((C)->_flat_list/*8*/);
T0* b1=_n2;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r187external_prototype_in(T187* C,T0* a1){
T0* _t=NULL;
T2 _i=0;
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/))) {
_t=X54run_type(r187type(C,_i));
X54c_type_for_external_in(_t,a1);
r7extend(((T7*)a1),'\40');
r7extend(((T7*)a1),'a');
r2append_in(_i,a1);
_i=(_i)+(1);
/*[IF*/
if((_i)<=(/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r7extend(((T7*)a1),'\54');
}
/*FI]*/
}
}
/*No:FORMAL_ARG_LIST.fz_dot*/


T6 r187is_runnable(T187* C,T0* a1){
T6 R=0;
T0* _t=NULL;
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
R=1;
_i=((T191*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((!(R))||((_i)==(0)))) {
_t=r187type(C,_i);
/*[IF*/
if(X54is_run_type(_t)){
/*[IF*/
if((X54run_type(_t))!=((void*)(_t))){
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
_i=((T191*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r191item((T191*)((C)->_flat_list/*8*/),_i);
_n2=r190to_runnable(((T190*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r187error((((T190*)_n1))->_start_position/*4*/,((T0*)ms179_18336));
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
r187check_name_clash(C,a1);
}
/*FI]*/
return R;
}
/*No:FORMAL_ARG_LIST.count*/


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


void r187make(T187* C,T0* a1){
T0* _an2=NULL;
T2 _rank=0;
T2 _i=0;
T0* _tla2=NULL;
T0* _tla=NULL;
T0* _tlf=NULL;
T0* _an=NULL;
r187declaration_list_make(C,a1);
_i=/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
while (!((_i)==(0))) {
_an=/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),_i)/*)*/;
_tlf=(((T190*)_an))->_result_type/*12*/;
if(NULL!=(_tlf))switch(((T0*)_tlf)->id) {
case 255: 
break;
default:
_tlf=NULL;
};/*[IF*/
if((_tlf)!=((void*)(NULL))){
_rank=r187rank_of(C,X83to_string((((T255*)_tlf))->_like_what/*8*/));
/*[IF*/
if((_rank)==(_i)){
r21add_position((((T255*)_tlf))->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_47439);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if((_rank)>(0)){
{T188*n=malloc(sizeof(*n));
*n=M188;
r188refer_to(n,X83start_position((((T255*)_tlf))->_like_what/*8*/),(T0*)C,_rank);
_an2=(T0*)n;
}
{T258*n=malloc(sizeof(*n));
*n=M258;
r258make(n,(((T255*)_tlf))->_start_position/*4*/,_an2);
_tla=(T0*)n;
}
/*[IRF3.3set_result_type*/((((T190*)(((T190*)_an))))->_result_type)=(_tla);
/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(r43all_check((T43*)(oBC12run_control))){
_i=/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
while (!((_i)==(0))) {
_tla=((T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),_i)/*)*/))->_result_type/*12*/;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 258: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
_rank=r187rank_of(C,r188to_string((T188*)((((T258*)_tla))->_like_what/*8*/)));
_tla2=((T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),_rank)/*)*/))->_result_type/*12*/;
if(NULL!=(_tla2))switch(((T0*)_tla2)->id) {
case 258: 
break;
default:
_tla2=NULL;
};/*[IF*/
if((_tla2)!=((void*)(NULL))){
r21add_position((((T258*)_tla))->_start_position/*4*/);
r21add_position((((T258*)_tla2))->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_47439);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


void r187declaration_list_make(T187* C,T0* a1){
T2 _actual_count=0;
T2 _il=0;
C->_list=a1;
_il=((T308*)((C)->_list/*4*/))->_upper/*8*/;
while (!((_il)==(0))) {
_actual_count=(_actual_count)+(X307count(r308item((T308*)((C)->_list/*4*/),_il)));
_il=(_il)-(1);
}
{T191*n=malloc(sizeof(*n));
*n=M191;
r191make(n,1,_actual_count);
C->_flat_list=(T0*)n;
}
_il=1;
while (!((_il)>(((T308*)((C)->_list/*4*/))->_upper/*8*/))) {
X307append_in(r308item((T308*)((C)->_list/*4*/),_il),(T0*)C);
_il=(_il)+(1);
}
}
/*No:FORMAL_ARG_LIST.name*/
T0*oBC187tmp_string=NULL;
/*No:FORMAL_ARG_LIST.flat_list*/


void r187compile_to_c_in(T187* C,T0* a1){
T0* _t=NULL;
T2 _i=0;
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/))) {
_t=X54run_type(r187type(C,_i));
X54c_type_for_argument_in(_t,a1);
r7extend(((T7*)a1),'\40');
r7extend(((T7*)a1),'a');
r2append_in(_i,a1);
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r204increment((T204*)(oBC12c_frame_descriptor_local_count));
r7append((T7*)(oBC12c_frame_descriptor_format),((T190*)(/*(IRF4.6name*/r191item(((T191*)((C)->_flat_list/*8*/)),_i)/*)*/))->_to_string/*8*/);
X54c_frame_descriptor(_t);
r7append((T7*)(oBC12c_frame_descriptor_locals),((T0*)ms187_14590));
r2append_in(_i,oBC12c_frame_descriptor_locals);
r7extend((T7*)(oBC12c_frame_descriptor_locals),'\54');
}
/*FI]*/
_i=(_i)+(1);
/*[IF*/
if((_i)<=(/*(IRF4.6count*/(((T191*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r7extend(((T7*)a1),'\54');
}
/*FI]*/
}
}


void r356c_assertion_flag(T356* C){
/*[IRF3.3clear*/((((T7*)((T7*)(((T0*)ms51_3077376)))))->_count)=(0);
/*]*/
r356c_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));
/*]*/
}
/*No:RUN_FEATURE_2.c_define*/


void r356fall_down(T356* 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_2.use_current_state*/
/*No:RUN_FEATURE_2.actuals_clients*/
/*No:RUN_FEATURE_2.address_of_c_define*/
/*No:RUN_FEATURE_2.ucs_false*/
/*No:RUN_FEATURE_2.is_static*/


T0* r356start_position(T356* C){
T0* R=NULL;
R=r314start_position((T314*)((C)->_base_feature/*24*/));
return R;
}


T6 r356use_current(T356* C){
T6 R=0;
{int z1=(C)->_use_current_state/*20*/;

if((14==z1)){
R=1;
}
 else 
if((13==z1)){
}
 else 
if((15==z1)){
C->_use_current_state=16;
/*[IRF3.3compute_use_current*/((((T356*)(C)))->_use_current_state)=(14);
/*]*/
R=r356use_current(C);
}
 else {R=1;
}}
return R;
}
/*No:RUN_FEATURE_2.c_code*/


T2 r356id(T356* C){
T2 R=0;
R=X54id((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_2.ucs_not_computed*/
/*No:RUN_FEATURE_2.is_pre_computable*/
/*No:RUN_FEATURE_2.collect_c_tmp*/


T0* r356run_class(T356* C){
T0* R=NULL;
R=X54run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_2.result_type*/
/*No:RUN_FEATURE_2.base_feature*/
/*No:RUN_FEATURE_2.static_value_mem*/


T2 r356arg_count(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}


T6 r356is_exported_in(T356* C,T0* a1){
T6 R=0;
R=r101gives_permission_to((T101*)(r356clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_2.fz_close_c_comment*/


void r356address_of_c_mapping(T356* C){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms356_162));
/*]*/
r25print_current((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms356_624));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}
/*No:RUN_FEATURE_2.arguments*/


void r356mapping_c(T356* C){
T0* _ct=NULL;
_ct=(C)->_current_type/*4*/;
/*[IF*/
if(X54is_basic_eiffel_expanded(_ct)){
r25put_target_as_value((T25*)(oBC12cpp));
}
 else if(X54is_reference(_ct)){
/*[IF*/
if(((T63*)(X54base_class(_ct)))->_is_expanded/*20*/){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
r25put_target_as_target((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms356_13130));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T24* C1=(T24*)(r356run_class(C));
T0* b1=(T0*)C;
r25put_recompilation_comment(r24offset_of(C1,b1));
}/*]*/
}
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*/)));
}/*]*/
/*]*/
r25put_target_as_target((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms356_1012));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T24* C1=(T24*)(r356run_class(C));
T0* b1=(T0*)C;
r25put_recompilation_comment(r24offset_of(C1,b1));
}/*]*/
}
/*FI]*/
}
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*/)));
}/*]*/
/*]*/
r25put_target_as_value((T25*)(oBC12cpp));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms356_564));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.6force_c_recompilation_comment*/{T24* C1=(T24*)(r356run_class(C));
T0* b1=(T0*)C;
r25put_recompilation_comment(r24offset_of(C1,b1));
}/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_2.can_be_dropped*/


void r356initialize(T356* C){
C->_result_type=((T314*)((C)->_base_feature/*24*/))->_result_type/*20*/;
C->_result_type=X54to_runnable((C)->_result_type/*28*/,(C)->_current_type/*4*/);
}
/*No:RUN_FEATURE_2.clients_memory*/
/*No:RUN_FEATURE_2.current_type*/


void r356nothing_comment(T356* C){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184a));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms51_759));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X54run_time_mark((C)->_current_type/*4*/));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\56';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X83to_string((C)->_name/*16*/));
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_184));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\n';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
}


void r356add_client(T356* 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*)(r356run_class(C)),a1);
}
/*No:RUN_FEATURE_2.ucs_in_computation*/
/*No:RUN_FEATURE_2.compute_use_current*/


void r356make(T356* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r325put(((T325*)(((T24*)(r356run_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);
r356initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_2.ucs_true*/
/*No:RUN_FEATURE_2.name*/
/*No:RUN_FEATURE_2.local_vars*/
/*No:RUN_FEATURE_2.fz_open_c_comment*/


void r356afd_check(T356* C){
T0* _rc=NULL;
_rc=X54run_class(X54run_type((C)->_result_type/*28*/));
}


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


void r356c_frame_descriptor_name_in(T356* C,T0* a1){
r7extend(((T7*)a1),'f');
r2append_in(r356id(C),a1);
X83mapping_c_in((C)->_name/*16*/,a1);
}


void r85make_n(T85* C,T0* a1){
T2 _j=0;
T2 _i=0;
_i=(((T86*)a1))->_upper/*8*/;
while (!((_i)<(0))) {
_j=(_i)-(1);
while (!((_j)<(0))) {
/*[IF*/
if((X83to_key(/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[_i]/*)*/))==((void*)(X83to_key(/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[_j]/*)*/)))){
r85fe_multiple(/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[_i]/*)*/,/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[_j]/*)*/);
}
/*FI]*/
_j=(_j)-(1);
}
_i=(_i)-(1);
}
C->_first=/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[0]/*)*/;
_i=(((T86*)a1))->_upper/*8*/;
/*[IF*/
if((_i)>(0)){
{T86*n=malloc(sizeof(*n));
*n=M86;
r86make(n,_i);
C->_remainder=(T0*)n;
}
_j=0;
while (!((_i)==(0))) {
/*[IRF3.5put*/(((T86*)((C)->_remainder/*4*/))->_storage/*0*/)[_j]=(/*(IRF4.6item*/((((T86*)a1))->_storage/*0*/)[(_j)+(1)]/*)*/);
/*]*/
_j=(_j)+(1);
_i=(_i)-(1);
}
}
/*FI]*/
}


T0* r85feature_name(T85* C,T0* a1){
T0* R=NULL;
T2 _i=0;
/*[IF*/
if((X83to_key((C)->_first/*0*/))==((void*)(a1))){
R=(C)->_first/*0*/;
}
 else if(((C)->_remainder/*4*/)==((void*)(NULL))){
}
else{
_i=((T86*)((C)->_remainder/*4*/))->_upper/*8*/;
while (!(((_i)<(0))||((a1)==((void*)(X83to_key(/*(IRF4.6item*/(((T86*)((C)->_remainder/*4*/))->_storage/*0*/)[_i]/*)*/)))))) {
_i=(_i)-(1);
}
/*[IF*/
if((_i)>=(0)){
R=/*(IRF4.6item*/(((T86*)((C)->_remainder/*4*/))->_storage/*0*/)[_i]/*)*/;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r85root_procedure_name(T85* C,T0* a1){
T0* R=NULL;
T0* _fn=NULL;
T2 _i=0;
_i=r85count(C);
while (!(((_i)==(0))||((R)!=((void*)(NULL))))) {
_fn=r85item(C,_i);
/*[IF*/
if(r7is_equal((T7*)(X83to_string(_fn)),a1)){
R=_fn;
if(NULL!=(R))switch(((T0*)R)->id) {
case 148: 
break;
default:
R=NULL;
};}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


void r85fe_multiple(T0* a1,T0* a2){
r21add_position(X83start_position(a1));
r21add_position(X83start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms85_61088);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}


T6 r85has(T85* C,T0* a1){
T6 R=0;
R=(r85index_of(C,a1))>(0);
return R;
}
/*No:FEATURE_NAME_LIST.make_1*/


void r85add_last(T85* C,T0* a1){
T0* _fn2=NULL;
_fn2=r85feature_name(C,X83to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
r85fe_multiple(_fn2,a1);
}
/*FI]*/
/*[IF*/
if(((C)->_remainder/*4*/)==((void*)(NULL))){
{T86*n=malloc(sizeof(*n));
*n=M86;
r86with_capacity(n,4);
C->_remainder=(T0*)n;
}
}
/*FI]*/
r86add_last((T86*)((C)->_remainder/*4*/),a1);
}


T0* r85item(T85* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(C)->_first/*0*/;
}
else{
R=/*(IRF4.6item*/(((T86*)((C)->_remainder/*4*/))->_storage/*0*/)[(a1)-(2)]/*)*/;
}
/*FI]*/
return R;
}
/*No:FEATURE_NAME_LIST.first*/


T2 r85count(T85* C){
T2 R=0;
/*[IF*/
if(((C)->_remainder/*4*/)==((void*)(NULL))){
R=1;
}
else{
R=(((T86*)((C)->_remainder/*4*/))->_upper/*8*/)+(2);
}
/*FI]*/
return R;
}
/*No:FEATURE_NAME_LIST.remainder*/


T2 r85index_of(T85* C,T0* a1){
T2 R=0;
T0* _fn_key=NULL;
_fn_key=X83to_key(a1);
/*[IF*/
if((X83to_key((C)->_first/*0*/))==((void*)(_fn_key))){
R=1;
}
 else if(((C)->_remainder/*4*/)==((void*)(NULL))){
}
else{
R=((T86*)((C)->_remainder/*4*/))->_upper/*8*/;
while (!(((R)<(0))||((_fn_key)==((void*)(X83to_key(/*(IRF4.6item*/(((T86*)((C)->_remainder/*4*/))->_storage/*0*/)[R]/*)*/)))))) {
R=(R)-(1);
}
/*[IF*/
if((R)<(0)){
R=0;
}
else{
R=(R)+(2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:FEATURE_NAME_LIST.fatal_error*/


void r104c_define(T104* C){
T2 _id=0;
_id=X54id((C)->_current_type/*12*/);
r7copy((T7*)(oBC104c_code),((T0*)ms104_81692));
r2append_in(_id,oBC104c_code);
r25put_extern7((T25*)(oBC12cpp),oBC104c_code);
r7copy((T7*)(oBC104c_code),((T0*)ms104_23436));
r7append((T7*)(oBC104c_code),X54run_time_mark((C)->_current_type/*12*/));
r7append((T7*)(oBC104c_code),((T0*)ms104_3304));
/*[IRF3.3clear*/((((T7*)((T7*)(oBC12c_frame_descriptor_format))))->_count)=(0);
/*]*/
X54c_frame_descriptor((C)->_current_type/*12*/);
r7append((T7*)(oBC104c_code),oBC12c_frame_descriptor_format);
r7append((T7*)(oBC104c_code),((T0*)ms104_2316));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),oBC104c_code);
/*]*/
/*[IRF3.3clear*/((((T7*)((T7*)(oBC104c_code))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC104c_code),'T');
r2append_in(_id,oBC104c_code);
r7extend((T7*)(oBC104c_code),'\52');
r7append((T7*)(oBC104c_code),((T0*)ms13_1704));
r2append_in(_id,oBC104c_code);
r7append((T7*)(oBC104c_code),((T0*)ms104_55154));
r2append_in(_id,oBC104c_code);
r7append((T7*)(oBC104c_code),((T0*)ms104_468));
r25put_c_heading((T25*)(oBC12cpp),oBC104c_code);
/*[IRF3.3swap_on_c*/((((T25*)((T25*)(oBC12cpp))))->_current_out)=(oBC25out_c);
/*]*/
r7copy((T7*)(oBC104c_code),((T0*)ms104_112933));
r2append_in(_id,oBC104c_code);
r7append((T7*)(oBC104c_code),((T0*)ms104_16605));
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),oBC104c_code);
/*]*/
r25put_position_in_ds((C)->_start_position/*0*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms104_23160));
/*]*/
r104compile_to_c(C);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms104_21897));
/*]*/
}
/*No:CLASS_INVARIANT.start_position*/


T0* r104check_assertion_mode(void){
T0* R=NULL;
R=((T0*)ms104_1017);
return R;
}


T6 r104is_always_true(T104* C){
T6 R=0;
T0* _assertion=NULL;
T2 _i=0;
_i=((T106*)((C)->_list/*8*/))->_upper/*8*/;
R=1;
while (!((!(R))||((_i)==(0)))) {
_assertion=r106item((T106*)((C)->_list/*8*/),_i);
R=r103is_always_true(((T103*)_assertion));
_i=(_i)-(1);
}
return R;
}
T0*oBC104c_code=NULL;


void r104compile_to_c(T104* C){
T0* _assertion=NULL;
T6 _need_se_tmp=0;
T2 _i=0;
/*[IF*/
if(r104is_always_true(C)){
}
else{
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_51844));
/*]*/
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_759));
/*]*/
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_540));
/*]*/
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_752));
/*]*/
}
/*FI]*/
_i=1;
while (!((_i)>(((T106*)((C)->_list/*8*/))->_upper/*8*/))) {
_assertion=r106item((T106*)((C)->_list/*8*/),_i);
/*[IF*/
if(r103is_always_true(((T103*)_assertion))){
}
else{
r103collect_c_tmp(((T103*)_assertion));
_need_se_tmp=r25se_tmp_open_declaration((T25*)(oBC12cpp));
/*[IRF3.3set_check_assertion_mode*/((((T25*)((T25*)(oBC12cpp))))->_check_assertion_mode)=(r104check_assertion_mode());
/*]*/
r103compile_to_c(((T103*)_assertion));
/*[IF*/
if(_need_se_tmp){
r25se_tmp_close_declaration((T25*)(oBC12cpp));
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_20196));
/*]*/
}
else{
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_2274));
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:CLASS_INVARIANT.header_comment*/
/*No:CLASS_INVARIANT.current_type*/


void r104add_into(T104* C,T0* a1){
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
_i=1;
while (!((_i)>(((T106*)((C)->_list/*8*/))->_upper/*8*/))) {
_a=r106item((T106*)((C)->_list/*8*/),_i);
/*[IF*/
if(!(r106fast_has(((T106*)a1),_a))){
r106add_last(((T106*)a1),_a);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:CLASS_INVARIANT.run_feature*/


void r104make(T104* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_header_comment=a2;
C->_list=a3;
}
/*No:CLASS_INVARIANT.fz_se_i*/


void r104make_runnable(T104* C,T0* a1,T0* a2,T0* a3){
C->_list=a1;
C->_current_type=a2;
C->_run_feature=a3;
}


void r104afd_check(T104* C){
T2 _i=0;
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
_i=((T106*)((C)->_list/*8*/))->_upper/*8*/;
while (!((_i)==(0))) {
r103afd_check((T103*)(r106item((T106*)((C)->_list/*8*/),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
}
/*No:CLASS_INVARIANT.list*/
/*No:CLASS_NAME_LIST.make_1*/


T6 r195gives_permission_to_any(T195* C){
T6 R=0;
T2 _i=0;
_i=r195count(C);
while (!((R)||((_i)==(0)))) {
R=(((T64*)(r195item(C,_i)))->_to_string/*0*/)==((void*)(((T0*)ms14_714)));
_i=(_i)-(1);
}
return R;
}


void r195add_last(T195* C,T0* a1){
T2 _i=0;
_i=r195index_of(C,a1);
/*[IF*/
if((_i)>(0)){
r21add_position(((T64*)(r195item(C,_i)))->_start_position/*4*/);
r195warning((((T64*)a1))->_start_position/*4*/,((T0*)ms195_54510));
}
/*FI]*/
/*[IF*/
if(((C)->_remainder/*4*/)==((void*)(NULL))){
{T196*n=malloc(sizeof(*n));
*n=M196;
r196with_capacity(n,4);
C->_remainder=(T0*)n;
}
}
/*FI]*/
r196add_last((T196*)((C)->_remainder/*4*/),a1);
}


void r195merge(T195* C,T0* a1,T0* a2){
T0* _cn=NULL;
T2 _i=0;
C->_first=r195item(((T195*)a1),1);
{T196*n=malloc(sizeof(*n));
*n=M196;
r196with_capacity(n,((r195count(((T195*)a1)))+(r195count(((T195*)a2))))-(1));
C->_remainder=(T0*)n;
}
_i=r195count(((T195*)a1));
while (!((_i)==(1))) {
r196add_last((T196*)((C)->_remainder/*4*/),r195item(((T195*)a1),_i));
_i=(_i)-(1);
}
_i=r195count(((T195*)a2));
while (!((_i)==(0))) {
_cn=r195item(((T195*)a2),_i);
/*[IF*/
if((r195index_of(C,_cn))==(0)){
r196add_last((T196*)((C)->_remainder/*4*/),_cn);
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r195item(T195* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(C)->_first/*0*/;
}
else{
R=/*(IRF4.6item*/(((T196*)((C)->_remainder/*4*/))->_storage/*0*/)[(a1)-(2)]/*)*/;
}
/*FI]*/
return R;
}

