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


void r178load_file(T178* C,T0* a1){
T2 _i=0;
r43connect_to((T43*)(oBC19tmp_file_read),a1);
/*[IF*/
if(/*(IRF4.7is_connected*/((/*RF2*/((T43*)(oBC19tmp_file_read))->_path/*1*/))!=(NULL)/*)*/){
(/*SFN*/C->_path)=((/*UT*/(void)((T27*)(r178string_aliaser()))),r27item(a1));
/*[IF*/
if((r178empty_line_at(0))!=((void*)(NULL))){
}
/*FI]*/
_i=1;
r43read_line_in((T43*)(oBC19tmp_file_read),r178empty_line_at(_i));
while (!(r43end_of_input((T43*)(oBC19tmp_file_read))))
{
_i=(_i)+(1);
r43read_line_in((T43*)(oBC19tmp_file_read),r178empty_line_at(_i));
}
/*[IF*/
if(/*(IRF4.7is_empty*/((/*RF2*/((T7*)(/*(IRF4.6item*/((/*RF2*/((T120*)(oBC178text))->_storage/*4*/))[_i]/*)*/))->_count/*4*/))==(0)/*)*/){
(/*SFN*/C->_count)=(_i)-(1);
}
else{
(/*SFN*/C->_count)=_i;
}
/*FI]*/
r43disconnect((T43*)(oBC19tmp_file_read));
/*[IF*/
if(((/*RF2*/(C)->_count/*4*/))<=(0)){
/*[IRF3.6append*/{T0* b1=((T0*)ms178_300594);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(/*RF2*/(C)->_path/*0*/);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms178_138929174);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
else{
(/*SFN*/C->_path)=NULL;
}
/*FI]*/
}
T0*oBC178text=NULL;


void r169compile_to_c(T169* C){
/*[IF*/
if(X62is_user_expanded((/*RF2*/(C)->_result_type/*12*/))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\52');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83print_current((T83*)(oBC19cpp));
}


void r169mapping_c_arg(T169* C,T0* a1){
T0* _rt=NULL;
_rt=X62run_type((/*RF2*/(C)->_result_type/*12*/));
/*[IF*/
if(X62is_reference(_rt)){
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_36951));
/*]*/
r83print_current((T83*)(oBC19cpp));
}
else{
r83print_current((T83*)(oBC19cpp));
}
/*FI]*/
}
 else if(X62is_reference(a1)){
r83print_current((T83*)(oBC19cpp));
}
 else if(X62is_user_expanded(_rt)){
/*[IF*/
if(!(X62is_dummy_expanded(_rt))){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\52');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r83print_current((T83*)(oBC19cpp));
}
else{
r83print_current((T83*)(oBC19cpp));
}
/*FI]*/
}


void r169to_integer_error(T169* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r82print_as_error((T82*)(oBC19eh));
}


void r169mapping_c_target(T0* a1){
T6 _flag=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
r83print_current((T83*)(oBC19cpp));
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T58* C1=(T58*)(oBC83out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T2 r169to_integer_or_error(T169* C){
T2 R=0;
r169to_integer_error(C);
return R;
}


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


T0* r169to_runnable(T169* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*12*/))==((void*)(NULL))){
(/*SFN*/C->_result_type)=a1;
R=((T0*)(C));
}
else{
{T104 se_tmp0;
{T169*n=((T169*)se_malloc(sizeof(*n))/*16*/);
*n=M169;
/*[IRF3.3make*/((((T169*)(n)))->_start_position)=((/*RF2*/(C)->_start_position/*4*/));
/*]*/
R=((T0*)n);
}
}
R=r169to_runnable(((T169*)R),a1);
}
/*FI]*/
return R;
}


T0* r169static_result_base_class(T169* C){
T0* R=NULL;
{T104 se_tmp0;
R=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
}
return R;
}


void r373c_initialize_in(T373* C,T0* a1){
T2 _i=0;
/*[IF*/
if((r373mapping_code(C))==(17)){
r7extend(((T7*)a1),((T3)'\173'));
_i=r373nb_unsigned(C);
while (!((_i)==(0)))
{
r7extend(((T7*)a1),((T3)'0'));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)a1),((T3)'\54'));
}
/*FI]*/
}
r7extend(((T7*)a1),((T3)'\175'));
}
else{
r7extend(((T7*)a1),((T3)'0'));
}
/*FI]*/
}


