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


T0* r360last(T360* C){
T0* R=NULL;
R=/*(IRF4.6item*/((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]/*)*/;
return R;
}


void r360remove_last(T360* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))-(1);
}


void r31add_last(T31* 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)=((T32)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r32realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r31with_capacity(T31* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T32)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r31make(T31* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T32)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T32)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T31* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T31* C2=C1;
T0* c1=__value;
r32set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r31fast_has(T31* C,T0* a1){
T6 R=0;
R=r31valid_index(C,r31fast_index_of(C,a1));
return R;
}


T2 r31fast_index_of(T31* C,T0* a1){
T2 R=0;
R=r32fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


T2 r31index_of(T31* C,T0* a1){
T2 R=0;
R=r32index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r31resize(T31* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T32)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r32realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


T6 r31has(T31* C,T0* a1){
T6 R=0;
R=r31valid_index(C,r31index_of(C,a1));
return R;
}


void r92add_last(T92* 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)=((T93)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r93realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.6put*/{T92* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[b2]=(b1);
}/*]*/
}


void r92with_capacity(T92* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T93)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r92make(T92* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T93)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T93)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
r92clear_all(C);
}
/*FI]*/
}


T6 r92fast_has(T92* C,T0* a1){
T6 R=0;
R=r92valid_index(C,r92fast_index_of(C,a1));
return R;
}


T6 r92is_empty(T92* C){
T6 R=0;
R=((/*RF2*/(C)->_upper/*12*/))<(0);
return R;
}


void r92copy(T92* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=/*SSWARF2*//*X92upper*/(/*RF2*/(((T92*)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)=((T93)(calloc(_new_capacity,sizeof(T0*))));
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r93clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
r93copy_from((/*RF2*/(C)->_storage/*4*/),/*SSWARF2*//*X92storage*/((T93)((/*RF2*/(((T92*)a1))->_storage/*4*/))),_other_upper);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r93clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=_other_upper;
}


T2 r92fast_index_of(T92* C,T0* a1){
T2 R=0;
R=r93fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r92resize(T92* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(r92count(C))){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T93)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r93realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.6put*/{T92* C1=C;
T0* b1=_elt_default;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*4*/))[b2]=(b1);
}/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


T0* r92twin(T92* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T92*)R)=M92;
r92copy(((T92*)R),((T0*)C));
return R;
}


void r92clear_all(T92* C){
T0* _value=NULL;
/*[IRF3.6set_all_with*/{T92* C1=C;
T0* b1=_value;
r93set_all_with((/*RF2*/(C1)->_storage/*4*/),b1,(/*RF2*/(C1)->_upper/*12*/));
}/*]*/
}


T2 r92count(T92* C){
T2 R=0;
R=((/*RF2*/(C)->_upper/*12*/))+(1);
return R;
}


T0* r92item(T92* C,T2 a1){
T0* R=NULL;
R=((/*RF2*/(C)->_storage/*4*/))[a1];
return R;
}


void r56add_last(T56* 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)=((T54)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r54realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
/*]*/
}


void r56with_capacity(T56* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T54)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r56make(T56* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T54)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T54)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T56* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T56* C2=C1;
T0* c1=__value;
r54set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,(/*RF2*/(C2)->_upper/*8*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r56fast_has(T56* C,T0* a1){
T6 R=0;
R=r56valid_index(C,r56fast_index_of(C,a1));
return R;
}


T2 r56fast_index_of(T56* C,T0* a1){
T2 R=0;
R=r54fast_index_of((/*RF2*/(C)->_storage/*0*/),a1,(/*RF2*/(C)->_upper/*8*/));
return R;
}


void r56resize(T56* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T54)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r54realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*8*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*8*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*0*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


T6 r56valid_index(T56* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*8*/)));
return R;
}


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


