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


void r321with_capacity(T321* C,T2 a1){
/*[IF*/
if(((C)->_capacity/*4*/)<(a1)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
}
/*FI]*/
C->_upper=-(1);
}
/*No:FIXED_ARRAY[RUN_CLASS].clear_all*/


void r321add_last(T321* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*8*/)+(1))<=(((C)->_capacity/*4*/)-(1))){
C->_upper=((C)->_upper/*8*/)+(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r322realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*8*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*0*/)[(C)->_upper/*8*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[RUN_CLASS].item*/
/*No:FIXED_ARRAY[RUN_CLASS].set_all_with*/
/*No:FIXED_ARRAY[RUN_CLASS].count*/


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


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


T2 r321fast_index_of(T321* C,T0* a1){
T2 R=0;
R=r322fast_index_of((C)->_storage/*0*/,a1,(C)->_upper/*8*/);
return R;
}
/*No:FIXED_ARRAY[RUN_CLASS].upper*/
/*No:FIXED_ARRAY[RUN_CLASS].capacity*/
/*No:FIXED_ARRAY[RUN_CLASS].put*/
/*No:FIXED_ARRAY[RUN_CLASS].storage*/


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


T0* r92twin(T92* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T92*)R)=M92;
r92copy(((T92*)R),((T0*)C));
return R;
}
/*No:FIXED_ARRAY[E_FEATURE].clear_all*/


void r92add_last(T92* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*8*/)+(1))<=(((C)->_capacity/*4*/)-(1))){
C->_upper=((C)->_upper/*8*/)+(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r93realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*8*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*0*/)[(C)->_upper/*8*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[E_FEATURE].set_all_with*/
/*No:FIXED_ARRAY[E_FEATURE].item*/
/*No:FIXED_ARRAY[E_FEATURE].count*/


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


void r92make(T92* C,T2 a1){
/*[IF*/
if((a1)==(0)){
C->_upper=-(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
 else if(((C)->_capacity/*4*/)<(a1)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
else{
C->_upper=(a1)-(1);
/*[IRF3.6clear_all*/{T92* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T92* C2=C1;
T0* c1=__value;
r93set_all_with((C2)->_storage/*0*/,c1,(C2)->_upper/*8*/);
}/*]*/
}/*]*/
}
/*FI]*/
}
/*No:FIXED_ARRAY[E_FEATURE].upper*/
/*No:FIXED_ARRAY[E_FEATURE].clear*/


void r92copy(T92* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(((T92*)a1))->_upper/*8*/;
/*[IF*/
if((_other_upper)>=(0)){
_new_capacity=(_other_upper)+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_new_capacity)){
C->_capacity=_new_capacity;
C->_storage=calloc(_new_capacity,sizeof(T0*));
}
 else if(((C)->_capacity/*4*/)>(0)){
r93clear_all((C)->_storage/*0*/,((C)->_capacity/*4*/)-(1));
}
/*FI]*/
r93copy_from((C)->_storage/*0*/,(((T92*)a1))->_storage/*0*/,_other_upper);
}
 else if(((C)->_capacity/*4*/)>(0)){
r93clear_all((C)->_storage/*0*/,((C)->_capacity/*4*/)-(1));
}
/*FI]*/
C->_upper=_other_upper;
}


T6 r92empty(T92* C){
T6 R=0;
R=(/*(IRF4.6count*/((C)->_upper/*8*/)+(1)/*)*/)==(0);
return R;
}
/*No:FIXED_ARRAY[E_FEATURE].capacity*/
/*No:FIXED_ARRAY[E_FEATURE].put*/
/*No:FIXED_ARRAY[E_FEATURE].storage*/


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


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


void r311add_last(T311* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*12*/)+(1))<=(((C)->_capacity/*8*/)-(1))){
C->_upper=((C)->_upper/*12*/)+(1);
}
 else if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*8*/);
C->_storage=r313realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*12*/)+(1);
}
/*FI]*/
/*[IRF3.6put*/{T311* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*12*/;
((C1)->_storage/*4*/)[b2]=(b1);
}/*]*/
}
/*No:FIXED_ARRAY[RUN_FEATURE].set_all_with*/


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


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