void r373c_type_for_external_in(T373* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*[IRF3.6c_type_for_result_in*/{T373* C1=C;
T0* b1=a1;
r373c_type_for_argument_in(C1,b1);
}/*]*/
/*FI]*/
}


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


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


T2 r373c_sizeof(T373* C){
T2 R=0;
R=(r373nb_unsigned(C))*((EIF_INTEGER_BITS)/(EIF_CHARACTER_BITS));
return R;
}


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


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


T2 r373id(T373* C){
T2 R=0;
R=(/*RF2*/((T60*)(r373run_class(C)))->_id/*16*/);
return R;
}


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


T6 r373is_c_unsigned_ptr(T373* C){
T6 R=0;
R=(17)==(r373mapping_code(C));
return R;
}


void r373c_initialize(T373* C){
T2 _i=0;
/*[IF*/
if((r373mapping_code(C))==(17)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
_i=r373nb_unsigned(C);
while (!((_i)==(0)))
{
r7extend((T7*)(oBC62tmp_string),((T3)'0'));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend((T7*)(oBC62tmp_string),((T3)'\54'));
}
/*FI]*/
}
r7extend((T7*)(oBC62tmp_string),((T3)'\175'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T2 r373nb_unsigned(T373* C){
T2 R=0;
T2 _ib=0;
_ib=EIF_INTEGER_BITS;
R=(/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)/(_ib);
/*[IF*/
if(((/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)%(_ib))>(0)){
R=(R)+(1);
}
/*FI]*/
return R;
}


void r373fatal_error_generic_list(T373* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r373c_type_for_argument_in(T373* C,T0* a1){
r7extend(((T7*)a1),((T3)'T'));
r2append_in(r373id(C),a1);
}


void r373c_frame_descriptor(T373* C){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
/*[IF*/
/*AF*//*AE*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'E'));
/*FI]*/
r2append_in(r373id(C),oBC19c_frame_descriptor_format);
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
}


void r373make(T373* C,T104 a1,T0* a2){
r7copy((T7*)(oBC62tmp_string),((T0*)ms21_2099));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7append((T7*)(oBC62tmp_string),(/*RF2*/(((T143*)a2))->_to_string/*12*/));
(/*SFN*/C->_written_mark)=((/*UT*/(void)((T27*)(r373string_aliaser()))),r27item(oBC62tmp_string));
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_n)=a2;
}
T0*oBC136base_class_name=NULL;
int fBC136base_class_name=0;


T0* r373base_class_name(void){
if(fBC136base_class_name==0){fBC136base_class_name=1;{
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
oBC136base_class_name=((T0*)n);
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(((T0*)ms21_53028));
/*]*/
}
}}
return oBC136base_class_name;
}


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


T0* r373string_aliaser(void){
if(fBC19string_aliaser==0){fBC19string_aliaser=1;{
{T27*n=((T27*)se_malloc(1));
oBC19string_aliaser=((T0*)n);
/*[IRF3.2make*//*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2104);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53339);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33156840);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1339128);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_836969340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33120277);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_774649014);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_168164374);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_274599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_171638715);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_175767198);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_867350214);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1384826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35866627);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35868574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7173699);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_286922);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_179371455);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1447702);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_904828090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_295849);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_349117293);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12184);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7704337);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1554777);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_971749965);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12376);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7749340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_324411);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_520438282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1692780980);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_65574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3075);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9647090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_64);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_552);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_61);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_371);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_62);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067995);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_361);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_60);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_45);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_296);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3421);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2126626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_43);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1960);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1972);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_47);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9529116);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_77832);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_280482649));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_386854);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9676326);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1597390874));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_49076823);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_79341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_247239028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94407393);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_840111968);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1236707441);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15831);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810604);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1680885744);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244781926);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244783893);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1223936132);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_48958735);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1622700141);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1979951);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_936296820);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1949019648);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_705019679);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1286698901);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10018876);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50778415);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_397576);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15932);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80109);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80416);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80694);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2023685073);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_406284);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067759348);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2090604340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_880412606);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50246319);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_636);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_619776399));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1744612358);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1937220099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_378799862);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10377643);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1297876698);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16639);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16616);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_84969);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16686);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1856946950));
r27special_add(((T0*)ms21_1740332382));
r27special_add(((T0*)ms21_111802057));
r27special_add(((T0*)ms21_756809447));
r27special_add(((T0*)ms21_1419919903));
r27special_add(((T0*)ms21_275488632));
r27special_add(((T0*)ms21_1377517899));
r27special_add(((T0*)ms21_698215697));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1326673961);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_954385774);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1778079380);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_87541);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10945665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_849712179);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3501);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88048);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88049);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_573080478);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54325331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_41849945);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2174354);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_438300);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187464);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187483);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733071);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_733277224);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54749764);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11011040);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_112335826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11026665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1507243919);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1053896806);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591414963);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_267647687);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591417242);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447584);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_89510);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447851);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55924644);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55926626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279656751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2246041);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88795);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_446841);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1607595572);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55868341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279416444);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279523519);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2236118);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1574640467);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1742738754);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_18110);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_90544);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1202672333);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_287359706);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1501191);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1498845794);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2038667775);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42134669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_337331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_14150);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*]*/
}
}}
return oBC19string_aliaser;
}


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


void r373standard_c_print_function(T373* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r60c_print_function((T60*)(r373run_class(C)));
}
/*FI]*/
}


T6 r373need_c_struct(T373* C){
T6 R=0;
R=(r373mapping_code(C))==(17);
return R;
}


void r373c_type_for_target_in(T373* C,T0* a1){
r373c_type_for_argument_in(C,a1);
/*[IF*/
if((r373mapping_code(C))==(17)){
r7extend(((T7*)a1),((T3)'\52'));
}
/*FI]*/
}


T6 r373is_c_char(T373* C){
T6 R=0;
R=(15)==(r373mapping_code(C));
return R;
}


T0* r373actual_reference(T373* C,T0* a1){
T0* R=NULL;
T104 _sp={NULL,0};
{T104 se_tmp0;
_sp=(*(se_tmp0=X62start_position(a1),&se_tmp0));
}
{T522*n=((T522*)se_malloc(sizeof(*n))/*28*/);
*n=M522;
r522from_type_bit(n,_sp,(T0*)C);
R=((T0*)n);
}
return R;
}


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


void r373demangling_in(T373* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),((T3)'E'));
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),/*(IRF4.6run_time_mark*/(/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_written_mark/*20*/)/*)*/);
}


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