void r323add_last(T323* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r323count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T324)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r324realloc((/*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*/{T323* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


void r356make(T356* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T357)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T357)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T356* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T356* C2=C1;
T0* c1=__value;
r357set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,(/*RF2*/(C2)->_upper/*8*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


void r356resize(T356* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*8*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T357)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r357realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*8*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*8*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*0*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


void r220add_last(T220* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r220count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T208)(calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r208realloc((/*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*/{T220* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r220copy(T220* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T220*)a1))->_lower/*16*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T220*)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)=((T208)(calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r208copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T220*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T0* r220twin(T220* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T220*)R)=M220;
r220copy(((T220*)R),((T0*)C));
return R;
}


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


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


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


void r79add_last(T79* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r79count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T80)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r80realloc((/*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*/{T79* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


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


void r391add_last(T391* 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)=((T347)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r347realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r391with_capacity(T391* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T347)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r391make(T391* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T347)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T347)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T391* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T391* C2=C1;
T0* c1=__value;
r347set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r391fast_has(T391* C,T0* a1){
T6 R=0;
R=r391valid_index(C,r391fast_index_of(C,a1));
return R;
}


T2 r391fast_index_of(T391* C,T0* a1){
T2 R=0;
R=r347fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r391resize(T391* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T347)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r347realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


void r385add_last(T385* 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)=((T387)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r387realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r385with_capacity(T385* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T387)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r385make(T385* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T387)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T387)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T385* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T385* C2=C1;
T0* c1=__value;
r387set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r385fast_has(T385* C,T0* a1){
T6 R=0;
R=r385valid_index(C,r385fast_index_of(C,a1));
return R;
}


T2 r385fast_index_of(T385* C,T0* a1){
T2 R=0;
R=r387fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r385resize(T385* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T387)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r387realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


void r372add_last(T372* 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)=((T373)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r373realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r372with_capacity(T372* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T373)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r372make(T372* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T373)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T373)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T372* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T372* C2=C1;
T0* c1=__value;
r373set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r372fast_has(T372* C,T0* a1){
T6 R=0;
R=r372valid_index(C,r372fast_index_of(C,a1));
return R;
}


T2 r372fast_index_of(T372* C,T0* a1){
T2 R=0;
R=r373fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r372resize(T372* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T373)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r373realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


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


void r364add_last(T364* 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)=((T365)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r365realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r364with_capacity(T364* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T365)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r364make(T364* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T365)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T365)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T364* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T364* C2=C1;
T0* c1=__value;
r365set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


T6 r364fast_has(T364* C,T0* a1){
T6 R=0;
R=r364valid_index(C,r364fast_index_of(C,a1));
return R;
}


void r364copy(T364* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(/*RF2*/(((T364*)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)=((T365)(calloc(_new_capacity,sizeof(T0*))));
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r365clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
r365copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T364*)a1))->_storage/*4*/),_other_upper);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r365clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=_other_upper;
}


T2 r364fast_index_of(T364* C,T0* a1){
T2 R=0;
R=r365fast_index_of((/*RF2*/(C)->_storage/*4*/),a1,(/*RF2*/(C)->_upper/*12*/));
return R;
}


void r364resize(T364* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T365)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r365realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


T0* r364twin(T364* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T364*)R)=M364;
r364copy(((T364*)R),((T0*)C));
return R;
}


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


void r374add_last(T374* C,T6 a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r374count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T375)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T6))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r375realloc((/*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*/{T374* C1=C;
T6 b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


void r374make(T374* 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)=((T375)(calloc(_needed,sizeof(T6))));
(/*SFN*/C->_capacity)=_needed;
}
else{
/*[IRF3.6clear_all*/{T374* C1=C;
T6 __value=0;
/*[IRF3.6set_all_with*/{T374* C2=C1;
T6 c1=__value;
r375set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,((/*RF2*/(C2)->_upper/*8*/))-((/*RF2*/(C2)->_lower/*12*/)));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r374set_slice_with(T374* C,T6 a1,T2 a2,T2 a3){
T2 _i=0;
_i=a2;
while (!((_i)>(a3)))
{
/*[IRF3.6put*/{T374* C1=C;
T6 b1=a1;
T2 b2=_i;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
_i=(_i)+(1);
}
}


void r374force(T374* C,T6 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_upper/*8*/))<(a2)){
/*[IF*/
if((a2)==(((/*RF2*/(C)->_upper/*8*/))+(1))){
r374add_last(C,a1);
}
else{
r374resize(C,(/*RF2*/(C)->_lower/*12*/),a2);
/*[IRF3.6put*/{T374* C1=C;
T6 b1=a1;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
}
 else if((a2)<((/*RF2*/(C)->_lower/*12*/))){
r374resize(C,a2,(/*RF2*/(C)->_upper/*8*/));
/*[IRF3.6put*/{T374* C1=C;
T6 b1=a1;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
else{
/*[IRF3.6put*/{T374* C1=C;
T6 b1=a1;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}
/*FI]*/
}


void r374resize(T374* C,T2 a1,T2 a2){
T2 _intersize=0;
T2 _offset=0;
T2 _needed=0;
_needed=((a2)-(a1))+(1);
/*[IF*/
if((_needed)>(0)){
/*[IF*/
if((_needed)>((/*RF2*/(C)->_capacity/*4*/))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T375)(calloc(_needed,sizeof(T6))));
(/*SFN*/C->_capacity)=_needed;
}
else{
(/*SFN*/C->_storage)=r375realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_needed);
(/*SFN*/C->_capacity)=_needed;
}
/*FI]*/
}
/*FI]*/
_offset=((/*RF2*/(C)->_lower/*12*/))-(a1);
_intersize=((r2min(a2,(/*RF2*/(C)->_upper/*8*/)))-(r2max(a1,(/*RF2*/(C)->_lower/*12*/))))+(1);
/*[IF*/
if((_intersize)>(0)){
/*[IF*/
if((_offset)==(0)){
/*[IF*/
if((_intersize)<(_needed)){
r375clear((/*RF2*/(C)->_storage/*0*/),_intersize,(_needed)-(1));
}
/*FI]*/
}
 else if((_offset)<(0)){
r375move((/*RF2*/(C)->_storage/*0*/),-(_offset),((_intersize)-(_offset))-(1),_offset);
/*[IF*/
if((_intersize)<(_needed)){
r375clear((/*RF2*/(C)->_storage/*0*/),_intersize,(_needed)-(1));
}
/*FI]*/
}
else{
r375move((/*RF2*/(C)->_storage/*0*/),0,(_intersize)-(1),_offset);
r375clear((/*RF2*/(C)->_storage/*0*/),0,(_offset)-(1));
/*[IF*/
if(((_intersize)+(_offset))<(_needed)){
r375clear((/*RF2*/(C)->_storage/*0*/),(_intersize)+(_offset),(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
}
else{
r375clear((/*RF2*/(C)->_storage/*0*/),0,(_needed)-(1));
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_lower)=a1;
(/*SFN*/C->_upper)=a2;
}


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


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


T6 r374item(T374* C,T2 a1){
T6 R=0;
R=((/*RF2*/(C)->_storage/*0*/))[(a1)-((/*RF2*/(C)->_lower/*12*/))];
return R;
}


void r162with_capacity(T162* C,T2 a1,T2 a2){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T28)(calloc(a1,sizeof(T2))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_lower)=a2;
(/*SFN*/C->_upper)=(a2)-(1);
}


void r162add_last(T162* C,T2 a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r162count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T28)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T2))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r28realloc((/*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*/{T162* C1=C;
T2 b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


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


void r377add_last(T377* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r377count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T378)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r378realloc((/*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*/{T377* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


void r377swap(T377* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r377item(C,a1);
/*[IRF3.6put*/{T377* C1=C;
T0* b1=r377item(C,a2);
T2 b2=a1;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
/*[IRF3.6put*/{T377* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


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


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


void r237add_last(T237* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r237count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T238)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r238realloc((/*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*/{T237* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


void r237copy(T237* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T237*)a1))->_lower/*12*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T237*)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)=((T238)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r238copy_from((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(((T237*)a1))->_storage/*0*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T0* r237twin(T237* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T237*)R)=M237;
r237copy(((T237*)R),((T0*)C));
return R;
}


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


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


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


void r101add_last(T101* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r101count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T106)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r106realloc((/*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*/{T101* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


void r101clear(T101* C){
(/*SFN*/C->_upper)=((/*RF2*/(C)->_lower/*12*/))-(1);
}


void r101make(T101* 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)=((T106)(calloc(_needed,sizeof(T0*))));
(/*SFN*/C->_capacity)=_needed;
}
else{
/*[IRF3.6clear_all*/{T101* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T101* C2=C1;
T0* c1=__value;
r106set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,((/*RF2*/(C2)->_upper/*8*/))-((/*RF2*/(C2)->_lower/*12*/)));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r101fast_has(T101* C,T0* a1){
T6 R=0;
R=r101valid_index(C,r101fast_index_of(C,a1));
return R;
}


T6 r101is_empty(T101* C){
T6 R=0;
R=((/*RF2*/(C)->_upper/*8*/))<((/*RF2*/(C)->_lower/*12*/));
return R;
}


void r101copy(T101* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T101*)a1))->_lower/*12*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T101*)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)=((T106)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r106copy_from((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(((T101*)a1))->_storage/*0*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T2 r101fast_index_of(T101* C,T0* a1){
T2 R=0;
R=((/*RF2*/(C)->_lower/*12*/))+(r106fast_index_of((/*RF2*/(C)->_storage/*0*/),a1,((/*RF2*/(C)->_upper/*8*/))-((/*RF2*/(C)->_lower/*12*/))));
return R;
}


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


T0* r101twin(T101* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T101*)R)=M101;
r101copy(((T101*)R),((T0*)C));
return R;
}


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


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


void r53add_last(T53* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r53count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T54)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r54realloc((/*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*/{T53* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


T6 r53fast_has(T53* C,T0* a1){
T6 R=0;
R=r53valid_index(C,r53fast_index_of(C,a1));
return R;
}


void r53copy(T53* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T53*)a1))->_lower/*12*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T53*)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)=((T54)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r54copy_from((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(((T53*)a1))->_storage/*0*/),(_needed_capacity)-(1));
}
/*FI]*/
}


void r53swap(T53* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r53item(C,a1);
/*[IRF3.6put*/{T53* C1=C;
T0* b1=r53item(C,a2);
T2 b2=a1;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
/*[IRF3.6put*/{T53* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


T2 r53fast_index_of(T53* C,T0* a1){
T2 R=0;
R=((/*RF2*/(C)->_lower/*12*/))+(r54fast_index_of((/*RF2*/(C)->_storage/*0*/),a1,((/*RF2*/(C)->_upper/*8*/))-((/*RF2*/(C)->_lower/*12*/))));
return R;
}


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


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


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


void r67add_last(T67* C,T68 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)=((T69)(calloc(2,sizeof(T68))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r69realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/memcpy(((/*RF2*/(C)->_storage/*0*/))+((/*RF2*/(C)->_upper/*8*/)),&(a1),sizeof(T68));
/*]*/
}


void r67with_capacity(T67* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T69)(calloc(a1,sizeof(T68))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


T6 r67fast_has(T67* C,T68 a1){
T6 R=0;
R=r67valid_index(C,r67fast_index_of(C,a1));
return R;
}


T2 r67fast_index_of(T67* C,T68 a1){
T2 R=0;
R=r69fast_index_of((/*RF2*/(C)->_storage/*0*/),a1,(/*RF2*/(C)->_upper/*8*/));
return R;
}


T6 r67valid_index(T67* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((/*RF2*/(C)->_upper/*8*/)));
return R;
}


void r339with_capacity(T339* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T340)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r339add_last(T339* 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)=((T340)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r340realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*12*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[(/*RF2*/(C)->_upper/*12*/)]=(a1);
/*]*/
}


void r339make(T339* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T340)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))<(a1)){
(/*SFN*/C->_storage)=((T340)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T339* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T339* C2=C1;
T0* c1=__value;
r340set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,(/*RF2*/(C2)->_upper/*12*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


void r339copy(T339* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(/*RF2*/(((T339*)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)=((T340)(calloc(_new_capacity,sizeof(T0*))));
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r340clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
r340copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T339*)a1))->_storage/*4*/),_other_upper);
}
 else if(((/*RF2*/(C)->_capacity/*8*/))>(0)){
r340clear_all((/*RF2*/(C)->_storage/*4*/),((/*RF2*/(C)->_capacity/*8*/))-(1));
}
/*FI]*/
(/*SFN*/C->_upper)=_other_upper;
}


void r339resize(T339* C,T2 a1){
T0* _elt_default=NULL;
T2 _i=0;
T2 _new_capacity=0;
/*[IF*/
if((a1)<=(/*(IRF4.6count*/((/*RF2*/(C)->_upper/*12*/))+(1)/*)*/)){
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
_new_capacity=a1;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<(_new_capacity)){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_storage)=((T340)(calloc(_new_capacity,sizeof(T0*))));
}
else{
(/*SFN*/C->_storage)=r340realloc((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(C)->_capacity/*8*/),_new_capacity);
}
/*FI]*/
(/*SFN*/C->_capacity)=_new_capacity;
}
/*FI]*/
_new_capacity=(/*RF2*/(C)->_upper/*12*/);
(/*SFN*/C->_upper)=(a1)-(1);
_i=(/*RF2*/(C)->_upper/*12*/);
while (!((_i)==(_new_capacity)))
{
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*4*/))[_i]=(_elt_default);
/*]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


T0* r339twin(T339* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T339*)R)=M339;
r339copy(((T339*)R),((T0*)C));
return R;
}


void r84with_capacity(T84* C,T2 a1){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T86)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
}
/*FI]*/
(/*SFN*/C->_upper)=-(1);
}


void r84add_last(T84* 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)=((T86)(calloc(2,sizeof(T0*))));
(/*SFN*/C->_capacity)=2;
(/*SFN*/C->_upper)=0;
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r86realloc((/*RF2*/(C)->_storage/*0*/),(/*RF2*/(C)->_capacity/*4*/),_new_capacity);
(/*SFN*/C->_capacity)=_new_capacity;
(/*SFN*/C->_upper)=((/*RF2*/(C)->_upper/*8*/))+(1);
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/(C)->_storage/*0*/))[(/*RF2*/(C)->_upper/*8*/)]=(a1);
/*]*/
}