T2 r311count(T311* C){
T2 R=0;
R=((C)->_upper/*12*/)+(1);
return R;
}
/*No:FIXED_ARRAY[RUN_FEATURE].lower*/


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


void r311make(T311* C,T2 a1){
/*[IF*/
if((a1)==(0)){
C->_upper=-(1);
}
 else if(((C)->_capacity/*8*/)==(0)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
 else if(((C)->_capacity/*8*/)<(a1)){
C->_storage=calloc(a1,sizeof(T0*));
C->_capacity=a1;
C->_upper=(a1)-(1);
}
else{
C->_upper=(a1)-(1);
r311clear_all(C);
}
/*FI]*/
}


T6 r311fast_has(T311* C,T0* a1){
T6 R=0;
R=r311valid_index(C,r311fast_index_of(C,a1));
return R;
}


T2 r311fast_index_of(T311* C,T0* a1){
T2 R=0;
R=r313fast_index_of((C)->_storage/*4*/,a1,(C)->_upper/*12*/);
return R;
}
/*No:FIXED_ARRAY[RUN_FEATURE].upper*/


void r311swap(T311* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r311item(C,a1);
/*[IRF3.6put*/{T311* C1=C;
T0* b1=r311item(C,a2);
T2 b2=a1;
((C1)->_storage/*4*/)[b2]=(b1);
}/*]*/
/*[IRF3.6put*/{T311* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((C1)->_storage/*4*/)[b2]=(b1);
}/*]*/
}
/*No:FIXED_ARRAY[RUN_FEATURE].capacity*/
/*No:FIXED_ARRAY[RUN_FEATURE].put*/
/*No:FIXED_ARRAY[RUN_FEATURE].storage*/


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


T0* r205twin(T205* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T205*)R)=M205;
r205copy(((T205*)R),((T0*)C));
return R;
}


void r205add_last(T205* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*8*/)+(1))<=(((C)->_capacity/*4*/)-(1))){
C->_upper=((C)->_upper/*8*/)+(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r212realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*8*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*0*/)[(C)->_upper/*8*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[INSTRUCTION].item*/
/*No:FIXED_ARRAY[INSTRUCTION].upper*/


void r205copy(T205* C,T0* a1){
T2 _new_capacity=0;
T2 _other_upper=0;
_other_upper=(((T205*)a1))->_upper/*8*/;
/*[IF*/
if((_other_upper)>=(0)){
_new_capacity=(_other_upper)+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_new_capacity)){
C->_capacity=_new_capacity;
C->_storage=calloc(_new_capacity,sizeof(T0*));
}
 else if(((C)->_capacity/*4*/)>(0)){
r212clear_all((C)->_storage/*0*/,((C)->_capacity/*4*/)-(1));
}
/*FI]*/
r212copy_from((C)->_storage/*0*/,(((T205*)a1))->_storage/*0*/,_other_upper);
}
 else if(((C)->_capacity/*4*/)>(0)){
r212clear_all((C)->_storage/*0*/,((C)->_capacity/*4*/)-(1));
}
/*FI]*/
C->_upper=_other_upper;
}
/*No:FIXED_ARRAY[INSTRUCTION].capacity*/
/*No:FIXED_ARRAY[INSTRUCTION].storage*/
/*No:FIXED_ARRAY[INSTRUCTION].put*/


T0* r98twin(T98* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T98*)R)=M98;
r98copy(((T98*)R),((T0*)C));
return R;
}