T6 r373is_a(T373* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X62is_bit(a1)){
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit)){
switch(((T0*)_other_bit)->id){
case 372:case 373:
break;
default:
_other_bit=NULL;
}
}/*[IF*/
if((/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)<=(X136nb(_other_bit))){
R=1;
}
else{
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms136_86320376));
}
/*FI]*/
}
 else if(r61is_subclass_of((T61*)(r373base_class(C)),X62base_class(a1))){
R=1;
}
else{
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


T2 r373unsigned_padding(T373* C){
T2 R=0;
R=((r373nb_unsigned(C))*(EIF_INTEGER_BITS))-(/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/);
return R;
}


T0* r373to_runnable(T373* C,T0* a1){
T0* R=NULL;
T2 _nb_value=0;
T0* _ic=NULL;
T0* _rf8=NULL;
T0* _rf1=NULL;
T0* _rf=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_type/*28*/))==((void*)(NULL))){
_rf=r143run_feature((T143*)((/*RF2*/(C)->_n/*24*/)),a1);
/*[IF*/
if((_rf)==((void*)(NULL))){
r82feature_not_found((/*RF2*/(C)->_n/*24*/));
r82print_as_fatal_error((T82*)(oBC19eh));
}
else{
_rf1=_rf;
if(NULL!=(_rf1)){
switch(((T0*)_rf1)->id){
case 437:
break;
default:
_rf1=NULL;
}
}_rf8=_rf;
if(NULL!=(_rf8)){
switch(((T0*)_rf8)->id){
case 95:
break;
default:
_rf8=NULL;
}
}/*[IF*/
if((_rf1)!=((void*)(NULL))){
_ic=X141value((/*RF2*/(((T437*)_rf1))->_base_feature/*28*/),1);
if(NULL!=(_ic)){
switch(((T0*)_ic)->id){
case 265:
break;
default:
_ic=NULL;
}
}/*[IF*/
if((_ic)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/((T143*)((/*RF2*/(C)->_n/*24*/)))->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r437start_position(((T437*)_rf1)),&se_tmp0)));
}
r373fatal_error(((T0*)ms20_752996481));
}
/*FI]*/
_nb_value=(/*RF2*/(((T265*)_ic))->_value/*12*/);
/*[IF*/
if((_nb_value)<(0)){
{T104 se_tmp0;
r82add_position((/*RF2*/((T143*)((/*RF2*/(C)->_n/*24*/)))->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=r437start_position(((T437*)_rf1)),&se_tmp0)));
}
r373fatal_error(((T0*)ms373_2101008371));
}
/*FI]*/
{T104 se_tmp0;
{T372*n=((T372*)se_malloc(sizeof(*n))/*28*/);
*n=M372;
r372make(n,(/*RF2*/(C)->_start_position/*12*/),_ic);
(/*SFN*/C->_run_type)=((T0*)n);
}
}
}
 else if((_rf8)!=((void*)(NULL))){
{T104 se_tmp0;
_nb_value=r95integer_value(((T95*)_rf8),(/*RF2*/((T143*)((/*RF2*/(C)->_n/*24*/)))->_start_position/*4*/));
}
{T104 se_tmp0;
{T265*n=((T265*)se_malloc(sizeof(*n))/*16*/);
*n=M265;
r265make(n,_nb_value,(/*RF2*/((T143*)((/*RF2*/(C)->_n/*24*/)))->_start_position/*4*/));
_ic=((T0*)n);
}
}
{T104 se_tmp0;
{T372*n=((T372*)se_malloc(sizeof(*n))/*28*/);
*n=M372;
r372make(n,(/*RF2*/(C)->_start_position/*12*/),_ic);
(/*SFN*/C->_run_type)=((T0*)n);
}
}
}
else{
{T104 se_tmp0;
r82add_position((/*RF2*/((T143*)((/*RF2*/(C)->_n/*24*/)))->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(_rf),&se_tmp0)));
}
r373fatal_error(((T0*)ms20_752996481));
}
/*FI]*/
R=((T0*)(C));
r373to_runnable_1_2(C);
}
/*FI]*/
}
else{
{T104 se_tmp0;
{T373*n=((T373*)se_malloc(sizeof(*n))/*32*/);
*n=M373;
r373make(n,(/*RF2*/(C)->_start_position/*12*/),(/*RF2*/(C)->_n/*24*/));
R=((T0*)n);
}
}
R=r373to_runnable(((T373*)R),a1);
}
/*FI]*/
return R;
}


T2 r373mapping_code(T373* C){
T2 R=0;
/*[IF*/
if((/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)<=(EIF_CHARACTER_BITS)){
R=15;
}
 else if((/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)<=(EIF_INTEGER_BITS)){
R=16;
}
else{
R=17;
}
/*FI]*/
return R;
}


void r373to_runnable_1_2(T373* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r373run_class(C);
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_88048));
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_88049));
}


T0* r373run_class(T373* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_class_memory/*8*/))!=((void*)(NULL))){
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
 else if(/*(IRF4.7is_run_type*/((/*RF2*/(C)->_run_type/*28*/))!=(NULL)/*)*/){
(/*SFN*/C->_run_class_memory)=r59run_class((/*RF2*/(C)->_run_type/*28*/));
R=(/*RF2*/(C)->_run_class_memory/*8*/);
}
/*FI]*/
return R;
}


void r373c_header_pass1(T373* C){
T2 _i=0;
T2 _mem_id=0;
_mem_id=r373id(C);
/*[INSPECT*/
{int z1=r373mapping_code(C);
switch(z1){
case 15:
case 16:
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_11381817));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_11300605));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
/*[IF*/
if((r373mapping_code(C))==(15)){
r7append((T7*)(oBC62tmp_string),((T0*)ms20_15574));
}
else{
r7append((T7*)(oBC62tmp_string),((T0*)ms20_3291));
}
/*FI]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
break;
default:;
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_2248337));
r7extend((T7*)(oBC62tmp_string),((T3)'S'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
_i=r373nb_unsigned(C);
while (!((_i)==(0)))
{
r7append((T7*)(oBC62tmp_string),((T0*)ms136_319972504));
r2append_in(_i,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\73'));
_i=(_i)-(1);
}
r7append((T7*)(oBC62tmp_string),((T0*)ms136_1082443815));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
}
}/*INSPECT]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
}


T0* r373smallest_ancestor(T373* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit)){
switch(((T0*)_other_bit)->id){
case 372:case 373:
break;
default:
_other_bit=NULL;
}
}/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if((/*(IRF4.6nb*//*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(((T372*)((/*RF2*/(C)->_run_type/*28*/))))->_n/*24*/))))->_value/*12*/)/*)*//*)*/)<(X136nb(_other_bit))){
R=((T0*)(C));
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r373type_any();
}
/*FI]*/
return R;
}