void r84make(T84* C,T2 a1){
/*[IF*/
if((a1)==(0)){
(/*SFN*/C->_upper)=-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_storage)=((T86)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
 else if(((/*RF2*/(C)->_capacity/*4*/))<(a1)){
(/*SFN*/C->_storage)=((T86)(calloc(a1,sizeof(T0*))));
(/*SFN*/C->_capacity)=a1;
(/*SFN*/C->_upper)=(a1)-(1);
}
else{
(/*SFN*/C->_upper)=(a1)-(1);
/*[IRF3.6clear_all*/{T84* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T84* C2=C1;
T0* c1=__value;
r86set_all_with((/*RF2*/(C2)->_storage/*0*/),c1,(/*RF2*/(C2)->_upper/*8*/));
}/*]*/
}/*]*/
}
/*FI]*/
}


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


void r182add_last(T182* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))<((r182count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*8*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T183)(calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*8*/));
(/*SFN*/C->_storage)=r183realloc((/*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*/{T182* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*12*/);
((/*RF2*/(C1)->_storage/*4*/))[(b2)-((/*RF2*/(C1)->_lower/*16*/))]=(b1);
}/*]*/
}


void r182make(T182* 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)=((T183)(calloc(_needed,sizeof(T0*))));
(/*SFN*/C->_capacity)=_needed;
}
else{
/*[IRF3.6clear_all*/{T182* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T182* C2=C1;
T0* c1=__value;
r183set_all_with((/*RF2*/(C2)->_storage/*4*/),c1,((/*RF2*/(C2)->_upper/*12*/))-((/*RF2*/(C2)->_lower/*16*/)));
}/*]*/
}/*]*/
}
/*FI]*/
}
/*FI]*/
}