void r98add_last(T98* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*8*/)<((r98count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*8*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*8*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*8*/);
C->_storage=r99realloc((C)->_storage/*4*/,(C)->_capacity/*8*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*12*/)+(1);
/*[IRF3.6put*/{T98* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*12*/;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}


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


T2 r98count(T98* C){
T2 R=0;
R=(((C)->_upper/*12*/)-((C)->_lower/*16*/))+(1);
return R;
}
/*No:ARRAY[EXPRESSION].lower*/
/*No:ARRAY[EXPRESSION].upper*/


void r98copy(T98* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=/*X98lower*/((T2)(((T98*)a1))->_lower/*16*/);
C->_upper=/*X98upper*/((T2)(((T98*)a1))->_upper/*12*/);
_needed_capacity=(((C)->_upper/*12*/)-((C)->_lower/*16*/))+(1);
/*[IF*/
if(((C)->_capacity/*8*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*8*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r99copy_from((C)->_storage/*4*/,/*X98storage*/((T99)(((T98*)a1))->_storage/*4*/),(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[EXPRESSION].capacity*/
/*No:ARRAY[EXPRESSION].put*/
/*No:ARRAY[EXPRESSION].storage*/


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


T6 r68has(T68* C,T0* a1){
T6 R=0;
R=r68valid_index(C,r68index_of(C,a1));
return R;
}


void r68add_last(T68* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if((((C)->_upper/*8*/)+(1))<=(((C)->_capacity/*4*/)-(1))){
C->_upper=((C)->_upper/*8*/)+(1);
}
 else if(((C)->_capacity/*4*/)==(0)){
C->_storage=calloc(2,sizeof(T0*));
C->_capacity=2;
C->_upper=0;
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r70realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
C->_upper=((C)->_upper/*8*/)+(1);
}
/*FI]*/
/*[IRF3.5put*/((C)->_storage/*0*/)[(C)->_upper/*8*/]=(a1);
/*]*/
}
/*No:FIXED_ARRAY[POSITION].item*/


T6 r68valid_index(T68* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((C)->_upper/*8*/));
return R;
}
/*No:FIXED_ARRAY[POSITION].first*/
/*No:FIXED_ARRAY[POSITION].lower*/


T6 r68fast_has(T68* C,T0* a1){
T6 R=0;
R=r68valid_index(C,r68fast_index_of(C,a1));
return R;
}


T2 r68fast_index_of(T68* C,T0* a1){
T2 R=0;
R=r70fast_index_of((C)->_storage/*0*/,a1,(C)->_upper/*8*/);
return R;
}
/*No:FIXED_ARRAY[POSITION].upper*/
/*No:FIXED_ARRAY[POSITION].clear*/


T2 r68index_of(T68* C,T0* a1){
T2 R=0;
R=r70index_of((C)->_storage/*0*/,a1,(C)->_upper/*8*/);
return R;
}
/*No:FIXED_ARRAY[POSITION].capacity*/
/*No:FIXED_ARRAY[POSITION].put*/
/*No:FIXED_ARRAY[POSITION].storage*/
/*No:DICTIONARY[STRING,STRING].Default_size*/


void r72with_capacity(T72* C,T2 a1){
T2 _i=0;
{T26*n=malloc(sizeof(*n));
*n=M26;
r26make(n,a1);
C->_keys=(T0*)n;
}
{T26*n=malloc(sizeof(*n));
*n=M26;
r26make(n,a1);
C->_store=(T0*)n;
}
C->_modulus=(3)*(a1);
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,(C)->_modulus/*8*/);
C->_buckets=(T0*)n;
}
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,a1);
C->_chain=(T0*)n;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
C->_first_free_slot=_i;
while (!((_i)<(0))) {
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
C->_cache_keys_idx=-(1);
C->_cache_user_idx=-(1);
C->_count=0;
}


T6 r72has(T72* C,T0* a1){
T6 R=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=((C)->_cache_keys_idx/*24*/)>=(0);
return R;
}
/*No:DICTIONARY[STRING,STRING].cache_keys_idx*/
/*No:DICTIONARY[STRING,STRING].cache_user_idx*/


void r72expand(T72* C){
T2 _i=0;
_i=/*(IRF4.6count*/(((T26*)((C)->_keys/*0*/))->_upper/*8*/)+(1)/*)*/;
r72resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0))) {
r62add_last((T62*)((C)->_chain/*16*/),(C)->_first_free_slot/*20*/);
C->_first_free_slot=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
_i=(_i)-(1);
}
r26resize((T26*)((C)->_keys/*0*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
r26resize((T26*)((C)->_store/*4*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
}


void r72resize_buckets(T72* C,T2 a1){
T2 _i=0;
T2 _h=0;
C->_modulus=a1;
r62resize((T62*)((C)->_buckets/*12*/),a1);
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
while (!(((C)->_first_free_slot/*20*/)<(0))) {
_i=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(-(2));
/*]*/
C->_first_free_slot=_i;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((C)->_first_free_slot/*20*/);
/*]*/
C->_first_free_slot=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[_i]/*)*/)))%(a1);
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*No:DICTIONARY[STRING,STRING].buckets_keys_ratio*/
/*No:DICTIONARY[STRING,STRING].first_free_slot*/