void r373gc_call_new_in(T373* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(r373id(C),a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


void r372c_initialize_in(T372* C,T0* a1){
T2 _i=0;
/*[IF*/
if((r372mapping_code(C))==(17)){
r7extend(((T7*)a1),((T3)'\173'));
_i=r372nb_unsigned(C);
while (!((_i)==(0)))
{
r7extend(((T7*)a1),((T3)'0'));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend(((T7*)a1),((T3)'\54'));
}
/*FI]*/
}
r7extend(((T7*)a1),((T3)'\175'));
}
else{
r7extend(((T7*)a1),((T3)'0'));
}
/*FI]*/
}


void r372c_type_for_external_in(T372* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*[IRF3.6c_type_for_result_in*/{T372* C1=C;
T0* b1=a1;
r372c_type_for_argument_in(C1,b1);
}/*]*/
/*FI]*/
}


T0* r372generic_list(T372* C){
T0* R=NULL;
r372fatal_error_generic_list(C);
return R;
}


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


T2 r372c_sizeof(T372* C){
T2 R=0;
R=(r372nb_unsigned(C))*((EIF_INTEGER_BITS)/(EIF_CHARACTER_BITS));
return R;
}


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


void r372gc_mark_in(T372* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(r372id(C),a1);
}


T2 r372id(T372* C){
T2 R=0;
R=(/*RF2*/((T60*)(r372run_class(C)))->_id/*16*/);
return R;
}


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


T6 r372is_c_unsigned_ptr(T372* C){
T6 R=0;
R=(17)==(r372mapping_code(C));
return R;
}


void r372c_initialize(T372* C){
T2 _i=0;
/*[IF*/
if((r372mapping_code(C))==(17)){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62tmp_string))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
_i=r372nb_unsigned(C);
while (!((_i)==(0)))
{
r7extend((T7*)(oBC62tmp_string),((T3)'0'));
_i=(_i)-(1);
/*[IF*/
if((_i)>(0)){
r7extend((T7*)(oBC62tmp_string),((T3)'\54'));
}
/*FI]*/
}
r7extend((T7*)(oBC62tmp_string),((T3)'\175'));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'0');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T2 r372nb_unsigned(T372* C){
T2 R=0;
T2 _ib=0;
_ib=EIF_INTEGER_BITS;
R=(/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)/(_ib);
/*[IF*/
if(((/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)%(_ib))>(0)){
R=(R)+(1);
}
/*FI]*/
return R;
}


void r372fatal_error_generic_list(T372* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r372c_type_for_argument_in(T372* C,T0* a1){
r7extend(((T7*)a1),((T3)'T'));
r2append_in(r372id(C),a1);
}


void r372c_frame_descriptor(T372* C){
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
/*[IF*/
/*AF*//*AE*/
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'E'));
/*FI]*/
r2append_in(r372id(C),oBC19c_frame_descriptor_format);
r7extend((T7*)(oBC19c_frame_descriptor_format),((T3)'\45'));
}


void r372make(T372* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_n)=a2;
r7copy((T7*)(oBC62tmp_string),((T0*)ms21_2099));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r2append_in(/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/,oBC62tmp_string);
(/*SFN*/C->_written_mark)=((/*UT*/(void)((T27*)(r372string_aliaser()))),r27item(oBC62tmp_string));
}


T0* r372base_class_name(void){
if(fBC136base_class_name==0){fBC136base_class_name=1;{
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
oBC136base_class_name=((T0*)n);
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(((T0*)ms21_53028));
/*]*/
}
}}
return oBC136base_class_name;
}


T0* r372string_aliaser(void){
if(fBC19string_aliaser==0){fBC19string_aliaser=1;{
{T27*n=((T27*)se_malloc(1));
oBC19string_aliaser=((T0*)n);
/*[IRF3.2make*//*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2104);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53339);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_53028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33156840);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1339128);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_836969340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_33120277);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_774649014);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_168164374);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_274599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_171638715);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_175767198);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_867350214);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1384826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35866627);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35868574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7173699);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_286922);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_179371455);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1447702);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_904828090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_295849);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_349117293);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12184);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7704337);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1554777);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_971749965);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_12376);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_7749340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_324411);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_520438282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1692780980);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_65574);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3075);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9647090);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_64);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_552);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_61);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_371);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_62);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067995);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_361);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_60);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_45);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_296);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3421);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2126626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_43);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1960);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1972);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_47);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_282);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_35);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9529116);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_77832);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_280482649));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_386854);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_9676326);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1597390874));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_49076823);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_79341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_247239028);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_94407393);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_840111968);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1236707441);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15831);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810599);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_240810604);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1680885744);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244781926);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_244783893);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1223936132);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_48958735);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1622700141);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1979951);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_936296820);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1949019648);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_705019679);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1286698901);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10018876);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50778415);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_397576);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_15932);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80109);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80416);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_80694);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2023685073);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_406284);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2067759348);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2090604340);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_880412606);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_50246319);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_636);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_619776399));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1744612358);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1937220099);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_378799862);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10377643);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1297876698);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16639);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16616);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_84969);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_16686);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
r27special_add(((T0*)ms21_1856946950));
r27special_add(((T0*)ms21_1740332382));
r27special_add(((T0*)ms21_111802057));
r27special_add(((T0*)ms21_756809447));
r27special_add(((T0*)ms21_1419919903));
r27special_add(((T0*)ms21_275488632));
r27special_add(((T0*)ms21_1377517899));
r27special_add(((T0*)ms21_698215697));
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1326673961);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_954385774);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1778079380);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_87541);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_10945665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_849712179);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_3501);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88048);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88049);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_573080478);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54325331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_41849945);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2174354);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_438300);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187464);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2187483);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54733071);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_733277224);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_54749764);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11011040);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_112335826);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_11026665);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1507243919);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1053896806);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591414963);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_267647687);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_591417242);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447584);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_89510);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_447851);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55924644);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55926626);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279656751);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2246041);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_88795);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_446841);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1607595572);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_55868341);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279416444);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_279523519);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2236118);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1574640467);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1742738754);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_18110);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_90544);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1202672333);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_287359706);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1501191);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_1498845794);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_2038667775);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_42134669);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_337331);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*[IRF3.6regular_add*/{T0* b1=((T0*)ms21_14150);
r30add((T30*)(oBC27memory),b1,b1);
}/*]*/
/*]*/
}
}}
return oBC19string_aliaser;
}


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


void r372standard_c_print_function(T372* C){
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r60c_print_function((T60*)(r372run_class(C)));
}
/*FI]*/
}


T6 r372need_c_struct(T372* C){
T6 R=0;
R=(r372mapping_code(C))==(17);
return R;
}


void r372c_type_for_target_in(T372* C,T0* a1){
r372c_type_for_argument_in(C,a1);
/*[IF*/
if((r372mapping_code(C))==(17)){
r7extend(((T7*)a1),((T3)'\52'));
}
/*FI]*/
}


T6 r372is_c_char(T372* C){
T6 R=0;
R=(15)==(r372mapping_code(C));
return R;
}


T0* r372actual_reference(T372* C,T0* a1){
T0* R=NULL;
T104 _sp={NULL,0};
{T104 se_tmp0;
_sp=(*(se_tmp0=X62start_position(a1),&se_tmp0));
}
{T522*n=((T522*)se_malloc(sizeof(*n))/*28*/);
*n=M522;
r522from_type_bit(n,_sp,(T0*)C);
R=((T0*)n);
}
return R;
}


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