void r182copy(T182* C,T0* a1){
T2 _needed_capacity=0;
(/*SFN*/C->_lower)=(/*RF2*/(((T182*)a1))->_lower/*16*/);
(/*SFN*/C->_upper)=(/*RF2*/(((T182*)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)=((T183)(calloc((/*RF2*/(C)->_capacity/*8*/),sizeof(T0*))));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r183copy_from((/*RF2*/(C)->_storage/*4*/),(/*RF2*/(((T182*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}


T0* r182twin(T182* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T182*)R)=M182;
r182copy(((T182*)R),((T0*)C));
return R;
}


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


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


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


void r97add_last(T97* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))<((r97count(C))+(1))){
/*[IF*/
if(((/*RF2*/(C)->_capacity/*4*/))==(0)){
(/*SFN*/C->_capacity)=16;
(/*SFN*/C->_storage)=((T98)(calloc((/*RF2*/(C)->_capacity/*4*/),sizeof(T0*))));
}
else{
_new_capacity=(2)*((/*RF2*/(C)->_capacity/*4*/));
(/*SFN*/C->_storage)=r98realloc((/*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*/{T97* C1=C;
T0* b1=a1;
T2 b2=(/*RF2*/(C)->_upper/*8*/);
((/*RF2*/(C1)->_storage/*0*/))[(b2)-((/*RF2*/(C1)->_lower/*12*/))]=(b1);
}/*]*/
}


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


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


void r362with_capacity(T362* C,T2 a1){
T2 _i=0;
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T343*n=((T343*)malloc(sizeof(*n))/*12*/);
*n=M343;
r343make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r362resize_buckets(T362* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r2hash_code(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[_i]/*)*/))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r362expand(T362* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*8*/))+(1)/*)*/;
r362resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r27resize((T27*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r343resize((T343*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


void r362set_cache_user_idx(T362* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r362set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r362put(T362* C,T0* a1,T2 a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r2hash_code(a2))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r362expand(C);
_h=(r2hash_code(a2))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r362has(T362* C,T2 a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r2hash_code(a1))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r362item(T362* C,T2 a1){
T0* R=NULL;
r362set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r353with_capacity(T353* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T354*n=((T354*)malloc(sizeof(*n))/*12*/);
*n=M354;
r354make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r353resize_buckets(T353* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r353expand(T353* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r353resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r354resize((T354*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r353at(T353* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T354*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r353set_cache_user_idx(T353* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r353set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r353put(T353* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r353expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T354*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T354*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T354*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r353has(T353* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r353item(T353* C,T2 a1){
T0* R=NULL;
r353set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T354*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r342with_capacity(T342* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T343*n=((T343*)malloc(sizeof(*n))/*12*/);
*n=M343;
r343make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r342resize_buckets(T342* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r342expand(T342* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r342resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r343resize((T343*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r342key(T342* C,T2 a1){
T0* R=NULL;
r342set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


T0* r342at(T342* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r342set_cache_user_idx(T342* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r342set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r342put(T342* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r342expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r342has(T342* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r342item(T342* C,T2 a1){
T0* R=NULL;
r342set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T343*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r348with_capacity(T348* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T349*n=((T349*)malloc(sizeof(*n))/*16*/);
*n=M349;
r349make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r348resize_buckets(T348* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r348expand(T348* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r348resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
X349resize((/*RF2*/(C)->_store/*4*/),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


void r348remove(T348* C,T0* a1){
T2 _keys_next_idx=0;
T2 _keys_idx=0;
T2 _h=0;
_h=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/));
_keys_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
/*[IF*/
if((_keys_idx)<(0)){
}
 else if(r7is_equal((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_keys_idx]/*)*/),a1)){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_idx]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_idx]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_keys_idx;
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))-(1);
}
else{
_keys_next_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_idx]/*)*/;
while (!(((_keys_next_idx)<(0))||(r7is_equal((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_keys_next_idx]/*)*/),a1))))
{
_keys_idx=_keys_next_idx;
_keys_next_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_next_idx]/*)*/;
}
/*[IF*/
if((_keys_next_idx)>=(0)){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_idx]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_next_idx]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_keys_next_idx]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_keys_next_idx;
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))-(1);
}
/*FI]*/
}
/*FI]*/
}


T0* r348at(T348* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=X349item((/*RF2*/(C)->_store/*4*/),(/*RF2*/(C)->_cache_keys_idx/*24*/));
return R;
}


void r348set_cache_user_idx(T348* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r348set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r348put(T348* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r348expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
X349put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
X349put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_cache_keys_idx/*24*/));
}
/*FI]*/
}
else{
X349put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_cache_keys_idx/*24*/));
}
/*FI]*/
}


T6 r348has(T348* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r348item(T348* C,T2 a1){
T0* R=NULL;
r348set_cache_user_idx(C,a1);
R=X349item((/*RF2*/(C)->_store/*4*/),(/*RF2*/(C)->_cache_keys_idx/*24*/));
return R;
}


void r384with_capacity(T384* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T141*n=((T141*)malloc(sizeof(*n))/*16*/);
*n=M141;
r141make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*12*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*16*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r384resize_buckets(T384* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*16*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*16*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*24*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*24*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r384expand(T384* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_upper/*12*/))+(1)/*)*/;
r384resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*20*/)),(/*RF2*/(C)->_first_free_slot/*24*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/))+(1)/*)*/);
X141resize((/*RF2*/(C)->_store/*8*/),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/))+(1)/*)*/);
}


void r384make(T384* C){
r384with_capacity(C,32);
}


void r384put(T384* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*12*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*24*/))<(0)){
r384expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*12*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]=(a2);
/*]*/
X141put((/*RF2*/(C)->_store/*8*/),a1,(/*RF2*/(C)->_first_free_slot/*24*/));
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*24*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*28*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
X141put((/*RF2*/(C)->_store/*8*/),a1,(/*RF2*/(C)->_cache_keys_idx/*28*/));
}
/*FI]*/
}
else{
X141put((/*RF2*/(C)->_store/*8*/),a1,(/*RF2*/(C)->_cache_keys_idx/*28*/));
}
/*FI]*/
}


void r63with_capacity(T63* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T64*n=((T64*)malloc(sizeof(*n))/*12*/);
*n=M64;
r64make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r63resize_buckets(T63* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r63expand(T63* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r63resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r64resize((T64*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r63at(T63* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T64*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r63set_cache_user_idx(T63* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r63set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r63put(T63* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r63expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T64*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T64*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T64*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r63has(T63* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r63item(T63* C,T2 a1){
T0* R=NULL;
r63set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T64*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r367with_capacity(T367* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T207*n=((T207*)malloc(sizeof(*n))/*16*/);
*n=M207;
r207make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*12*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*16*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r367resize_buckets(T367* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*16*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*16*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*24*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*24*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r367expand(T367* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_upper/*12*/))+(1)/*)*/;
r367resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*20*/)),(/*RF2*/(C)->_first_free_slot/*24*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/))+(1)/*)*/);
r207resize((T207*)((/*RF2*/(C)->_store/*8*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_upper/*8*/))+(1)/*)*/);
}


void r367remove(T367* C,T0* a1){
T2 _keys_next_idx=0;
T2 _keys_idx=0;
T2 _h=0;
_h=(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*12*/));
_keys_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/;
/*[IF*/
if((_keys_idx)<(0)){
}
 else if(r7is_equal((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[_keys_idx]/*)*/),a1)){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_idx]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_idx]=((/*RF2*/(C)->_first_free_slot/*24*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_keys_idx;
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*40*/))-(1);
}
else{
_keys_next_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_idx]/*)*/;
while (!(((_keys_next_idx)<(0))||(r7is_equal((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[_keys_next_idx]/*)*/),a1))))
{
_keys_idx=_keys_next_idx;
_keys_next_idx=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_next_idx]/*)*/;
}
/*[IF*/
if((_keys_next_idx)>=(0)){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_idx]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_next_idx]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_keys_next_idx]=((/*RF2*/(C)->_first_free_slot/*24*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_keys_next_idx;
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*40*/))-(1);
}
/*FI]*/
}
/*FI]*/
}


void r367set_cache_user_idx(T367* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*32*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*32*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*28*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*28*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*32*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*40*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*36*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*36*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*32*/))==(a1)))
{
r367set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*32*/))+(1));
}
}
/*FI]*/
}


void r367put(T367* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*12*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*24*/))<(0)){
r367expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*12*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T207*)((/*RF2*/(C)->_store/*8*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*24*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*24*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*28*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*40*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T207*)((/*RF2*/(C)->_store/*8*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T207*)((/*RF2*/(C)->_store/*8*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r367has(T367* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*16*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*12*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*28*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*20*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*28*/))>=(0);
return R;
}