T0* r72at(T72* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/(((T26*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
return R;
}
/*No:DICTIONARY[STRING,STRING].modulus*/
/*No:DICTIONARY[STRING,STRING].count*/
/*No:DICTIONARY[STRING,STRING].chain*/
/*No:DICTIONARY[STRING,STRING].make*/
/*No:DICTIONARY[STRING,STRING].store*/
/*No:DICTIONARY[STRING,STRING].buckets*/
/*No:DICTIONARY[STRING,STRING].keys*/


void r72put(T72* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
/*[IF*/
if(((C)->_cache_keys_idx/*24*/)<(0)){
/*[IF*/
if(((C)->_first_free_slot/*20*/)<(0)){
r72expand(C);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
}
/*FI]*/
/*[IRF3.5put*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a2);
/*]*/
/*[IRF3.5put*/(((T26*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a1);
/*]*/
C->_cache_keys_idx=(C)->_first_free_slot/*20*/;
C->_first_free_slot=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=((C)->_cache_keys_idx/*24*/);
/*]*/
C->_count=((C)->_count/*32*/)+(1);
}
else{
/*[IRF3.5put*/(((T26*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/(((T26*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
/*No:DICTIONARY[BASE_CLASS,STRING].Default_size*/


void r61with_capacity(T61* C,T2 a1){
T2 _i=0;
{T26*n=malloc(sizeof(*n));
*n=M26;
r26make(n,a1);
C->_keys=(T0*)n;
}
{T64*n=malloc(sizeof(*n));
*n=M64;
r64make(n,a1);
C->_store=(T0*)n;
}
C->_modulus=(3)*(a1);
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,(C)->_modulus/*8*/);
C->_buckets=(T0*)n;
}
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,a1);
C->_chain=(T0*)n;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
C->_first_free_slot=_i;
while (!((_i)<(0))) {
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
C->_cache_keys_idx=-(1);
C->_cache_user_idx=-(1);
C->_count=0;
}


T6 r61has(T61* C,T0* a1){
T6 R=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=((C)->_cache_keys_idx/*24*/)>=(0);
return R;
}
/*No:DICTIONARY[BASE_CLASS,STRING].cache_keys_idx*/
/*No:DICTIONARY[BASE_CLASS,STRING].cache_user_idx*/


void r61expand(T61* C){
T2 _i=0;
_i=/*(IRF4.6count*/(((T26*)((C)->_keys/*0*/))->_upper/*8*/)+(1)/*)*/;
r61resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0))) {
r62add_last((T62*)((C)->_chain/*16*/),(C)->_first_free_slot/*20*/);
C->_first_free_slot=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
_i=(_i)-(1);
}
r26resize((T26*)((C)->_keys/*0*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
r64resize((T64*)((C)->_store/*4*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
}


void r61resize_buckets(T61* C,T2 a1){
T2 _i=0;
T2 _h=0;
C->_modulus=a1;
r62resize((T62*)((C)->_buckets/*12*/),a1);
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
while (!(((C)->_first_free_slot/*20*/)<(0))) {
_i=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(-(2));
/*]*/
C->_first_free_slot=_i;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((C)->_first_free_slot/*20*/);
/*]*/
C->_first_free_slot=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[_i]/*)*/)))%(a1);
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*No:DICTIONARY[BASE_CLASS,STRING].buckets_keys_ratio*/
/*No:DICTIONARY[BASE_CLASS,STRING].first_free_slot*/


T0* r61at(T61* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/(((T64*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
return R;
}
/*No:DICTIONARY[BASE_CLASS,STRING].modulus*/
/*No:DICTIONARY[BASE_CLASS,STRING].count*/
/*No:DICTIONARY[BASE_CLASS,STRING].chain*/
/*No:DICTIONARY[BASE_CLASS,STRING].make*/
/*No:DICTIONARY[BASE_CLASS,STRING].store*/
/*No:DICTIONARY[BASE_CLASS,STRING].buckets*/
/*No:DICTIONARY[BASE_CLASS,STRING].keys*/


void r61put(T61* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
/*[IF*/
if(((C)->_cache_keys_idx/*24*/)<(0)){
/*[IF*/
if(((C)->_first_free_slot/*20*/)<(0)){
r61expand(C);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
}
/*FI]*/
/*[IRF3.5put*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a2);
/*]*/
/*[IRF3.5put*/(((T64*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a1);
/*]*/
C->_cache_keys_idx=(C)->_first_free_slot/*20*/;
C->_first_free_slot=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=((C)->_cache_keys_idx/*24*/);
/*]*/
C->_count=((C)->_count/*32*/)+(1);
}
else{
/*[IRF3.5put*/(((T64*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/(((T64*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
/*No:DICTIONARY[RUN_CLASS,STRING].Default_size*/


void r320with_capacity(T320* C,T2 a1){
T2 _i=0;
{T26*n=malloc(sizeof(*n));
*n=M26;
r26make(n,a1);
C->_keys=(T0*)n;
}
{T321*n=malloc(sizeof(*n));
*n=M321;
r321make(n,a1);
C->_store=(T0*)n;
}
C->_modulus=(3)*(a1);
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,(C)->_modulus/*8*/);
C->_buckets=(T0*)n;
}
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,a1);
C->_chain=(T0*)n;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
C->_first_free_slot=_i;
while (!((_i)<(0))) {
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
C->_cache_keys_idx=-(1);
C->_cache_user_idx=-(1);
C->_count=0;
}


T6 r320has(T320* C,T0* a1){
T6 R=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=((C)->_cache_keys_idx/*24*/)>=(0);
return R;
}
/*No:DICTIONARY[RUN_CLASS,STRING].cache_keys_idx*/
/*No:DICTIONARY[RUN_CLASS,STRING].cache_user_idx*/


void r320expand(T320* C){
T2 _i=0;
_i=/*(IRF4.6count*/(((T26*)((C)->_keys/*0*/))->_upper/*8*/)+(1)/*)*/;
r320resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0))) {
r62add_last((T62*)((C)->_chain/*16*/),(C)->_first_free_slot/*20*/);
C->_first_free_slot=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
_i=(_i)-(1);
}
r26resize((T26*)((C)->_keys/*0*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
r321resize((T321*)((C)->_store/*4*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
}


void r320resize_buckets(T320* C,T2 a1){
T2 _i=0;
T2 _h=0;
C->_modulus=a1;
r62resize((T62*)((C)->_buckets/*12*/),a1);
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
while (!(((C)->_first_free_slot/*20*/)<(0))) {
_i=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(-(2));
/*]*/
C->_first_free_slot=_i;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((C)->_first_free_slot/*20*/);
/*]*/
C->_first_free_slot=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[_i]/*)*/)))%(a1);
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*No:DICTIONARY[RUN_CLASS,STRING].buckets_keys_ratio*/


T0* r320item(T320* C,T2 a1){
T0* R=NULL;
r320set_cache_user_idx(C,a1);
R=/*(IRF4.6item*/(((T321*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
return R;
}


void r320set_cache_user_idx(T320* C,T2 a1){
T2 _i=0;
/*[IF*/
if((a1)==(((C)->_cache_user_idx/*28*/)+(1))){
C->_cache_user_idx=a1;
/*[IF*/
if((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)<(0)){
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)+(1);
while (!((/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/)>=(0))) {
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)+(1);
}
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/;
}
else{
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
/*FI]*/
}
 else if((a1)==(((C)->_cache_user_idx/*28*/)-(1))){
C->_cache_user_idx=a1;
/*[IF*/
if(((C)->_cache_keys_idx/*24*/)==(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/)){
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)-(1);
while (!((/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/)>=(0))) {
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)-(1);
}
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/;
while (!((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)<(0))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
else{
_i=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/;
while (!((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/)==((C)->_cache_keys_idx/*24*/))) {
_i=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/;
}
C->_cache_keys_idx=_i;
}
/*FI]*/
}
 else if((a1)==((C)->_cache_user_idx/*28*/)){
}
 else if((a1)==(1)){
C->_cache_user_idx=1;
C->_cache_buckets_idx=0;
while (!((/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/)>=(0))) {
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)+(1);
}
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/;
}
 else if((a1)==((C)->_count/*36*/)){
C->_cache_user_idx=a1;
C->_cache_buckets_idx=((T62*)((C)->_buckets/*12*/))->_upper/*8*/;
while (!((/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/)>=(0))) {
C->_cache_buckets_idx=((C)->_cache_buckets_idx/*32*/)-(1);
}
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(C)->_cache_buckets_idx/*32*/]/*)*/;
while (!((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)<(0))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
else{
r320set_cache_user_idx(C,1);
while (!(((C)->_cache_user_idx/*28*/)==(a1))) {
r320set_cache_user_idx(C,((C)->_cache_user_idx/*28*/)+(1));
}
}
/*FI]*/
}
/*No:DICTIONARY[RUN_CLASS,STRING].cache_buckets_idx*/
/*No:DICTIONARY[RUN_CLASS,STRING].first_free_slot*/


T0* r320at(T320* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/(((T321*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
return R;
}
/*No:DICTIONARY[RUN_CLASS,STRING].modulus*/
/*No:DICTIONARY[RUN_CLASS,STRING].count*/
/*No:DICTIONARY[RUN_CLASS,STRING].chain*/
/*No:DICTIONARY[RUN_CLASS,STRING].make*/
/*No:DICTIONARY[RUN_CLASS,STRING].store*/
/*No:DICTIONARY[RUN_CLASS,STRING].buckets*/
/*No:DICTIONARY[RUN_CLASS,STRING].keys*/


void r320put(T320* C,T0* a1,T0* a2){
T2 _h=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a2),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
/*[IF*/
if(((C)->_cache_keys_idx/*24*/)<(0)){
/*[IF*/
if(((C)->_first_free_slot/*20*/)<(0)){
r320expand(C);
_h=(r7hash_code(((T7*)a2)))%((C)->_modulus/*8*/);
}
/*FI]*/
/*[IRF3.5put*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a2);
/*]*/
/*[IRF3.5put*/(((T321*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(a1);
/*]*/
C->_cache_keys_idx=(C)->_first_free_slot/*20*/;
C->_first_free_slot=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=((C)->_cache_keys_idx/*24*/);
/*]*/
C->_count=((C)->_count/*36*/)+(1);
}
else{
/*[IRF3.5put*/(((T321*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
else{
/*[IRF3.5put*/(((T321*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]=(a1);
/*]*/
}
/*FI]*/
}
/*No:DICTIONARY[E_FEATURE,STRING].Default_size*/


void r86with_capacity(T86* C,T2 a1){
T2 _i=0;
{T26*n=malloc(sizeof(*n));
*n=M26;
r26make(n,a1);
C->_keys=(T0*)n;
}
{T92*n=malloc(sizeof(*n));
*n=M92;
r92make(n,a1);
C->_store=(T0*)n;
}
C->_modulus=(3)*(a1);
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,(C)->_modulus/*8*/);
C->_buckets=(T0*)n;
}
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
{T62*n=malloc(sizeof(*n));
*n=M62;
r62make(n,a1);
C->_chain=(T0*)n;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
C->_first_free_slot=_i;
while (!((_i)<(0))) {
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((_i)-(1));
/*]*/
_i=(_i)-(1);
}
C->_cache_keys_idx=-(1);
C->_cache_user_idx=-(1);
C->_count=0;
}


T6 r86has(T86* C,T0* a1){
T6 R=0;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!((((C)->_cache_keys_idx/*24*/)<(0))||(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=((C)->_cache_keys_idx/*24*/)>=(0);
return R;
}
/*No:DICTIONARY[E_FEATURE,STRING].cache_user_idx*/
/*No:DICTIONARY[E_FEATURE,STRING].cache_keys_idx*/


void r86expand(T86* C){
T2 _i=0;
_i=/*(IRF4.6count*/(((T26*)((C)->_keys/*0*/))->_upper/*8*/)+(1)/*)*/;
r86resize_buckets(C,((_i)*(2))*(3));
while (!((_i)==(0))) {
r62add_last((T62*)((C)->_chain/*16*/),(C)->_first_free_slot/*20*/);
C->_first_free_slot=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
_i=(_i)-(1);
}
r26resize((T26*)((C)->_keys/*0*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
r92resize((T92*)((C)->_store/*4*/),/*(IRF4.6count*/(((T62*)((C)->_chain/*16*/))->_upper/*8*/)+(1)/*)*/);
}


void r86resize_buckets(T86* C,T2 a1){
T2 _i=0;
T2 _h=0;
C->_modulus=a1;
r62resize((T62*)((C)->_buckets/*12*/),a1);
/*[IRF3.6set_all_with*/{T62* C1=(T62*)((C)->_buckets/*12*/);
T2 b1=-(1);
r63set_all_with((C1)->_storage/*0*/,b1,(C1)->_upper/*8*/);
}/*]*/
while (!(((C)->_first_free_slot/*20*/)<(0))) {
_i=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]/*)*/;
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_first_free_slot/*20*/]=(-(2));
/*]*/
C->_first_free_slot=_i;
}
_i=((T62*)((C)->_chain/*16*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]/*)*/)==(-(2))){
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=((C)->_first_free_slot/*20*/);
/*]*/
C->_first_free_slot=_i;
}
else{
_h=(r7hash_code((T7*)(/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[_i]/*)*/)))%(a1);
/*[IRF3.5put*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[_i]=(/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]/*)*/);
/*]*/
/*[IRF3.5put*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[_h]=(_i);
/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*No:DICTIONARY[E_FEATURE,STRING].buckets_keys_ratio*/
/*No:DICTIONARY[E_FEATURE,STRING].first_free_slot*/


T0* r86at(T86* C,T0* a1){
T0* R=NULL;
/*[IF*/
if((((C)->_cache_keys_idx/*24*/)<(0))||(!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/)))){
C->_cache_user_idx=-(1);
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_buckets/*12*/))->_storage/*0*/)[(r7hash_code(((T7*)a1)))%((C)->_modulus/*8*/)]/*)*/;
while (!(r7is_equal(((T7*)a1),/*(IRF4.6item*/(((T26*)((C)->_keys/*0*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/))) {
C->_cache_keys_idx=/*(IRF4.6item*/(((T62*)((C)->_chain/*16*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
}
}
/*FI]*/
R=/*(IRF4.6item*/(((T92*)((C)->_store/*4*/))->_storage/*0*/)[(C)->_cache_keys_idx/*24*/]/*)*/;
return R;
}
/*No:DICTIONARY[E_FEATURE,STRING].modulus*/
/*No:DICTIONARY[E_FEATURE,STRING].count*/
/*No:DICTIONARY[E_FEATURE,STRING].chain*/
/*No:DICTIONARY[E_FEATURE,STRING].make*/
/*No:DICTIONARY[E_FEATURE,STRING].store*/
/*No:DICTIONARY[E_FEATURE,STRING].buckets*/
/*No:DICTIONARY[E_FEATURE,STRING].keys*/


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