void r372demangling_in(T372* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
r7extend(((T7*)a1),((T3)'E'));
/*FI]*/
r7extend(((T7*)a1),((T3)'\40'));
r7append(((T7*)a1),/*(IRF4.3run_time_mark*/(/*RF2*/(C)->_written_mark/*20*/)/*)*/);
}


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


T6 r372is_a(T372* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X62is_bit(a1)){
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit)){
switch(((T0*)_other_bit)->id){
case 372:case 373:
break;
default:
_other_bit=NULL;
}
}/*[IF*/
if((/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)<=(X136nb(_other_bit))){
R=1;
}
else{
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms136_86320376));
}
/*FI]*/
}
 else if(r61is_subclass_of((T61*)(r372base_class(C)),X62base_class(a1))){
R=1;
}
else{
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


T2 r372unsigned_padding(T372* C){
T2 R=0;
R=((r372nb_unsigned(C))*(EIF_INTEGER_BITS))-(/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/);
return R;
}


T0* r372to_runnable(T372* C,T0* a1){
T0* R=NULL;
R=((T0*)(C));
r372to_runnable_1_2(C);
return R;
}


T2 r372mapping_code(T372* C){
T2 R=0;
/*[IF*/
if((/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)<=(EIF_CHARACTER_BITS)){
R=15;
}
 else if((/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)<=(EIF_INTEGER_BITS)){
R=16;
}
else{
R=17;
}
/*FI]*/
return R;
}


void r372to_runnable_1_2(T372* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r372run_class(C);
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_88048));
_rf=r60get_feature_with(((T60*)_rc),((T0*)ms21_88049));
}


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


void r372c_header_pass1(T372* C){
T2 _i=0;
T2 _mem_id=0;
_mem_id=r372id(C);
/*[INSPECT*/
{int z1=r372mapping_code(C);
switch(z1){
case 15:
case 16:
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_11381817));
r7append((T7*)(oBC62tmp_string),((T0*)ms20_11300605));
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
/*[IF*/
if((r372mapping_code(C))==(15)){
r7append((T7*)(oBC62tmp_string),((T0*)ms20_15574));
}
else{
r7append((T7*)(oBC62tmp_string),((T0*)ms20_3291));
}
/*FI]*/
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
break;
default:;
r7copy((T7*)(oBC62tmp_string),((T0*)ms20_2248337));
r7extend((T7*)(oBC62tmp_string),((T3)'S'));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\173'));
_i=r372nb_unsigned(C);
while (!((_i)==(0)))
{
r7append((T7*)(oBC62tmp_string),((T0*)ms136_319972504));
r2append_in(_i,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\73'));
_i=(_i)-(1);
}
r7append((T7*)(oBC62tmp_string),((T0*)ms136_1082443815));
r2append_in(_mem_id,oBC62tmp_string);
r7extend((T7*)(oBC62tmp_string),((T3)'\40'));
r7extend((T7*)(oBC62tmp_string),((T3)'T'));
r2append_in(_mem_id,oBC62tmp_string);
r7append((T7*)(oBC62tmp_string),((T0*)ms20_305));
}
}/*INSPECT]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC62tmp_string);
/*]*/
}


T0* r372smallest_ancestor(T372* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X62run_type(a1);
if(NULL!=(_other_bit)){
switch(((T0*)_other_bit)->id){
case 372:case 373:
break;
default:
_other_bit=NULL;
}
}/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if((/*(IRF4.6nb*/(/*RF2*/(((T265*)((/*RF2*/(C)->_n/*24*/))))->_value/*12*/)/*)*/)<(X136nb(_other_bit))){
R=((T0*)(C));
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r372type_any();
}
/*FI]*/
return R;
}


void r372gc_call_new_in(T372* C,T0* a1){
r7append(((T7*)a1),((T0*)ms20_3374));
r2append_in(r372id(C),a1);
r7extend(((T7*)a1),((T3)'\50'));
r7extend(((T7*)a1),((T3)'\51'));
}


T0* r153try_to_undefine_aux(T153* C,T0* a1,T0* a2){
T0* R=NULL;
{T104 se_tmp0;
r82add_position((*(se_tmp0=r153start_position(C),&se_tmp0)));
}
{T104 se_tmp0;
r153error((*(se_tmp0=X117start_position(a1),&se_tmp0)),((T0*)ms142_1389744524));
}
r61fatal_undefine(((T61*)a2),a1);
return R;
}


void r153implicit(T153* C,T0* a1,T0* a2,T0* a3){
T0* _fnl=NULL;
(/*SFN*/C->_base_class)=a1;
{T118*n=((T118*)se_malloc(sizeof(*n))/*8*/);
*n=M118;
/*[IRF3.3make_1*/((((T118*)(n)))->_first)=(a2);
/*]*/
_fnl=((T0*)n);
}
r153make(C,_fnl,a3);
{T200*n=((T200*)se_malloc(sizeof(*n))/*12*/);
*n=M200;
/*[IRF3.1omitted*//*]*/
(/*SFN*/C->_clients)=((T0*)n);
}
}


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


