/*
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 r453make(T453* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*4*/))>(0))&&(((/*RF2*/(C)->_upper/*8*/))>=(0))){
r456clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T456)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T456)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r456clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r453resize(T453* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T456)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*4*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r456realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
r456clear((/*RF2*/(C)->_storage/*0*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


void r138copy(T138* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(/*RF2*/(((T138*)a1))->_upper/*12*/);
/*[IF*/
if((_other_upper)>=(0)){
_new_capacity=(_other_upper)+(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_storage)=((T439)(se_calloc(_new_capacity,sizeof(T0*))));
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r439clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
r439copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T138*)a1))->_storage/*4*/),_other_upper);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r439clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=_other_upper;
}


void r138make(T138* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*8*/))>(0))&&(((/*RF2*/(C)->_upper/*12*/))>=(0))){
r439clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T439)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T439)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r439clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r138add_last(T138* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*12*/))+(1))<=(((/*RF2*/(C)->_capacity/*8*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T439)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r439realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
}


void r138resize(T138* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T439)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*8*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r439realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
r439clear((/*RF2*/(C)->_storage/*4*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


T0* r138twin(T138* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T138*)R)=M138;
r138copy(((T138*)R),((T0*)C));
return R;
}


void r138with_capacity(T138* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T439)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(a1)){
r439clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r272copy(T272* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T272*)a1))->_lower/*16*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T272*)a1))->_upper/*12*/);
_needed_capacity=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_needed_capacity)){
(/*SFN*/C->_capacity)=_needed_capacity;
(/*SFN*/C->_storage)=((T274)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r274copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T272*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T2 r272count(T272* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
return R;
}


T0* r272item(T272* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[(a1)-((/*RF2*/(C)->_lower/*16*/))];
return R;
}


void r272make(T272* C,T2 a1,T2 a2){
T2 _needed=0;
(/*SFN*/C->_lower)=a1;
(/*SFN*/C->_upper)=a2;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_needed)){
(/*SFN*/C->_storage)=((T274)(se_calloc(_needed,sizeof(T0*))));
(/*SFN*/C->_capacity)=_needed;
}
else{
/*[IRF3.6clear_all*/{T272* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T272* C2=C1;
T0* c1=__value;
r274set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,((/*RF2*/(C2)->_upper/*12*/))-((/*RF2*/(C2)->_lower/*16*/)));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r272add_last(T272* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r272count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T274)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r274realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
/*[IRF3.6put*/{T272* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


T0* r272twin(T272* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T272*)R)=M272;
r272copy(((T272*)R),((T0*)C));
return R;
}


void r272with_capacity(T272* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T274)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r132make(T132* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*8*/))>(0))&&(((/*RF2*/(C)->_upper/*12*/))>=(0))){
r135clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T135)(se_calloc(a1,sizeof(T2))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T135)(se_calloc(a1,sizeof(T2))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r135clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r132resize(T132* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T135)(se_calloc(a1,sizeof(T2))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*8*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r135realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
r135clear((/*RF2*/(C)->_storage/*4*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


void r147copy(T147* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T147*)a1))->_lower/*12*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T147*)a1))->_upper/*8*/);
_needed_capacity=(((/*RF2*/(C)->_upper/*8*/))-((/*RF2*/(C)->_lower/*12*/)))+(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(_needed_capacity)){
(/*SFN*/C->_capacity)=_needed_capacity;
(/*SFN*/C->_storage)=((T149)(se_calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r149copy_from((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(((T147*)a1))->_storage/*0*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T2 r147count(T147* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*8*/))-((/*RF2*/(C)->_lower/*12*/)))+(1);
return R;
}


T0* r147item(T147* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*0*/))[(a1)-((/*RF2*/(C)->_lower/*12*/))];
return R;
}


void r147make(T147* C,T2 a1,T2 a2){
T2 _needed=0;
(/*SFN*/C->_lower)=a1;
(/*SFN*/C->_upper)=a2;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(_needed)){
(/*SFN*/C->_storage)=((T149)(se_calloc(_needed,sizeof(T0*))));
(/*SFN*/C->_capacity)=_needed;
}
else{
/*[IRF3.6clear_all*/{T147* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T147* C2=C1;
T0* c1=__value;
r149set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,((/*RF2*/(C2)->_upper/*8*/))-((/*RF2*/(C2)->_lower/*12*/)));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r147add_last(T147* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r147count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T149)(se_calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r149realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
/*[IRF3.6put*/{T147* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


T0* r147twin(T147* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T147*)R)=M147;
r147copy(((T147*)R),((T0*)C));
return R;
}


void r147with_capacity(T147* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T149)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


T2 r445count(T445* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
return R;
}


T0* r445item(T445* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[(a1)-((/*RF2*/(C)->_lower/*16*/))];
return R;
}


void r445add_last(T445* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r445count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T447)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r447realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
/*[IRF3.6put*/{T445* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r445with_capacity(T445* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T447)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r445swap(T445* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r445item(C,a1);
/*[IRF3.6put*/{T445* C1=C;
T0* b1=r445item(C,a2);
T2 b2=a1;
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
/*[IRF3.6put*/{T445* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r52copy(T52* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T52*)a1))->_lower/*16*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T52*)a1))->_upper/*12*/);
_needed_capacity=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_needed_capacity)){
(/*SFN*/C->_capacity)=_needed_capacity;
(/*SFN*/C->_storage)=((T53)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r53copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T52*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T2 r52count(T52* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
return R;
}


T0* r52item(T52* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[(a1)-((/*RF2*/(C)->_lower/*16*/))];
return R;
}


T6 r52valid_index(T52* C,T2 a1){
T6 R=0;
R=(((/*RF2*/(C)->_lower/*16*/))<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*12*/)));
return R;
}


T2 r52index_of(T52* C,T0* a1){
T2 R=0;
R=((/*RF2*/(C)->_lower/*16*/))+(r53index_of((/*RF2*/(C)->_storage/*4*/),a1,((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/))));
return R;
}


T6 r52is_empty(T52* C){
T6 R=0;
R=((/*RF2*/(C)->_upper/*12*/))<((/*RF2*/(C)->_lower/*16*/));
return R;
}


T6 r52fast_has(T52* C,T0* a1){
T6 R=0;
R=r52valid_index(C,r52fast_index_of(C,a1));
return R;
}


void r52add_last(T52* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r52count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T53)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r53realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
/*[IRF3.6put*/{T52* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r52clear(T52* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_lower/*16*/))-(1);
}


T2 r52fast_index_of(T52* C,T0* a1){
T2 R=0;
R=((/*RF2*/(C)->_lower/*16*/))+(r53fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/))));
return R;
}


T0* r52twin(T52* C){
T0* R=NULL;
R=se_malloc(sizeof(*C));
*((T52*)R)=M52;
r52copy(((T52*)R),((T0*)C));
return R;
}