T0* r367item(T367* C,T2 a1){
T0* R=NULL;
r367set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T207*)((/*RF2*/(C)->_store/*8*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*28*/)]/*)*/;
return R;
}


void r91with_capacity(T91* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T92*n=((T92*)malloc(sizeof(*n))/*16*/);
*n=M92;
r92make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r91resize_buckets(T91* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r91expand(T91* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r91resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
X92resize((/*RF2*/(C)->_store/*4*/),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r91at(T91* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=X92item((/*RF2*/(C)->_store/*4*/),(/*RF2*/(C)->_cache_keys_idx/*24*/));
return R;
}


void r91put(T91* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r91expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
X92put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*32*/))+(1);
}
else{
X92put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_cache_keys_idx/*24*/));
}
/*FI]*/
}
else{
X92put((/*RF2*/(C)->_store/*4*/),a1,(/*RF2*/(C)->_cache_keys_idx/*24*/));
}
/*FI]*/
}


T6 r91has(T91* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


void r55with_capacity(T55* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T56*n=((T56*)malloc(sizeof(*n))/*12*/);
*n=M56;
r56make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r55resize_buckets(T55* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r55expand(T55* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r55resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r56resize((T56*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r55at(T55* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T56*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r55set_cache_user_idx(T55* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r55set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r55put(T55* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r55expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T56*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T56*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T56*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r55has(T55* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T0* r55item(T55* C,T2 a1){
T0* R=NULL;
r55set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T56*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r42with_capacity(T42* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r42resize_buckets(T42* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r42expand(T42* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r42resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r27resize((T27*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r42key(T42* C,T2 a1){
T0* R=NULL;
r42set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


T0* r42fast_key_at(T42* C,T2 a1){
T0* R=NULL;
T2 _i=0;
_i=1;
while (!((a1)==(r42item(C,_i))))
{
_i=(_i)+(1);
}
R=/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


T2 r42at(T42* C,T0* a1){
T2 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r42set_cache_user_idx(T42* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))+(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
else{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((/*RF2*/(C)->_cache_user_idx/*28*/))-(1))){
(/*SFN*/C->_cache_user_idx)=a1;
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))==(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)){
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==((/*RF2*/(C)->_cache_keys_idx/*24*/))))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/;
}
(/*SFN*/C->_cache_keys_idx)=_i;
}
/*FI]*/
}
 else if((a1)==((/*RF2*/(C)->_cache_user_idx/*28*/))){
}
 else if((a1)==(1)){
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
}
 else if((a1)==((/*RF2*/(C)->_count/*36*/))){
(/*SFN*/C->_cache_user_idx)=a1;
(/*SFN*/C->_cache_buckets_idx)=(/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_upper/*8*/);
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))-(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)<(0)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
else{
(/*SFN*/C->_cache_user_idx)=1;
(/*SFN*/C->_cache_buckets_idx)=0;
while (!((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/)>=(0)))
{
(/*SFN*/C->_cache_buckets_idx)=((/*RF2*/(C)->_cache_buckets_idx/*32*/))+(1);
}
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_buckets_idx/*32*/)]/*)*/;
while (!(((/*RF2*/(C)->_cache_user_idx/*28*/))==(a1)))
{
r42set_cache_user_idx(C,((/*RF2*/(C)->_cache_user_idx/*28*/))+(1));
}
}
/*FI]*/
}


void r42put(T42* C,T2 a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r42expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*36*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r42has(T42* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


T2 r42item(T42* C,T2 a1){
T2 R=0;
r42set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_store/*4*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r23with_capacity(T23* C,T2 a1){
T2 _i=0;
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_keys)=((T0*)n);
}
{T31*n=((T31*)malloc(sizeof(*n))/*16*/);
*n=M31;
r31make(n,a1);
(/*SFN*/C->_store)=((T0*)n);
}
(/*SFN*/C->_modulus)=(3)*(a1);
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,(/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_buckets)=((T0*)n);
}
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
{T27*n=((T27*)malloc(sizeof(*n))/*12*/);
*n=M27;
r27make(n,a1);
(/*SFN*/C->_chain)=((T0*)n);
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
(/*SFN*/C->_first_free_slot)=_i;
while (!((_i)<(0)))
{
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
(/*SFN*/C->_cache_keys_idx)=-(1);
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_count)=0;
}


void r23resize_buckets(T23* C,T2 a1){
T2 _i=0;
T2 _h=0;
(/*SFN*/C->_modulus)=a1;
r27resize((T27*)((/*RF2*/(C)->_buckets/*12*/)),a1);
/*[IRF3.6set_all_with*/{T27* C1=(T27*)((/*RF2*/(C)->_buckets/*12*/));
T2 b1=-(1);
r28set_all_with((/*RF2*/(C1)->_storage/*0*/),b1,(/*RF2*/(C1)->_upper/*8*/));
}/*]*/
while (!(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)))
{
_i=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(-(2));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
_i=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
/*[IF*/
if((/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=((/*RF2*/(C)->_first_free_slot/*20*/));
/*]*/
(/*SFN*/C->_first_free_slot)=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[_i]/*)*/)))%(a1);
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[_i]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


void r23expand(T23* C){
T2 _i=0;
_i=/*(IRF4.6count*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_upper/*12*/))+(1)/*)*/;
r23resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0)))
{
r27add_last((T27*)((/*RF2*/(C)->_chain/*16*/)),(/*RF2*/(C)->_first_free_slot/*20*/));
(/*SFN*/C->_first_free_slot)=(/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/);
_i=(_i)-(1);
}
r31resize((T31*)((/*RF2*/(C)->_keys/*0*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
r31resize((T31*)((/*RF2*/(C)->_store/*4*/)),/*(IRF4.6count*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_upper/*8*/))+(1)/*)*/);
}


T0* r23at(T23* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_store/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
return R;
}


void r23put(T23* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a2)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
/*[IF*/
if(((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0)){
/*[IF*/
if(((/*RF2*/(C)->_first_free_slot/*20*/))<(0)){
r23expand(C);
_h=(r7hash_code(((T7*)a2)))%((/*RF2*/(C)->_modulus/*8*/));
}
/*FI]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a2);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_store/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]=(a1);
/*]*/
(/*SFN*/C->_cache_keys_idx)=(/*RF2*/(C)->_first_free_slot/*20*/);
(/*SFN*/C->_first_free_slot)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_first_free_slot/*20*/)]/*)*/;
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]/*)*/);
/*]*/
/*[IRF3.5put*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[_h]=((/*RF2*/(C)->_cache_keys_idx/*24*/));
/*]*/
(/*SFN*/C->_count)=((/*RF2*/(C)->_count/*32*/))+(1);
}
else{
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_store/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/((/*RF2*/((T31*)((/*RF2*/(C)->_store/*4*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]=(a1);
/*]*/
}
/*FI]*/
}


T6 r23has(T23* C,T0* a1){
T6 R=0;
/*[IF*/
if((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||((a1)!=((void*)(/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/)))){
(/*SFN*/C->_cache_user_idx)=-(1);
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_buckets/*12*/)))->_storage/*0*/))[(r7hash_code(((T7*)a1)))%((/*RF2*/(C)->_modulus/*8*/))]/*)*/;
while (!((((/*RF2*/(C)->_cache_keys_idx/*24*/))<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/((/*RF2*/((T31*)((/*RF2*/(C)->_keys/*0*/)))->_storage/*4*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/))))
{
(/*SFN*/C->_cache_keys_idx)=/*(IRF4.6item*/((/*RF2*/((T27*)((/*RF2*/(C)->_chain/*16*/)))->_storage/*0*/))[(/*RF2*/(C)->_cache_keys_idx/*24*/)]/*)*/;
}
}
/*FI]*/
R=((/*RF2*/(C)->_cache_keys_idx/*24*/))>=(0);
return R;
}


void r134compile_to_c_old(T134* C){
X104compile_to_c_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
T0*oBC13cpp=NULL;


T0* r134runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X104to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X104start_position(a1),&se_tmp0)));
}
r134fatal_error(((T0*)ms116_16290));
}
/*FI]*/
return R;
}