T6 r153can_hide(T153* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(X99result_type(a1)))){
/*[IF*/
if((((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL)))||((X99result_type(a1))==((void*)(NULL)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r153error((*(se_tmp0=r153start_position(C),&se_tmp0)),((T0*)ms99_1393094289));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X99arguments(a1)))){
/*[IF*/
{/*AT*/{T104 se_tmp0;
r82add_position((*(se_tmp0=X99start_position(a1),&se_tmp0)));
}
{T104 se_tmp0;
r153error((*(se_tmp0=r153start_position(C),&se_tmp0)),((T0*)ms99_1854646737));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((/*RF2*/(C)->_result_type/*20*/),X99result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_895448585);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((/*RF2*/(((T60*)a2))->_current_type/*0*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms20_46);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0);
/*[IF*/
if(R){
r153merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


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


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


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


void r153make(T153* C,T0* a1,T0* a2){
/*[IRF3.3make_e_feature*/((((T153*)(C)))->_names)=(a1);
/*]*/
(/*SFN*/C->_result_type)=a2;
}


void r153check_obsolete(T153* C,T104 a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r153to_run_feature(T153* C,T0* a1,T0* a2){
T0* R=NULL;
{T152*n=((T152*)se_malloc(sizeof(*n))/*36*/);
*n=M152;
r152make(n,a1,a2,(T0*)C);
R=((T0*)n);
}
return R;
}


T6 r153is_not_mergeable_with(T153* C,T0* a1){
T6 R=0;
/*[IF*/
if(((/*RF2*/(C)->_result_type/*20*/))==((void*)(NULL))){
R=(X99result_type(a1))!=((void*)(NULL));
}
else{
R=(X99result_type(a1))==((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1393094289);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
else{
/*[IF*/
{/*AT*/R=(X99arguments(a1))!=((void*)(NULL));
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.6append*/{T0* b1=((T0*)ms99_1854646737);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
 else {/*AT*/}
/*FI]*/
}
/*FI]*/
r153merge_header_comments(C,a1);
return R;
}


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


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


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


T0* r363generic_list(T363* C){
T0* R=NULL;
r363fatal_error_generic_list(C);
return R;
}


T0* r363written_mark(void){
T0* R=NULL;
R=((T0*)ms21_274599);
return R;
}


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


T0* r363run_time_mark(void){
T0* R=NULL;
R=((T0*)ms21_274599);
return R;
}


T2 r363c_sizeof(void){
T2 R=0;
R=((/*UT*/(void)(((T5)(0.0)))),sizeof(T5));
return R;
}


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


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


void r363gc_mark_in(T0* a1){
r7append(((T7*)a1),((T0*)ms20_1994852));
r2append_in(5,a1);
}
T0*oBC363type_double_ref=NULL;
int fBC363type_double_ref=0;


T0* r363type_double_ref(void){
if(fBC363type_double_ref==0){fBC363type_double_ref=1;{
T0* _double_ref=NULL;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
/*[IRF3.3unknown_position*/((((T77*)(n)))->_to_string)=(((T0*)ms21_171638715));
/*]*/
_double_ref=((T0*)n);
}
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
oBC363type_double_ref=((T0*)n);
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=(_double_ref);
/*]*/
}
}}
return oBC363type_double_ref;
}


void r363fatal_error_generic_list(T363* C){
r82add_type((T0*)C,((T0*)ms62_1313445026));
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r363c_type_for_argument_in(T0* a1){
r7extend(((T7*)a1),((T3)'T'));
r7extend(((T7*)a1),((T3)'5'));
}


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


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


void r363check_type(T363* C){
if(fBC363check_type==0){fBC363check_type=1;{
T0* _rc=NULL;
T0* _bc=NULL;
_bc=r363base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_rc=r363run_class(C);
r363load_ref(((T0*)ms21_171638715));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
/*[IF*/
if(!((/*RF2*/(((T61*)_bc))->_is_expanded/*17*/))){
{T104 se_tmp0;
r363error(/*(IRF4.6start_position*/(/*RF2*/(((T77*)((/*RF2*/(C)->_base_class_name/*12*/))))->_start_position/*0*/)/*)*/,((T0*)ms363_1764244777));
}
}
/*FI]*/
}
/*FI]*/
}}}


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


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


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


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


T6 r363is_a(T363* C,T0* a1){
T6 R=0;
/*[IF*/
if(X62is_double(a1)){
R=1;
}
 else if(r61is_subclass_of((T61*)(r363base_class(C)),X62base_class(a1))){
R=1;
}
/*FI]*/
/*[IF*/
if(!(R)){
r82add_type((T0*)C,((T0*)ms20_1308256781));
r82add_type(a1,((T0*)ms20_46));
}
/*FI]*/
return R;
}


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


T0* r363to_runnable(T363* C,T0* a1){
T0* R=NULL;
R=((T0*)(C));
r363check_type(C);
return R;
}


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


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


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


T2 r260isa_dca_inline_argument(void){
T2 R=0;
/*[IF*/
{/*AT*/R=-(1);
}
/*FI]*/
return R;
}


T0* r260type_boolean(void){
if(fBC19type_boolean==0){fBC19type_boolean=1;{
T104 _unknown_position={NULL,0};
{T360*n=((T360*)se_malloc(sizeof(*n))/*16*/);
*n=M360;
oBC19type_boolean=((T0*)n);
r360make(n,_unknown_position);
}
}}
return oBC19type_boolean;
}


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


T0* r260to_runnable(T260* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
R=((T0*)(C));
_t=r360to_runnable((T360*)(/*(IRF4.8result_type*/r260type_boolean()/*)*/),a1);
return R;
}


T0* r260static_result_base_class(void){
T0* R=NULL;
R=r59get_class(((T0*)ms21_1339128));
return R;
}


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


void r341compile_to_c(T341* C){
T6 _invariant_flag=0;
T6 _variant_flag=0;
T6 _loop_check=0;
T6 _need_se_tmp=0;
_loop_check=r57loop_check((T57*)(oBC19run_control));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms341_1952787551));
/*]*/
_variant_flag=1;
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_initialize/*12*/)));
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
r340compile_to_c((T340*)((/*RF2*/(C)->_invariant_clause/*16*/)));
_invariant_flag=1;
}
/*FI]*/
X126collect_c_tmp((/*RF2*/(C)->_until_expression/*24*/));
_need_se_tmp=r83se_tmp_open_declaration((T83*)(oBC19cpp));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms341_56655830));
/*]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
r83trace_boolean_expression((T83*)(oBC19cpp),(/*RF2*/(C)->_until_expression/*24*/));
}
else{
X126compile_to_c((/*RF2*/(C)->_until_expression/*24*/));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms341_31625));
/*]*/
/*[IF*/
if(_variant_flag){
r83variant_check((T83*)(oBC19cpp),/*SSWARF2*//*X339expression*/(/*RF2*/((T342*)((/*RF2*/(C)->_variant_clause/*20*/)))->_expression/*8*/));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
r159compile_to_c((T159*)((/*RF2*/(C)->_loop_body/*28*/)));
}
/*FI]*/
/*[IF*/
if(_invariant_flag){
r340compile_to_c((T340*)((/*RF2*/(C)->_invariant_clause/*16*/)));
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms341_635));
/*]*/
/*[IF*/
if(_need_se_tmp){
r83se_tmp_close_declaration((T83*)(oBC19cpp));
}
/*FI]*/
/*[IF*/
if(_variant_flag){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_635));
/*]*/
}
/*FI]*/
}