void r52with_capacity(T52* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T53)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r457make(T457* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*4*/))>(0))&&(((/*RF2*/(C)->_upper/*8*/))>=(0))){
r460clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T460)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T460)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r460clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r457resize(T457* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T460)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*4*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r460realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
r460clear((/*RF2*/(C)->_storage/*0*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


void r181add_last(T181* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*8*/))+(1))<=(((/*RF2*/(C)->_capacity/*4*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T183)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r183realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
}


void r181with_capacity(T181* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T183)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))>(a1)){
r183clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r190add_last(T190* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*8*/))+(1))<=(((/*RF2*/(C)->_capacity/*4*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T192)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r192realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
}


void r190with_capacity(T190* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T192)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))>(a1)){
r192clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r175make(T175* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*4*/))>(0))&&(((/*RF2*/(C)->_upper/*8*/))>=(0))){
r177clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T177)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T177)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r177clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r175add_last(T175* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*8*/))+(1))<=(((/*RF2*/(C)->_capacity/*4*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T177)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r177realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
}


void r175with_capacity(T175* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T177)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))>(a1)){
r177clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


T0* r520last(T520* C){
T0* R=NULL;
R=/*(IRF4.6item*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]/*)*/;
return R;
}


T6 r520valid_index(T520* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*12*/)));
return R;
}


void r520make(T520* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*8*/))>(0))&&(((/*RF2*/(C)->_upper/*12*/))>=(0))){
r447clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T447)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T447)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r447clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r520remove_last(T520* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))-(1);
}


T6 r520fast_has(T520* C,T0* a1){
T6 R=0;
R=r520valid_index(C,r520fast_index_of(C,a1));
return R;
}


void r520add_last(T520* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*12*/))+(1))<=(((/*RF2*/(C)->_capacity/*8*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T447)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r447realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
}


void r520resize(T520* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T447)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*8*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r447realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
r447clear((/*RF2*/(C)->_storage/*4*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


T2 r520fast_index_of(T520* C,T0* a1){
T2 R=0;
R=r447fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r520with_capacity(T520* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T447)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(a1)){
r447clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


T0* r479last(T479* C){
T0* R=NULL;
R=/*(IRF4.6item*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]/*)*/;
return R;
}


T6 r479valid_index(T479* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*12*/)));
return R;
}


void r479make(T479* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*8*/))>(0))&&(((/*RF2*/(C)->_upper/*12*/))>=(0))){
r482clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T482)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T482)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r482clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r479remove_last(T479* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))-(1);
}


T6 r479fast_has(T479* C,T0* a1){
T6 R=0;
R=r479valid_index(C,r479fast_index_of(C,a1));
return R;
}


void r479add_last(T479* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*12*/))+(1))<=(((/*RF2*/(C)->_capacity/*8*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T482)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r482realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
}


void r479resize(T479* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T482)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*8*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r482realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
r482clear((/*RF2*/(C)->_storage/*4*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


T2 r479fast_index_of(T479* C,T0* a1){
T2 R=0;
R=r482fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r479with_capacity(T479* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T482)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(a1)){
r482clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r63copy(T63* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T63*)a1))->_lower/*16*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T63*)a1))->_upper/*12*/);
_needed_capacity=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_needed_capacity)){
(/*SFN*/C->_capacity)=_needed_capacity;
(/*SFN*/C->_storage)=((T65)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r65copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T63*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T2 r63count(T63* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
return R;
}


T0* r63item(T63* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[(a1)-((/*RF2*/(C)->_lower/*16*/))];
return R;
}


T6 r63valid_index(T63* C,T2 a1){
T6 R=0;
R=(((/*RF2*/(C)->_lower/*16*/))<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*12*/)));
return R;
}


T6 r63fast_has(T63* C,T0* a1){
T6 R=0;
R=r63valid_index(C,r63fast_index_of(C,a1));
return R;
}


void r63add_last(T63* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r63count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T65)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r65realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
/*[IRF3.6put*/{T63* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


T2 r63fast_index_of(T63* C,T0* a1){
T2 R=0;
R=((/*RF2*/(C)->_lower/*16*/))+(r65fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/))));
return R;
}


void r63with_capacity(T63* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T65)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r63swap(T63* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r63item(C,a1);
/*[IRF3.6put*/{T63* C1=C;
T0* b1=r63item(C,a2);
T2 b2=a1;
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
/*[IRF3.6put*/{T63* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


T0* r502last(T502* C){
T0* R=NULL;
R=/*(IRF4.6item*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]/*)*/;
return R;
}


T6 r502valid_index(T502* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*12*/)));
return R;
}


void r502make(T502* C,T2 a1){
/*[IF*/
if((a1)==(0)){
/*[IF*/
if((((/*RF2*/(C)->_capacity/*8*/))>(0))&&(((/*RF2*/(C)->_upper/*12*/))>=(0))){
r505clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T505)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T505)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
r505clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
(/*SFN*/C->_upper)=(a1)-(1);
}
/*FI]*/
}


void r502remove_last(T502* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))-(1);
}


T6 r502fast_has(T502* C,T0* a1){
T6 R=0;
R=r502valid_index(C,r502fast_index_of(C,a1));
return R;
}