void r134run_feature_has_result(T134* C){
/*[IF*/
if((X334result_type((/*RF2*/(C)->_run_feature/*8*/)))==((void*)(NULL))){
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*8*/)),&se_tmp0)));
}
r66add_position((/*RF2*/((T133*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
r134fatal_error(((T0*)ms115_53215));
}
/*FI]*/
}


T2 r134static_value(T134* C){
T2 R=0;
/*[IF*/
if(X52is_boolean(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if(X104is_static((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if((X104static_value((/*RF2*/(C)->_target/*4*/)))==(0)){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC13eh=NULL;


void r134run_feature_match(T134* C){
r134run_feature_has_result(C);
/*[IF*/
if((X334arguments((/*RF2*/(C)->_run_feature/*8*/)))!=((void*)(NULL))){
r66add_position((/*RF2*/((T133*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
{T68 se_tmp0;
r66add_position((*(se_tmp0=X334start_position((/*RF2*/(C)->_run_feature/*8*/)),&se_tmp0)));
}
r134fatal_error(((T0*)ms132_50092));
}
/*FI]*/
}


T0* r134add_comment(T134* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r134with(T134* C,T0* a1,T0* a2,T0* a3){
(/*SFN*/C->_target)=a1;
(/*SFN*/C->_feature_name)=a2;
(/*SFN*/C->_run_feature)=a3;
r134run_feature_match(C);
}


void r134mapping_c_target(T134* C,T0* a1){
T0* _actual_type=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_actual_type=X52run_type(r134result_type(C));
/*[IF*/
if(X52is_reference(_actual_type)){
/*[IF*/
if(X52is_reference(a1)){
X52mapping_cast(a1);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r134compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r134compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
r134compile_to_c(C);
}
else{
/*[IF*/
if(X52need_c_struct(a1)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\50');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
r134compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r134compile_to_c(C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


void r134afd_check(T134* C){
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*8*/))!=((void*)(NULL))){
_rc=X52run_class(X104result_type((/*RF2*/(C)->_target/*4*/)));
_running=(/*RF2*/(((T50*)_rc))->_running/*9*/);
/*[IF*/
if((_running)==((void*)(NULL))){
}
 else if((r53count(((T53*)_running)))>(1)){
r351update((/*RF2*/(C)->_target/*4*/),(/*RF2*/(C)->_run_feature/*8*/));
}
/*FI]*/
}
/*FI]*/
X104afd_check((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r134c_declare_for_old(T134* C){
X104c_declare_for_old((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


void r134collect_c_tmp(T134* C){
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*8*/))!=((void*)(NULL))){
X334collect_c_tmp((/*RF2*/(C)->_run_feature/*8*/));
}
/*FI]*/
X104collect_c_tmp((/*RF2*/(C)->_target/*4*/));
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}


T0* r134operator(void){
T0* R=NULL;
R=((T0*)ms15_1011);
return R;
}


T6 r134use_current(T134* C){
T6 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(R){
}
 else if(X104is_current((/*RF2*/(C)->_target/*4*/))){
R=X334use_current((/*RF2*/(C)->_run_feature/*8*/));
}
else{
R=X104use_current((/*RF2*/(C)->_target/*4*/));
}
/*FI]*/
return R;
}


T0* r134to_runnable(T134* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r134runnable_expression((/*RF2*/(C)->_target/*4*/),a1);
_rf=r134run_feature_for(C,_t,a1);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*8*/))==((void*)(NULL))){
(/*SFN*/C->_target)=_t;
(/*SFN*/C->_run_feature)=_rf;
r134run_feature_match(C);
R=((T0*)(C));
}
 else if((_t)==((void*)((/*RF2*/(C)->_target/*4*/)))){
R=((T0*)(C));
}
else{
{T134*n=((T134*)malloc(sizeof(*n))/*16*/);
*n=M134;
r134with(n,_t,(/*RF2*/(C)->_feature_name/*12*/),_rf);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T2 r134to_integer(T134* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(/*RF2*/(C)->_run_feature/*8*/);
if(NULL!=(_rf1)){
switch(((T0*)_rf1)->id){
case 388:
break;
default:
_rf1=NULL;
}
}/*[IF*/
if((_rf1)==((void*)(NULL))){
r134error(/*(IRF4.6start_position*/(/*RF2*/(((T133*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/,((T0*)ms14_45441));
}
else{
R=X104to_integer((/*RF2*/(((T388*)_rf1))->_value/*28*/));
}
/*FI]*/
return R;
}


T6 r134is_static(T134* C){
T6 R=0;
/*[IF*/
if(X52is_boolean(X104result_type((/*RF2*/(C)->_target/*4*/)))){
/*[IF*/
if(X104is_static((/*RF2*/(C)->_target/*4*/))){
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r134finalize(T134* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rf=(/*RF2*/(C)->_run_feature/*8*/);
_rc=X52run_class(/*SSWARF2*//*X334current_type*/(/*RF2*/(((T368*)_rf))->_current_type/*8*/));
(/*SFN*/C->_run_feature)=r50dynamic((T50*)(/*(IRF4.6first*/((/*RF2*/((T53*)((/*RF2*/(((T50*)_rc))->_running/*9*/)))->_storage/*0*/))[0]/*)*/),_rf);
}


void r134error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r134result_type(T134* C){
T0* R=NULL;
R=X334result_type((/*RF2*/(C)->_run_feature/*8*/));
/*[IF*/
if(X52is_like_current(R)){
R=/*SSWARF2*//*X334current_type*/(/*RF2*/((T368*)((/*RF2*/(C)->_run_feature/*8*/)))->_current_type/*8*/);
}
/*FI]*/
return R;
}


T6 r134can_be_dropped(T134* C){
T6 R=0;
/*[IF*/
if(X104can_be_dropped((/*RF2*/(C)->_target/*4*/))){
R=X334can_be_dropped((/*RF2*/(C)->_run_feature/*8*/));
}
/*FI]*/
return R;
}
T0*oBC13small_eiffel=NULL;


T6 r134call_proc_call_stupid_switch(T134* C,T0* a1){
T6 R=0;
/*[IF*/
{/*AT*/R=1;
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(X104is_current((/*RF2*/(C)->_target/*4*/))){
/*[IF*/
if(r49same_base_feature((/*RF2*/(C)->_run_feature/*8*/),a1)){
R=(X334stupid_switch((/*RF2*/(C)->_run_feature/*8*/),a1))!=((void*)(NULL));
}
else{
R=0;
}
/*FI]*/
}
else{
R=X104stupid_switch((/*RF2*/(C)->_target/*4*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r134run_feature_for(T134* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _rt=NULL;
T0* _rc=NULL;
_rt=X104result_type(a1);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_rc=X52run_class(_rt);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_bc=r50base_class(((T50*)_rc));
R=r51run_feature_for(((T51*)_bc),_rc,a1,(/*RF2*/(C)->_feature_name/*12*/),a2);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
r66add_position((/*RF2*/((T133*)((/*RF2*/(C)->_feature_name/*12*/)))->_start_position/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms116_39025);
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
/*FI]*/
return R;
}
T351 oBC13switch_collection=0;


T0* r134static_result_base_class(T134* C){
T0* R=NULL;
T0* _cn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _bc=NULL;
_bc=X104static_result_base_class((/*RF2*/(C)->_target/*4*/));
/*[IF*/
if((_bc)!=((void*)(NULL))){
_e_feature=r51e_feature(((T51*)_bc),(/*RF2*/(C)->_feature_name/*12*/));
/*[IF*/
if((_e_feature)!=((void*)(NULL))){
_rt=X90result_type(_e_feature);
/*[IF*/
if((_rt)!=((void*)(NULL))){
_cn=X52static_base_class_name(_rt);
/*[IF*/
if((_cn)!=((void*)(NULL))){
R=r61base_class(((T61*)_cn));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r134make(T134* C,T68 a1,T0* a2){
{T133*n=((T133*)malloc(sizeof(*n))/*20*/);
*n=M133;
r133make(n,r134operator(),a1);
(/*SFN*/C->_feature_name)=((T0*)n);
}
(/*SFN*/C->_target)=a2;
}


void r134fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_fatal_error((T66*)(oBC13eh));
}
T0*oBC13run_control=NULL;


void r134assertion_check(T134* C,T3 a1){
/*[IF*/
if((a1)==(((T3)'R'))){
X334vape_check_from((/*RF2*/(C)->_run_feature/*8*/),/*(IRF4.6start_position*/(/*RF2*/(((T133*)((/*RF2*/(C)->_feature_name/*12*/))))->_start_position/*4*/)/*)*/);
}
/*FI]*/
X104assertion_check((/*RF2*/(C)->_target/*4*/),a1);
}


void r134compile_to_c(T134* C){
/*[IF*/
if((r47boost((T47*)(oBC13run_control)))&&(X52is_boolean(X52run_type(X104result_type((/*RF2*/(C)->_target/*4*/)))))){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms134_146));
/*]*/
X104compile_to_c((/*RF2*/(C)->_target/*4*/));
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
/*[IRF3.6call_proc_call_c2c*/{T134* C1=C;
r325put_cpc((T325*)(oBC13cpp),(T0*)C1);
}/*]*/
}
/*FI]*/
}


T6 r134stupid_switch(T134* C,T0* a1){
T6 R=0;
R=r134call_proc_call_stupid_switch(C,a1);
/*[IF*/
if(R){
R=!(X52is_native_array(r134result_type(C)));
}
/*FI]*/
return R;
}


T0* r146add_comment(T146* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r44count(((T44*)((/*RF2*/(((T81*)a1))->_list/*8*/))))/*)*/)==(0))){
R=((T0*)(C));
}
else{
{T229*n=((T229*)malloc(sizeof(*n))/*12*/);
*n=M229;
r229make(n,(T0*)C,a1);
R=((T0*)n);
}
}
/*FI]*/
return R;
}
T0*oBC13once_routine_pool=NULL;


void r146mapping_c_target(T146* C,T0* a1){
T0* _rt=NULL;
T6 _flag=0;
_flag=r325call_invariant_start(a1);
_rt=X52run_type(r146result_type(C));
/*[IF*/
if(X52is_reference(_rt)){
/*[IF*/
if(X52is_reference(a1)){
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_492));
/*]*/
/*[IRF3.5put_integer*/r48put_integer(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),X52id(a1));
/*]*/
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),((T0*)ms14_166));
/*]*/
r146compile_to_c(C);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
else{
r146compile_to_c(C);
}
/*FI]*/
}
else{
/*[IF*/
if(X52is_reference(a1)){
r146compile_to_c(C);
}
else{
/*[IF*/
if(X52need_c_struct(_rt)){
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'\46');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
r146compile_to_c(C);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(_flag){
/*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T48* C1=(T48*)(oBC325out_c);
T3 b1=((T3)'\51');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T0* r146to_runnable(T146* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _rf=NULL;
_rf=r49top_rf((T49*)(oBC13small_eiffel));
_rt=X334result_type(_rf);
/*[IF*/
if(((/*RF2*/(C)->_run_feature/*12*/))==((void*)(NULL))){
(/*SFN*/C->_run_feature)=_rf;
R=((T0*)(C));
}
else{
{T146*n=((T146*)malloc(sizeof(*n))/*16*/);
*n=M146;
/*[IRF3.3make*/((((T146*)(n)))->_start_position)=((/*RF2*/(C)->_start_position/*4*/));
/*]*/
R=((T0*)n);
}
R=r146to_runnable(((T146*)R),a1);
}
/*FI]*/
return R;
}


T2 r146to_integer(T146* C){
T2 R=0;
r146error((/*RF2*/(C)->_start_position/*4*/),((T0*)ms14_45441));
return R;
}


void r146error(T68 a1,T0* a2){
r66add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC66explanation),b1);
}/*]*/
r66print_as_error((T66*)(oBC13eh));
}


T0* r146result_type(T146* C){
T0* R=NULL;
R=X334result_type((/*RF2*/(C)->_run_feature/*12*/));
return R;
}


T0* r146static_result_base_class(void){
T0* R=NULL;
T0* _bcn=NULL;
T0* _rt=NULL;
T0* _e_feature=NULL;
T0* _rf=NULL;
_rf=r49top_rf((T49*)(oBC13small_eiffel));
_e_feature=/*SSWA2*//*X334base_feature*/(/*RF2*/(((T368*)_rf))->_base_feature/*24*/);
_rt=X90result_type(_e_feature);
_bcn=X52static_base_class_name(_rt);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r61base_class(((T61*)_bcn));
}
/*FI]*/
return R;
}


void r146compile_to_c(T146* C){
/*[IF*/
if(X334is_once_function((/*RF2*/(C)->_run_feature/*12*/))){
/*[IRF3.6c_put_o_result*/{T0* b1=(/*RF2*/(C)->_run_feature/*12*/);
/*[IRF3.5put_string*/r48put_string(((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/))),r363o_result(/*SSWA2*//*X334base_feature*/(/*RF2*/(((T368*)b1))->_base_feature/*24*/)));
/*]*/
}/*]*/
}
else{
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T48* C1=((T48*)((/*RF2*/((T325*)(oBC13cpp))->_current_out/*63*/)));
T3 b1=((T3)'R');
putc(b1,((FILE*)((/*RF2*/(C1)->_output_stream/*4*/))));
}/*]*/
/*]*/
}
/*FI]*/
}


T6 r146stupid_switch(T146* C,T0* a1){
T6 R=0;
/*[IF*/
if(r49stupid_switch(r146result_type(C),a1)){
R=1;
}
/*FI]*/
return R;
}