T6 r341stupid_switch(T341* C,T0* a1){
T6 R=0;
R=(((((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL)))||(r159stupid_switch((T159*)((/*RF2*/(C)->_initialize/*12*/)),a1)))&&(X126stupid_switch((/*RF2*/(C)->_until_expression/*24*/),a1)))&&((((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL)))||(r159stupid_switch((T159*)((/*RF2*/(C)->_loop_body/*28*/)),a1)));
return R;
}


void r341make(T341* C,T104 a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_initialize)=a2;
(/*SFN*/C->_invariant_clause)=a3;
(/*SFN*/C->_variant_clause)=a4;
(/*SFN*/C->_until_expression)=a5;
(/*SFN*/C->_loop_body)=a6;
}


void r341afd_check(T341* C){
/*[IF*/
if(r57loop_check((T57*)(oBC19run_control))){
/*[IF*/
if(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL))){
/*SSPRF3*//*X339afd_check*/r342afd_check((T342*)((/*RF2*/(C)->_variant_clause/*20*/)));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL))){
r340afd_check((T340*)((/*RF2*/(C)->_invariant_clause/*16*/)));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_initialize/*12*/)));
}
/*FI]*/
X126afd_check((/*RF2*/(C)->_until_expression/*24*/));
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
r159afd_check((T159*)((/*RF2*/(C)->_loop_body/*28*/)));
}
/*FI]*/
}


T6 r341use_current(T341* C){
T6 R=0;
T6 _loop_check=0;
_loop_check=r57loop_check((T57*)(oBC19run_control));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
R=(R)||(/*SSFRF4*//*X339use_current*/r342use_current((T342*)((/*RF2*/(C)->_variant_clause/*20*/))));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
R=(R)||(r159use_current((T159*)((/*RF2*/(C)->_initialize/*12*/))));
}
/*FI]*/
R=(R)||(X126use_current((/*RF2*/(C)->_until_expression/*24*/)));
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
R=(R)||(r340use_current((T340*)((/*RF2*/(C)->_invariant_clause/*16*/))));
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
R=(R)||(r159use_current((T159*)((/*RF2*/(C)->_loop_body/*28*/))));
}
/*FI]*/
return R;
}


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


T0* r341to_runnable(T341* C,T0* a1){
T0* R=NULL;
T6 _loop_check=0;
T0* _ue=NULL;
_loop_check=r57loop_check((T57*)(oBC19run_control));
/*[IF*/
if(((/*RF2*/(C)->_current_type/*32*/))==((void*)(NULL))){
(/*SFN*/C->_current_type)=a1;
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))!=((void*)(NULL))){
(/*SFN*/C->_initialize)=r159to_runnable((T159*)((/*RF2*/(C)->_initialize/*12*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_initialize/*12*/))==((void*)(NULL))){
{T104 se_tmp0;
r341error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms341_440473309));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_invariant_clause/*16*/))!=((void*)(NULL)))){
(/*SFN*/C->_invariant_clause)=r340to_runnable((T340*)((/*RF2*/(C)->_invariant_clause/*16*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_invariant_clause/*16*/))==((void*)(NULL))){
{T104 se_tmp0;
r341error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms341_1966571694));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((/*RF2*/(C)->_variant_clause/*20*/))!=((void*)(NULL)))){
(/*SFN*/C->_variant_clause)=X339to_runnable((/*RF2*/(C)->_variant_clause/*20*/),a1);
/*[IF*/
if(((/*RF2*/(C)->_variant_clause/*20*/))==((void*)(NULL))){
{T104 se_tmp0;
r341error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms341_1557109223));
}
}
/*FI]*/
}
/*FI]*/
_ue=X126to_runnable((/*RF2*/(C)->_until_expression/*24*/),a1);
/*[IF*/
if((_ue)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_boolean(X126result_type(_ue)))){
{T104 se_tmp0;
r341error((*(se_tmp0=X126start_position(_ue),&se_tmp0)),((T0*)ms341_746725232));
}
r82add_type(X126result_type(_ue),((T0*)ms20_1495656936));
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
(/*SFN*/C->_until_expression)=_ue;
}
else{
{T104 se_tmp0;
r341error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms341_1013542117));
}
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))!=((void*)(NULL))){
(/*SFN*/C->_loop_body)=r159to_runnable((T159*)((/*RF2*/(C)->_loop_body/*28*/)),a1);
/*[IF*/
if(((/*RF2*/(C)->_loop_body/*28*/))==((void*)(NULL))){
{T104 se_tmp0;
r341error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms341_1670731538));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
R=((T0*)(C));
}
/*FI]*/
}
else{
{T104 se_tmp0;
{T341*n=((T341*)se_malloc(sizeof(*n))/*36*/);
*n=M341;
r341make(n,(/*RF2*/(C)->_start_position/*4*/),(/*RF2*/(C)->_initialize/*12*/),(/*RF2*/(C)->_invariant_clause/*16*/),(/*RF2*/(C)->_variant_clause/*20*/),(/*RF2*/(C)->_until_expression/*24*/),(/*RF2*/(C)->_loop_body/*28*/));
R=((T0*)n);
}
}
R=r341to_runnable(((T341*)R),a1);
}
/*FI]*/
return R;
}


void r226run_feature_match(T226* C,T0* a1){
r226run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


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


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


T6 r226is_static(T226* C){
T6 R=0;
/*[IF*/
if(X62is_boolean(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r226arg1(C)))){
R=1;
(/*SFN*/C->_static_value_mem)=(X126static_value((/*RF2*/(C)->_target/*4*/)))+(X126static_value(r226arg1(C)));
/*[IF*/
if(((/*RF2*/(C)->_static_value_mem/*20*/))==(2)){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r226operator(void){
T0* R=NULL;
R=((T0*)ms21_3075);
return R;
}


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


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


T6 r226stupid_switch(T226* C,T0* a1){
T6 R=0;
R=r226call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r226result_type(C)));
}
/*FI]*/
return R;
}


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


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


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


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


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


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


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


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


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


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


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


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


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