void r502add_last(T502* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*12*/))+(1))<=(((/*RF2*/(C)->_capacity/*8*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T505)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r505realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
}


void r502resize(T502* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if((a1)>(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T505)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
_new_capacity=((/*RF2*/(C)->_capacity/*8*/))*(2);
while (!((_new_capacity)>=(a1)))
{
_new_capacity=(_new_capacity)*(2);
}
(/*SFN*/C->_storage)=r505realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
 else if((a1)!=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
r505clear((/*RF2*/(C)->_storage/*4*/),a1,(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=(a1)-(1);
}


T2 r502fast_index_of(T502* C,T0* a1){
T2 R=0;
R=r505fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r502with_capacity(T502* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T505)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(a1)){
r505clear((/*RF2*/(C)->_storage/*4*/),0,(/*RF2*/(C)->_upper/*12*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


T2 r398count(T398* C){
T2 R=0;
R=(((/*RF2*/(C)->_upper/*12*/))-((/*RF2*/(C)->_lower/*16*/)))+(1);
return R;
}


T0* r398item(T398* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[(a1)-((/*RF2*/(C)->_lower/*16*/))];
return R;
}


void r398add_last(T398* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r398count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T401)(se_calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r401realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
/*[IRF3.6put*/{T398* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r398with_capacity(T398* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T401)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r489add_last(T489* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((/*RF2*/(C)->_upper/*8*/))+(1))<=(((/*RF2*/(C)->_capacity/*4*/))-(1))){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T491)(se_calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r491realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
}


void r489with_capacity(T489* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T491)(se_calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
 else if(((/*RF2*/(C)->_capacity/*4*/))>(a1)){
r491clear((/*RF2*/(C)->_storage/*0*/),0,(/*RF2*/(C)->_upper/*8*/));
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


T0* r45key(T45* C,T2 a1){
T0* R=NULL;
r45set_cache_user(C,a1);
R=(/*RF2*/((T46*)((/*RF2*/(C)->_cache_node/*16*/)))->_key/*4*/);
return R;
}


T2 r45at(T45* C,T0* a1){
T2 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T46*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T46*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T46*)_node))->_item/*0*/);
return R;
}


void r45put(T45* C,T2 a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T46*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T46*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r45increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T46*n=((T46*)se_malloc(sizeof(*n))/*12*/);
*n=M46;
r46make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T46*)(((T46*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r45fast_key_at(T45* C,T2 a1){
T0* R=NULL;
T2 _i=0;
_i=1;
while (!((a1)==(r45item(C,_i))))
{
_i=(_i)+(1);
}
R=(/*RF2*/((T46*)((/*RF2*/(C)->_cache_node/*16*/)))->_key/*4*/);
return R;
}


T2 r45item(T45* C,T2 a1){
T2 R=0;
r45set_cache_user(C,a1);
R=(/*RF2*/((T46*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r45set_cache_user(T45* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T46*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r45set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r45set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r45increase_capacity(T45* C){
T0* _node2=NULL;
T0* _node1=NULL;
T47 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r45prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T47)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T46*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T46*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T46*)(((T46*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r45has(T45* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T46*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T46*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r45with_capacity(T45* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r45prime_number_for(a1);
(/*SFN*/C->_buckets)=((T47)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r45prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r70make(T70* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r442make(T442* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


T0* r144at(T144* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T145*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T145*)_node))->_item/*0*/);
return R;
}


void r144put(T144* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T145*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r144increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T145*n=((T145*)se_malloc(sizeof(*n))/*12*/);
*n=M145;
r145make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T145*)(((T145*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r144item(T144* C,T2 a1){
T0* R=NULL;
r144set_cache_user(C,a1);
R=(/*RF2*/((T145*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r144set_cache_user(T144* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T145*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r144set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r144set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r144remove(T144* C,T0* a1){
T0* _previous_node=NULL;
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a1));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
/*[IF*/
if((_node)!=((void*)(NULL))){
/*[IF*/
if(r7is_equal((T7*)((/*RF2*/(((T145*)_node))->_key/*4*/)),a1)){
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))-(1);
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
}
else{
_previous_node=_node;
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T145*)_node))->_key/*4*/)),a1))))
{
_previous_node=_node;
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)!=((void*)(NULL))){
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))-(1);
/*[IRF3.3set_next*/((((T145*)(((T145*)_previous_node))))->_next)=((/*RF2*/(((T145*)_node))->_next/*8*/));
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r144increase_capacity(T144* C){
T0* _node2=NULL;
T0* _node1=NULL;
T146 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r144prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T146)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T145*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T145*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T145*)(((T145*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r144has(T144* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T145*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T145*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r144add(T144* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
(/*SFN*/C->_cache_user)=-(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r144increase_capacity(C);
}
/*FI]*/
_idx=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_capacity/*4*/));
{T145*n=((T145*)se_malloc(sizeof(*n))/*12*/);
*n=M145;
r145make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}


void r144with_capacity(T144* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r144prime_number_for(a1);
(/*SFN*/C->_buckets)=((T146)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r144prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


T0* r441key(T441* C,T2 a1){
T0* R=NULL;
r441set_cache_user(C,a1);
R=(/*RF2*/((T442*)((/*RF2*/(C)->_cache_node/*16*/)))->_key/*4*/);
return R;
}


T0* r441at(T441* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T442*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T442*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T442*)_node))->_item/*0*/);
return R;
}


void r441put(T441* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T442*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T442*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r441increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T442*n=((T442*)se_malloc(sizeof(*n))/*12*/);
*n=M442;
r442make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T442*)(((T442*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r441item(T441* C,T2 a1){
T0* R=NULL;
r441set_cache_user(C,a1);
R=(/*RF2*/((T442*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r441set_cache_user(T441* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T442*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r441set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r441set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r441increase_capacity(T441* C){
T0* _node2=NULL;
T0* _node1=NULL;
T443 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r441prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T443)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T442*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T442*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T442*)(((T442*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r441has(T441* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T442*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T442*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r441with_capacity(T441* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r441prime_number_for(a1);
(/*SFN*/C->_buckets)=((T443)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r441prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


T0* r69at(T69* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T70*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T70*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T70*)_node))->_item/*0*/);
return R;
}


void r69put(T69* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T70*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T70*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r69increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T70*n=((T70*)se_malloc(sizeof(*n))/*12*/);
*n=M70;
r70make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T70*)(((T70*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r69item(T69* C,T2 a1){
T0* R=NULL;
r69set_cache_user(C,a1);
R=(/*RF2*/((T70*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r69set_cache_user(T69* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T70*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r69set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r69set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r69increase_capacity(T69* C){
T0* _node2=NULL;
T0* _node1=NULL;
T71 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r69prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T71)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T70*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T70*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T70*)(((T70*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r69has(T69* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T70*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T70*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r69item_map_in(T69* C,T0* a1){
T2 _idx=0;
T2 _i=0;
T0* _node=NULL;
_i=(/*RF2*/(C)->_count/*8*/);
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!((_i)<=(0)))
{
while (!((_node)!=((void*)(NULL))))
{
_idx=(_idx)+(1);
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
}
X68add_last(a1,(/*RF2*/(((T70*)_node))->_item/*0*/));
_node=(/*RF2*/(((T70*)_node))->_next/*8*/);
_i=(_i)-(1);
}
}


void r69with_capacity(T69* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r69prime_number_for(a1);
(/*SFN*/C->_buckets)=((T71)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r69prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r498put(T498* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)(/*SSWARF2*//*X499key*/(/*RF2*/(((T499*)_node))->_key/*8*/)),a2))))
{
_node=/*SSWARF2*//*X499next*/(/*RF2*/(((T499*)_node))->_next/*12*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==((/*RF2*/(C)->_count/*12*/))){
r498increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
}
/*FI]*/
{T499*n=((T499*)se_malloc(sizeof(*n))/*16*/);
*n=M499;
r499make(n,a1,a2,((/*RF2*/(C)->_buckets/*4*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))+(1);
}
else{
X499set_item(_node,a1);
}
/*FI]*/
}


void r498make(T498* C){
r498with_capacity(C,193);
}


void r498increase_capacity(T498* C){
T0* _node2=NULL;
T0* _node1=NULL;
T500 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r498prime_number_for(((/*RF2*/(C)->_capacity/*8*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*4*/);
(/*SFN*/C->_buckets)=((T500)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*12*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=/*SSWARF2*//*X499next*/(/*RF2*/(((T499*)_node1))->_next/*12*/);
_idx=(r7hash_code((T7*)(/*SSWARF2*//*X499key*/(/*RF2*/(((T499*)_node1))->_key/*8*/))))%((/*RF2*/(C)->_capacity/*8*/));
X499set_next(_node1,((/*RF2*/(C)->_buckets/*4*/))[_idx]);
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


void r498with_capacity(T498* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r498prime_number_for(a1);
(/*SFN*/C->_buckets)=((T500)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r498prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r451make(T451* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r173make(T173* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r35make(T35* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


T0* r172at(T172* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T173*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T173*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T173*)_node))->_item/*0*/);
return R;
}


void r172increase_capacity(T172* C){
T0* _node2=NULL;
T0* _node1=NULL;
T174 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r172prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T174)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T173*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T173*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T173*)(((T173*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r172has(T172* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T173*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T173*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r172add(T172* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
(/*SFN*/C->_cache_user)=-(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r172increase_capacity(C);
}
/*FI]*/
_idx=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_capacity/*4*/));
{T173*n=((T173*)se_malloc(sizeof(*n))/*12*/);
*n=M173;
r173make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}


void r172with_capacity(T172* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r172prime_number_for(a1);
(/*SFN*/C->_buckets)=((T174)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r172prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r471put(T471* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T472*)_node))->_key/*8*/)),a2))))
{
_node=(/*RF2*/(((T472*)_node))->_next/*12*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==((/*RF2*/(C)->_count/*12*/))){
r471increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
}
/*FI]*/
{T472*n=((T472*)se_malloc(sizeof(*n))/*16*/);
*n=M472;
r472make(n,a1,a2,((/*RF2*/(C)->_buckets/*4*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T472*)(((T472*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r471item(T471* C,T2 a1){
T0* R=NULL;
r471set_cache_user(C,a1);
R=(/*RF2*/((T472*)((/*RF2*/(C)->_cache_node/*20*/)))->_item/*4*/);
return R;
}


void r471set_cache_user(T471* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*16*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T472*)((/*RF2*/(C)->_cache_node/*20*/)))->_next/*12*/);
while (!(((/*RF2*/(C)->_cache_node/*20*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*24*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*4*/))[(/*RF2*/(C)->_cache_buckets/*24*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*16*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*4*/))[(/*RF2*/(C)->_cache_buckets/*24*/)];
while (!(((/*RF2*/(C)->_cache_node/*20*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*24*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*4*/))[(/*RF2*/(C)->_cache_buckets/*24*/)];
}
}
else{
r471set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*16*/))==(a1)))
{
r471set_cache_user(C,((/*RF2*/(C)->_cache_user/*16*/))+(1));
}
}
/*FI]*/
}


void r471remove(T471* C,T0* a1){
T0* _previous_node=NULL;
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a1));
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
/*[IF*/
if((_node)!=((void*)(NULL))){
/*[IF*/
if(r7is_equal((T7*)((/*RF2*/(((T472*)_node))->_key/*8*/)),a1)){
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))-(1);
_node=(/*RF2*/(((T472*)_node))->_next/*12*/);
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node);
}
else{
_previous_node=_node;
_node=(/*RF2*/(((T472*)_node))->_next/*12*/);
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T472*)_node))->_key/*8*/)),a1))))
{
_previous_node=_node;
_node=(/*RF2*/(((T472*)_node))->_next/*12*/);
}
/*[IF*/
if((_node)!=((void*)(NULL))){
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))-(1);
/*[IRF3.3set_next*/((((T472*)(((T472*)_previous_node))))->_next)=((/*RF2*/(((T472*)_node))->_next/*12*/));
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r471increase_capacity(T471* C){
T0* _node2=NULL;
T0* _node1=NULL;
T473 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r471prime_number_for(((/*RF2*/(C)->_capacity/*8*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*4*/);
(/*SFN*/C->_buckets)=((T473)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*12*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T472*)_node1))->_next/*12*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T472*)_node1))->_key/*8*/))))%((/*RF2*/(C)->_capacity/*8*/));
/*[IRF3.3set_next*/((((T472*)(((T472*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*4*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r471has(T471* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T472*)_node))->_key/*8*/)),a1))))
{
_node=(/*RF2*/(((T472*)_node))->_next/*12*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r471with_capacity(T471* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r471prime_number_for(a1);
(/*SFN*/C->_buckets)=((T473)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r471prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r472make(T472* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r462put(T462* C,T0* a1,T2 a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r2hash_code(a2);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(((/*RF2*/(((T463*)_node))->_key/*4*/))==(a2))))
{
_node=(/*RF2*/(((T463*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r462increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T463*n=((T463*)se_malloc(sizeof(*n))/*12*/);
*n=M463;
r463make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T463*)(((T463*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r462item(T462* C,T2 a1){
T0* R=NULL;
r462set_cache_user(C,a1);
R=(/*RF2*/((T463*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r462set_cache_user(T462* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T463*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r462set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r462set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r462increase_capacity(T462* C){
T0* _node2=NULL;
T0* _node1=NULL;
T464 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r462prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T464)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T463*)_node1))->_next/*8*/);
_idx=(r2hash_code((/*RF2*/(((T463*)_node1))->_key/*4*/)))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T463*)(((T463*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r462has(T462* C,T2 a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r2hash_code(a1))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(((/*RF2*/(((T463*)_node))->_key/*4*/))==(a1))))
{
_node=(/*RF2*/(((T463*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r462with_capacity(T462* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r462prime_number_for(a1);
(/*SFN*/C->_buckets)=((T464)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r462prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r499make(T499* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r80make(T80* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


T0* r30at(T30* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T35*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T35*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T35*)_node))->_item/*0*/);
return R;
}


void r30put(T30* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T35*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T35*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==((/*RF2*/(C)->_count/*12*/))){
r30increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*8*/));
}
/*FI]*/
{T35*n=((T35*)se_malloc(sizeof(*n))/*12*/);
*n=M35;
r35make(n,a1,a2,((/*RF2*/(C)->_buckets/*4*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T35*)(((T35*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


void r30increase_capacity(T30* C){
T0* _node2=NULL;
T0* _node1=NULL;
T33 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r30prime_number_for(((/*RF2*/(C)->_capacity/*8*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*4*/);
(/*SFN*/C->_buckets)=((T33)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*12*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T35*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T35*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*8*/));
/*[IRF3.3set_next*/((((T35*)(((T35*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*4*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r30has(T30* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*8*/));
_node=((/*RF2*/(C)->_buckets/*4*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T35*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T35*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r30add(T30* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
(/*SFN*/C->_cache_user)=-(1);
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==((/*RF2*/(C)->_count/*12*/))){
r30increase_capacity(C);
}
/*FI]*/
_idx=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_capacity/*8*/));
{T35*n=((T35*)se_malloc(sizeof(*n))/*12*/);
*n=M35;
r35make(n,a1,a2,((/*RF2*/(C)->_buckets/*4*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*4*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*12*/))+(1);
}


void r30with_capacity(T30* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r30prime_number_for(a1);
(/*SFN*/C->_buckets)=((T33)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r30prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


T0* r79at(T79* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T80*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T80*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T80*)_node))->_item/*0*/);
return R;
}


void r79put(T79* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T80*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T80*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r79increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T80*n=((T80*)se_malloc(sizeof(*n))/*12*/);
*n=M80;
r80make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T80*)(((T80*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r79item(T79* C,T2 a1){
T0* R=NULL;
r79set_cache_user(C,a1);
R=(/*RF2*/((T80*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r79set_cache_user(T79* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T80*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r79set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r79set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r79increase_capacity(T79* C){
T0* _node2=NULL;
T0* _node1=NULL;
T81 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r79prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T81)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T80*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T80*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T80*)(((T80*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r79has(T79* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T80*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T80*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r79with_capacity(T79* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r79prime_number_for(a1);
(/*SFN*/C->_buckets)=((T81)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r79prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r46make(T46* C,T2 a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r145make(T145* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


T0* r450at(T450* C,T0* a1){
T0* R=NULL;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(r7is_equal((T7*)((/*RF2*/(((T451*)_node))->_key/*4*/)),a1)))
{
_node=(/*RF2*/(((T451*)_node))->_next/*8*/);
}
R=(/*RF2*/(((T451*)_node))->_item/*0*/);
return R;
}


void r450put(T450* C,T0* a1,T0* a2){
T0* _node=NULL;
T2 _idx=0;
T2 _h=0;
(/*SFN*/C->_cache_user)=-(1);
_h=r7hash_code(((T7*)a2));
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T451*)_node))->_key/*4*/)),a2))))
{
_node=(/*RF2*/(((T451*)_node))->_next/*8*/);
}
/*[IF*/
if((_node)==((void*)(NULL))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==((/*RF2*/(C)->_count/*8*/))){
r450increase_capacity(C);
_idx=(_h)%((/*RF2*/(C)->_capacity/*4*/));
}
/*FI]*/
{T451*n=((T451*)se_malloc(sizeof(*n))/*12*/);
*n=M451;
r451make(n,a1,a2,((/*RF2*/(C)->_buckets/*0*/))[_idx]);
_node=((T0*)n);
}
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*8*/))+(1);
}
else{
/*[IRF3.3set_item*/((((T451*)(((T451*)_node))))->_item)=(a1);
/*]*/
}
/*FI]*/
}


T0* r450item(T450* C,T2 a1){
T0* R=NULL;
r450set_cache_user(C,a1);
R=(/*RF2*/((T451*)((/*RF2*/(C)->_cache_node/*16*/)))->_item/*0*/);
return R;
}


void r450set_cache_user(T450* C,T2 a1){
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user/*12*/))+(1))){
(/*SFN*/C->_cache_user)=a1;
(/*SFN*/C->_cache_node)=(/*RF2*/((T451*)((/*RF2*/(C)->_cache_node/*16*/)))->_next/*8*/);
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
 else if((a1)==((/*RF2*/(C)->_cache_user/*12*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user)=1;
(/*SFN*/C->_cache_buckets)=0;
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
while (!(((/*RF2*/(C)->_cache_node/*16*/))!=((void*)(NULL))))
{
(/*SFN*/C->_cache_buckets)=((/*RF2*/(C)->_cache_buckets/*20*/))+(1);
(/*SFN*/C->_cache_node)=((/*RF2*/(C)->_buckets/*0*/))[(/*RF2*/(C)->_cache_buckets/*20*/)];
}
}
else{
r450set_cache_user(C,1);
while (!(((/*RF2*/(C)->_cache_user/*12*/))==(a1)))
{
r450set_cache_user(C,((/*RF2*/(C)->_cache_user/*12*/))+(1));
}
}
/*FI]*/
}


void r450increase_capacity(T450* C){
T0* _node2=NULL;
T0* _node1=NULL;
T452 _old_buckets=NULL;
T2 _new_capacity=0;
T2 _idx=0;
T2 _i=0;
_new_capacity=r450prime_number_for(((/*RF2*/(C)->_capacity/*4*/))+(1));
_old_buckets=(/*RF2*/(C)->_buckets/*0*/);
(/*SFN*/C->_buckets)=((T452)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
_i=((/*RF2*/(C)->_count/*8*/))-(1);
while (!((_i)<(0)))
{
_node1=(_old_buckets)[_i];
while (!((_node1)==((void*)(NULL))))
{
_node2=(/*RF2*/(((T451*)_node1))->_next/*8*/);
_idx=(r7hash_code((T7*)((/*RF2*/(((T451*)_node1))->_key/*4*/))))%((/*RF2*/(C)->_capacity/*4*/));
/*[IRF3.3set_next*/((((T451*)(((T451*)_node1))))->_next)=(((/*RF2*/(C)->_buckets/*0*/))[_idx]);
/*]*/
((/*RF2*/(C)->_buckets/*0*/))[_idx]=(_node1);
_node1=_node2;
}
_i=(_i)-(1);
}
(/*SFN*/C->_cache_user)=-(1);
}


T6 r450has(T450* C,T0* a1){
T6 R=0;
T0* _node=NULL;
T2 _idx=0;
_idx=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_capacity/*4*/));
_node=((/*RF2*/(C)->_buckets/*0*/))[_idx];
while (!(((_node)==((void*)(NULL)))||(r7is_equal((T7*)((/*RF2*/(((T451*)_node))->_key/*4*/)),a1))))
{
_node=(/*RF2*/(((T451*)_node))->_next/*8*/);
}
R=(_node)!=((void*)(NULL));
return R;
}


void r450with_capacity(T450* C,T2 a1){
T2 _new_capacity=0;
_new_capacity=r450prime_number_for(a1);
(/*SFN*/C->_buckets)=((T452)(se_calloc(_new_capacity,sizeof(T0*))));
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_cache_user)=-(1);
(/*SFN*/C->_count)=0;
}


T2 r450prime_number_for(T2 a1){
T2 R=0;
/*[IF*/
if((a1)<=(53)){
R=53;
}
 else if((a1)<=(97)){
R=97;
}
 else if((a1)<=(193)){
R=193;
}
 else if((a1)<=(389)){
R=389;
}
 else if((a1)<=(769)){
R=769;
}
 else if((a1)<=(1543)){
R=1543;
}
 else if((a1)<=(3079)){
R=3079;
}
 else if((a1)<=(6151)){
R=6151;
}
 else if((a1)<=(12289)){
R=12289;
}
 else if((a1)<=(24593)){
R=24593;
}
 else if((a1)<=(49157)){
R=49157;
}
 else if((a1)<=(98317)){
R=98317;
}
 else if((a1)<=(196613)){
R=196613;
}
 else if((a1)<=(393241)){
R=393241;
}
 else if((a1)<=(786433)){
R=786433;
}
 else if((a1)<=(1572869)){
R=1572869;
}
 else if((a1)<=(3145739)){
R=3145739;
}
 else if((a1)<=(6291469)){
R=6291469;
}
 else if((a1)<=(12582917)){
R=12582917;
}
 else if((a1)<=(25165843)){
R=25165843;
}
 else if((a1)<=(50331653)){
R=50331653;
}
 else if((a1)<=(100663319)){
R=100663319;
}
 else if((a1)<=(201326611)){
R=201326611;
}
 else if((a1)<=(402653189)){
R=402653189;
}
 else if((a1)<=(805306457)){
R=805306457;
}
else{
R=1610612741;
}
/*FI]*/
return R;
}


void r463make(T463* C,T0* a1,T2 a2,T0* a3){
(/*SFN*/C->_item)=a1;
(/*SFN*/C->_key)=a2;
(/*SFN*/C->_next)=a3;
}


void r200vape_check(T200* C,T104 a1,T0* a2){
T0* _cn=NULL;
T0* _caller=NULL;
T2 _i=0;
T6 _vape=0;
/*[IF*/
if(r200is_omitted(C)){
_vape=r200gives_permission_to_any(((T200*)a2));
}
 else if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
_vape=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
_vape=1;
_i=r287count((T287*)((/*RF2*/(C)->_list/*8*/)));
while (!((!(_vape))||((_i)==(0))))
{
_cn=r287item((T287*)((/*RF2*/(C)->_list/*8*/)),_i);
_vape=r200gives_permission_to(((T200*)a2),_cn);
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if(!(_vape)){
/*[IF*/
if((_cn)!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T77*)_cn))->_start_position/*0*/));
}
}
else{
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
}
/*FI]*/
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=((T0*)ms200_354325983);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
r82add_position(a1);
{T104 se_tmp0;
r82add_position((/*RF2*/(((T200*)a2))->_start_position/*0*/));
}
_caller=/*(IRF4.9top_rf*/r155last((T155*)(oBC59run_feature_stack))/*)*/;
/*[IRF3.6append*/{T0* b1=X62run_time_mark(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)_caller))->_current_type/*8*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms200_1530892681);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
/*[IRF3.6append*/{T0* b1=((T0*)ms200_790556736);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IF*/
if((_cn)!=((void*)(NULL))){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T77*)_cn))->_start_position/*0*/));
}
}
else{
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
}
/*FI]*/
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(_caller),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)_caller))->_name/*16*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}


T6 r200gives_permission_to(T200* C,T0* a1){
T6 R=0;
/*[IF*/
if(r200is_omitted(C)){
R=1;
}
 else if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
}
else{
R=r287gives_permission_to((T287*)((/*RF2*/(C)->_list/*8*/)),a1);
}
/*FI]*/
r200gives_permission_error(C,R,(/*RF2*/(((T77*)a1))->_to_string/*8*/));
return R;
}
T0*oBC19eh=NULL;


T0* r200append(T200* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)==((void*)(a1)))||(r200is_omitted(C))){
R=((T0*)(C));
}
else{
/*[IF*/
if(r200gives_permission_to_any(C)){
R=((T0*)(C));
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(r200is_omitted(((T200*)a1))){
R=a1;
}
 else if(r200gives_permission_to_any(((T200*)a1))){
R=a1;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
{T104 se_tmp0;
{T200*n=((T200*)se_malloc(sizeof(*n))/*12*/);
*n=M200;
r200merge(n,(/*RF2*/(C)->_start_position/*0*/),(/*RF2*/(C)->_list/*8*/),(/*RF2*/(((T200*)a1))->_list/*8*/));
R=((T0*)n);
}
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC19small_eiffel=NULL;


void r200merge(T200* C,T104 a1,T0* a2,T0* a3){
(/*SFN*/C->_start_position)=a1;
{T287*n=((T287*)se_malloc(sizeof(*n))/*8*/);
*n=M287;
r287merge(n,a2,a3);
(/*SFN*/C->_list)=((T0*)n);
}
}


void r200gives_permission_error(T200* C,T6 a1,T0* a2){
/*[IF*/
if(a1){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC82explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T105*)((T105*)(oBC82positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
{T104 se_tmp0;
/*[IF*/
if(r104is_unknown(&((/*RF2*/(C)->_start_position/*0*/)))){
{T104 se_tmp0;
/*[IF*/
if(((/*RF2*/(C)->_list/*8*/))!=((void*)(NULL))){
{T104 se_tmp1;
T104 se_tmp0;
r82add_position((/*RF2*/((T77*)(r287item((T287*)((/*RF2*/(C)->_list/*8*/)),1)))->_start_position/*0*/));
}
}
/*FI]*/
}
}
else{
{T104 se_tmp2;
T104 se_tmp1;
T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*0*/));
}
}
/*FI]*/
}
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms200_1369337435);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
}
/*FI]*/
}


void r200make(T200* C,T104 a1,T0* a2){
(/*SFN*/C->_start_position)=a1;
(/*SFN*/C->_list)=a2;
}


T6 r200gives_permission_to_any(T200* C){
T6 R=0;
/*[IF*/
if(r200is_omitted(C)){
R=1;
}
 else if(((/*RF2*/(C)->_list/*8*/))==((void*)(NULL))){
}
else{
R=r287gives_permission_to_any((T287*)((/*RF2*/(C)->_list/*8*/)));
}
/*FI]*/
r200gives_permission_error(C,R,((T0*)ms21_2104));
return R;
}


T6 r200is_omitted(T200* C){
T6 R=0;
{T104 se_tmp0;
R=r104is_unknown(&((/*RF2*/(C)->_start_position/*0*/)));
}
return R;
}


T0* r200merge_with(T200* C,T0* a1){
T0* R=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r200gives_permission_to_any(C)){
R=((T0*)(C));
}
 else if(r200gives_permission_to_any(((T200*)a1))){
R=a1;
}
else{
{T104 se_tmp0;
_sp=(/*RF2*/(C)->_start_position/*0*/);
}
/*[IF*/
if(r104is_unknown(&_sp)){
{T104 se_tmp0;
_sp=(/*RF2*/(((T200*)a1))->_start_position/*0*/);
}
}
/*FI]*/
{T200*n=((T200*)se_malloc(sizeof(*n))/*12*/);
*n=M200;
r200merge(n,_sp,(/*RF2*/(C)->_list/*8*/),(/*RF2*/(((T200*)a1))->_list/*8*/));
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r143can_be_dropped(T143* C){
T6 R=0;
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
r143fatal_error(((T0*)ms143_1966754928));
return R;
}


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


void r143with(T143* C,T0* a1,T0* a2){
(/*SFN*/C->_to_string)=(/*RF2*/(((T143*)a1))->_to_string/*12*/);
{T104 se_tmp0;
(/*SFN*/C->_start_position)=(/*RF2*/(((T143*)a1))->_start_position/*4*/);
}
(/*SFN*/C->_run_feature_2)=a2;
}
T0*oBC19cpp=NULL;


void r143compile_to_c(T143* C){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms143_1761546765));
/*]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),X117to_string((/*RF2*/((T152*)((/*RF2*/(C)->_run_feature_2/*16*/)))->_name/*16*/)));
/*]*/
/*[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 r143stupid_switch(T143* C,T0* a1){
T6 R=0;
T0* _rf2=NULL;
_rf2=(/*RF2*/(C)->_run_feature_2/*16*/);
/*[IF*/
if((_rf2)!=((void*)(NULL))){
/*[IF*/
if(r59same_base_feature(_rf2,a1)){
R=(r152stupid_switch(((T152*)_rf2),a1))!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
return R;
}


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


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


void r143to_integer_error(T143* 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 r143undefine_in(T143* C,T0* a1){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r143run_feature(T143* C,T0* a1){
T0* R=NULL;
R=r60get_rf_with((T60*)(X62run_class(a1)),(T0*)C);
return R;
}


void r143mapping_c_target(T143* C,T0* a1){
T6 _flag=0;
_flag=r83call_invariant_start(a1);
r143compile_to_c(C);
/*[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 r143to_integer_or_error(T143* C){
T2 R=0;
r143to_integer_error(C);
return R;
}


T0* r143add_comment(T143* 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* r143to_runnable(T143* C,T0* a1){
T0* R=NULL;
T0* _rf2=NULL;
T0* _new_name=NULL;
T0* _rf=NULL;
T0* _wbc=NULL;
{T104 se_tmp0;
_wbc=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
}
_new_name=r61new_name_of((T61*)(X62base_class(a1)),_wbc,(T0*)C);
_rf=r60get_feature((T60*)(X62run_class(a1)),_new_name);
/*[IF*/
if((_rf)==((void*)(NULL))){
r82add_feature_name(_new_name);
r143fatal_error(((T0*)ms20_1865695338));
}
else{
_rf2=_rf;
if(NULL!=(_rf2)){
switch(((T0*)_rf2)->id){
case 152:
break;
default:
_rf2=NULL;
}
}/*[IF*/
if((_rf2)==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X96start_position(_rf),&se_tmp0)));
}
{T104 se_tmp0;
r82add_position((/*RF2*/(C)->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms143_1345559174);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_run_feature_2/*16*/))==((void*)(NULL))){
(/*SFN*/C->_run_feature_2)=_rf2;
R=((T0*)(C));
}
 else if(((/*RF2*/(C)->_run_feature_2/*16*/))==((void*)(_rf))){
R=((T0*)(C));
}
else{
{T143*n=((T143*)se_malloc(sizeof(*n))/*20*/);
*n=M143;
r143with(n,(T0*)C,_rf2);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


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


T0* r143static_result_base_class(T143* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
{T104 se_tmp0;
_bc=(/*RF2*/((/*RF2*/(C)->_start_position/*4*/))._base_class/*0*/);
}
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(T0*)C);
/*[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;
}
T432 oBC19switch_collection=0;


void r223run_feature_match(T223* C,T0* a1){
r223run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r223runnable_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)));
}
r223fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r223call_proc_call_stupid_switch(T223* 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 r223is_static(T223* C){
T6 R=0;
/*[IF*/
if(X62is_boolean(X126result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r223arg1(C)))){
R=1;
(/*SFN*/C->_static_value_mem)=(X126static_value((/*RF2*/(C)->_target/*4*/)))+(X126static_value(r223arg1(C)));
/*[IF*/
if(((/*RF2*/(C)->_static_value_mem/*20*/))==(1)){
(/*SFN*/C->_static_value_mem)=1;
}
else{
(/*SFN*/C->_static_value_mem)=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r223operator(void){
T0* R=NULL;
R=((T0*)ms21_3669);
return R;
}


void r223with(T223* 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;
r223run_feature_match(C,a5);
}


void r223run_feature_has_result(T223* 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*/));
}
r223fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r223stupid_switch(T223* C,T0* a1){
T6 R=0;
R=r223call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r223result_type(C)));
}
/*FI]*/
return R;
}


void r223make(T223* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r223operator(),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 r223fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r223to_integer_error(T223* 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* r223arg1(T223* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r223assertion_check(T223* 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(r223arg1(C),a1);
}


T0* r223result_type(T223* 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(r223arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r223afd_check(T223* 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 r223use_current(T223* 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;
}
T0*oBC19conversion_handler=NULL;


void r223c_declare_for_old(T223* 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 r223compile_to_c_old(T223* 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* r223runnable_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)));
}
r223fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r223mapping_c_target(T223* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r223result_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*/{T223* 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*/{T223* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T223* 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*/{T223* 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*/{T223* 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* r223run_feature_for(T223* 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 r223to_integer_or_error(T223* C){
T2 R=0;
r223to_integer_error(C);
return R;
}


T0* r223add_comment(T223* 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* r223to_runnable(T223* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r223runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r223runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r223arg1(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=r223run_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;
r223run_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{
{T223*n=((T223*)se_malloc(sizeof(*n))/*24*/);
*n=M223;
r223with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r223collect_c_tmp(T223* 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 r223finalize(T223* 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* r223static_result_base_class(T223* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r234run_feature_match(T234* C,T0* a1){
r234run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r234runnable_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)));
}
r234fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r234call_is_static(T234* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*16*/))!=((void*)(NULL))){
_rc=/*SSWARF2*//*X96run_class*/(/*RF2*/((T154*)((/*RF2*/(C)->_run_feature/*16*/)))->_run_class/*12*/);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_running=(/*RF2*/(((T60*)_rc))->_running/*21*/);
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r63count(((T63*)_running)))==(1))){
_rf=r60dynamic((T60*)(/*(IRF4.6first*/((/*RF2*/(((T63*)_running))->_storage/*4*/))[0]/*)*/),(/*RF2*/(C)->_run_feature/*16*/));
/*[IF*/
if(X96is_static(_rf)){
(/*SFN*/C->_static_value_mem)=X96static_value_mem(_rf);
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r234call_proc_call_stupid_switch(T234* 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;
}


void r234with(T234* 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;
r234run_feature_match(C,a5);
}


void r234run_feature_has_result(T234* 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*/));
}
r234fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r234stupid_switch(T234* C,T0* a1){
T6 R=0;
R=r234call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r234result_type(C)));
}
/*FI]*/
return R;
}


void r234make(T234* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
{T245*n=((T245*)se_malloc(sizeof(*n))/*16*/);
*n=M245;
/*[IRF3.3make_1*/((((T245*)(n)))->_first_one)=(a3);
/*]*/
(/*SFN*/C->_arguments)=((T0*)n);
}
}


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


void r234to_integer_error(T234* 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* r234arg1(T234* C){
T0* R=NULL;
R=/*SSFRF4*//*X245first*//*(IRF4.3first*/(/*RF2*/((T245*)((/*RF2*/(C)->_arguments/*8*/)))->_first_one/*4*/)/*)*/;
return R;
}


void r234assertion_check(T234* 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(r234arg1(C),a1);
}


T0* r234result_type(T234* 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(r234arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


void r234afd_check(T234* 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 r234use_current(T234* 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 r234c_declare_for_old(T234* 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 r234compile_to_c_old(T234* 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* r234runnable_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)));
}
r234fatal_error(((T0*)ms20_462691396));
}
/*FI]*/
return R;
}


void r234mapping_c_target(T234* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r83call_invariant_start(a1);
_actual_type=X62run_type(r234result_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*/{T234* 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*/{T234* C1=C;
r83put_cpc((T83*)(oBC19cpp),(T0*)C1);
}/*]*/
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_reference(a1)){
/*[IRF3.4compile_to_c*//*[IRF3.6call_proc_call_c2c*/{T234* 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*/{T234* 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*/{T234* 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* r234run_feature_for(T234* 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 r234to_integer_or_error(T234* C){
T2 R=0;
r234to_integer_error(C);
return R;
}


T0* r234add_comment(T234* 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* r234to_runnable(T234* C,T0* a1){
T0* R=NULL;
T0* _target_type=NULL;
T0* _argument_type=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r234runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_a=r234runnable_args((/*RF2*/(C)->_arguments/*8*/),a1);
_target_type=X126result_type(_t);
_argument_type=X126result_type(r234arg1(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=r234run_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;
r234run_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{
{T234*n=((T234*)se_malloc(sizeof(*n))/*24*/);
*n=M234;
r234with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_a,_rf,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r234collect_c_tmp(T234* 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 r234finalize(T234* 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* r234static_result_base_class(T234* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X126static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r61e_feature(((T61*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X99result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X62static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r77base_class(((T77*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r427clear_run_feature(T427* C){
T2 _i=0;
_i=(/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((_i)==(0)))
{
/*[IRF3.3clear_run_feature*/((((T383*)((T383*)(r428item((T428*)((/*RF2*/(C)->_list/*0*/)),_i)))))->_run_feature)=(NULL);
/*]*/
_i=(_i)-(1);
}
}


void r427compile_to_c(T427* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))==(1)){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms427_1873512573));
/*]*/
r383compile_to_c((T383*)(/*(IRF4.6first*/((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/));
}
else{
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms427_858747666));
/*]*/
r383compile_to_c((T383*)(/*(IRF4.6first*/((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_storage/*0*/))[0]/*)*/));
_i=2;
while (!((_i)>((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))))
{
/*[IF*/
if((_i)==((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms427_1873512573a));
/*]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms427_473393039));
/*]*/
r383compile_to_c((T383*)(r428item((T428*)((/*RF2*/(C)->_list/*0*/)),_i)));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_635));
/*]*/
_i=(_i)+(1);
}
}
/*FI]*/
}


void r427make(T427* C,T0* a1){
{T428*n=((T428*)se_malloc(sizeof(*n))/*16*/);
*n=M428;
r428with_capacity(n,4,1);
(/*SFN*/C->_list)=((T0*)n);
}
r428add_last((T428*)((/*RF2*/(C)->_list/*0*/)),a1);
}


void r427afd_check(T427* C){
T2 _i=0;
_i=(/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((_i)==(0)))
{
r383afd_check((T383*)(r428item((T428*)((/*RF2*/(C)->_list/*0*/)),_i)));
_i=(_i)-(1);
}
}


T6 r427use_current(T427* C){
T6 R=0;
T2 _i=0;
_i=1;
while (!((R)||((_i)>((/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/)))))
{
R=r383use_current((T383*)(r428item((T428*)((/*RF2*/(C)->_list/*0*/)),_i)));
_i=(_i)+(1);
}
return R;
}


void r427add(T427* C,T0* a1){
T0* _bc2=NULL;
T0* _bc=NULL;
T0* _r2=NULL;
T2 _i=0;
r428add_last((T428*)((/*RF2*/(C)->_list/*0*/)),a1);
{T104 se_tmp0;
_bc=(/*RF2*/((/*RF2*/(((T383*)a1))->_start_position/*0*/))._base_class/*0*/);
}
_i=(/*RF2*/((T428*)((/*RF2*/(C)->_list/*0*/)))->_upper/*8*/);
while (!((_i)==(1)))
{
_r2=r428item((T428*)((/*RF2*/(C)->_list/*0*/)),(_i)-(1));
{T104 se_tmp0;
_bc2=(/*RF2*/((/*RF2*/(((T383*)_r2))->_start_position/*0*/))._base_class/*0*/);
}
/*[IF*/
if(r61is_subclass_of(((T61*)_bc),_bc2)){
r428swap((T428*)((/*RF2*/(C)->_list/*0*/)),_i,(_i)-(1));
_i=(_i)-(1);
}
else{
_i=1;
}
/*FI]*/
}
}


void r228run_feature_match(T228* C,T0* a1){
r228run_feature_has_result(C);
X245match_with((/*RF2*/(C)->_arguments/*8*/),(/*RF2*/(C)->_run_feature/*16*/),a1);
}


T0* r228runnable_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)));
}
r228fatal_error(((T0*)ms168_1263631766));
}
/*FI]*/
return R;
}


T6 r228call_proc_call_stupid_switch(T228* 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 r228is_static(T228* C){
T6 R=0;
/*[IF*/
if(X62is_integer(r228result_type(C))){
/*[IF*/
if((X126is_static((/*RF2*/(C)->_target/*4*/)))&&(X126is_static(r228arg1(C)))){
R=1;
(/*SFN*/C->_static_value_mem)=(X126static_value((/*RF2*/(C)->_target/*4*/)))-(X126static_value(r228arg1(C)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r228operator(void){
T0* R=NULL;
R=((T0*)ms21_45);
return R;
}


void r228with(T228* 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;
r228run_feature_match(C,a5);
}


void r228run_feature_has_result(T228* 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*/));
}
r228fatal_error(((T0*)ms222_793028699));
}
/*FI]*/
}


T6 r228stupid_switch(T228* C,T0* a1){
T6 R=0;
R=r228call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X62is_native_array(r228result_type(C)));
}
/*FI]*/
return R;
}


void r228make(T228* C,T0* a1,T104 a2,T0* a3){
(/*SFN*/C->_target)=a1;
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,r228operator(),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 r228fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r228to_integer_error(T228* 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));
}


T2 r228isa_dca_inline_argument(T228* C){
T2 R=0;
R=X126isa_dca_inline_argument((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((R)==(-(1))){
R=X126isa_dca_inline_argument(r228arg1(C));
}
 else if((R)>(0)){
/*[IF*/
if((X126isa_dca_inline_argument(r228arg1(C)))>=(0)){
R=0;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r228dca_inline_argument(T228* C,T0* 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*/))));
}/*]*/
/*]*/
X126dca_inline_argument((/*RF2*/(C)->_target/*4*/),a1);
/*[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*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T58* C1=((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/)));
T3 b1=((T3)'\55');
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*/))));
}/*]*/
/*]*/
X126dca_inline_argument(r228arg1(C),a1);
/*[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*/))));
}/*]*/
/*]*/
}