T2 r226to_integer_or_error(T226* C){
T2 R=0;
r226to_integer_error(C);
return R;
}


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


T0* r226to_runnable(T226* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r226runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r226runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r226arg1(C));
/*[IF*/
if(X62is_real(_argument_type)){
/*[IF*/
if(X62is_integer(_target_type)){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
 else if(X62is_double(_argument_type)){
/*[IF*/
if((X62is_integer(_target_type))||(X62is_real(_target_type))){
_t=r440implicit_cast((T440*)(oBC19conversion_handler),_t,_argument_type);
}
/*FI]*/
}
/*FI]*/
_rf=r226run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_arguments)=_a;
(/*SFN*/C->_run_feature)=_rf;
r226run_feature_match(C,a1);
R=((T0*)(C));
}
 else if(((_t)==((void*)((/*RF2*/(C)->_target/*4*/))))&&((_a)==((void*)((/*RF2*/(C)->_arguments/*8*/))))){
R=((T0*)(C));
}
else{
{T226*n=((T226*)se_malloc(sizeof(*n))/*24*/);
*n=M226;
r226with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


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


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


T6 r517c_simple(T517* C){
T6 R=0;
R=X126c_simple((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r517can_be_dropped(T517* C){
T6 R=0;
R=X126can_be_dropped((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r517is_static(T517* C){
T6 R=0;
R=X126is_static((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r517is_void(T517* C){
T6 R=0;
R=X126is_void((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r517compile_to_c(T517* C){
/*[IRF3.6c_wrapper_opening*/{T517* C1=C;
r440c_function_call((T440*)(oBC19conversion_handler),(/*RF2*/(C1)->_source_type/*8*/),(/*RF2*/(C1)->_destination_type/*12*/));
}/*]*/
X126compile_to_c((/*RF2*/(C)->_expression/*4*/));
/*[IRF3.2c_wrapper_closing*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*]*/
}


T6 r517is_result(T517* C){
T6 R=0;
R=X126is_result((/*RF2*/(C)->_expression/*4*/));
return R;
}


T6 r517stupid_switch(T517* C,T0* a1){
T6 R=0;
R=X126stupid_switch((/*RF2*/(C)->_expression/*4*/),a1);
return R;
}


void r517mapping_c_arg(T517* C,T0* a1){
/*[IRF3.6c_wrapper_opening*/{T517* C1=C;
r440c_function_call((T440*)(oBC19conversion_handler),(/*RF2*/(C1)->_source_type/*8*/),(/*RF2*/(C1)->_destination_type/*12*/));
}/*]*/
X126mapping_c_arg((/*RF2*/(C)->_expression/*4*/),(/*RF2*/(C)->_source_type/*8*/));
/*[IRF3.2c_wrapper_closing*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*]*/
}


void r517make(T517* C,T0* a1,T0* a2){
(/*SFN*/C->_expression)=a1;
(/*SFN*/C->_source_type)=X126result_type(a1);
(/*SFN*/C->_destination_type)=a2;
r440notify((T440*)(oBC19conversion_handler),(/*RF2*/(C)->_expression/*4*/),(/*RF2*/(C)->_source_type/*8*/),(/*RF2*/(C)->_destination_type/*12*/));
}


void r517to_integer_error(T517* C){
/*[IRF3.6append*/{T0* b1=((T0*)ms20_752996481);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=r517start_position(C),&se_tmp0)));
}
r82print_as_error((T82*)(oBC19eh));
}


T2 r517isa_dca_inline_argument(T517* C){
T2 R=0;
R=X126isa_dca_inline_argument((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r517dca_inline_argument(T517* C,T0* a1){
X126dca_inline_argument((/*RF2*/(C)->_expression/*4*/),a1);
}


void r517assertion_check(T517* C,T3 a1){
X126assertion_check((/*RF2*/(C)->_expression/*4*/),a1);
}


void r517afd_check(T517* C){
X126afd_check((/*RF2*/(C)->_expression/*4*/));
}


T6 r517use_current(T517* C){
T6 R=0;
R=X126use_current((/*RF2*/(C)->_expression/*4*/));
return R;
}


T2 r517static_value(T517* C){
T2 R=0;
R=X126static_value((/*RF2*/(C)->_expression/*4*/));
return R;
}


void r517c_declare_for_old(T517* C){
X126c_declare_for_old((/*RF2*/(C)->_expression/*4*/));
}


void r517compile_to_c_old(T517* C){
X126compile_to_c_old((/*RF2*/(C)->_expression/*4*/));
}


void r517mapping_c_target(T517* C,T0* a1){
/*[IRF3.6c_wrapper_opening*/{T517* C1=C;
r440c_function_call((T440*)(oBC19conversion_handler),(/*RF2*/(C1)->_source_type/*8*/),(/*RF2*/(C1)->_destination_type/*12*/));
}/*]*/
X126mapping_c_target((/*RF2*/(C)->_expression/*4*/),(/*RF2*/(C)->_source_type/*8*/));
/*[IRF3.2c_wrapper_closing*//*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*]*/
}


T2 r517to_integer_or_error(T517* C){
T2 R=0;
r517to_integer_error(C);
return R;
}


T6 r517is_pre_computable(T517* C){
T6 R=0;
R=X126is_pre_computable((/*RF2*/(C)->_expression/*4*/));
return R;
}


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


T0* r517to_runnable(T517* C,T0* a1){
T0* R=NULL;
R=X126to_runnable((/*RF2*/(C)->_expression/*4*/),a1);
return R;
}


void r517collect_c_tmp(T517* C){
X126collect_c_tmp((/*RF2*/(C)->_expression/*4*/));
}


T6 r517is_current(T517* C){
T6 R=0;
R=X126is_current((/*RF2*/(C)->_expression/*4*/));
return R;
}


T104 r517start_position(T517* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=X126start_position((/*RF2*/(C)->_expression/*4*/)),&se_tmp0));
}
return R;
}


T0* r517static_result_base_class(T517* C){
T0* R=NULL;
R=X62base_class(/*(IRF4.3result_type*/(/*RF2*/(C)->_destination_type/*12*/)/*)*/);
return R;
}


void r230run_feature_match(T230* C,T0* a1){
r230run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


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

