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


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


void r340add_last(T340* 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=r81realloc((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);
/*]*/
}


void r340remove_last(T340* C){
C->_upper=((C)->_upper/*8*/)-(1);
}
/*No:FIXED_ARRAY[PARENT].item*/


T0* r340last(T340* C){
T0* R=NULL;
R=/*(IRF4.6item*/((C)->_storage/*0*/)[(C)->_upper/*8*/]/*)*/;
return R;
}
/*No:FIXED_ARRAY[PARENT].count*/
/*No:FIXED_ARRAY[PARENT].upper*/
/*No:FIXED_ARRAY[PARENT].clear*/


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


void r62with_capacity(T62* 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[STRING].clear_all*/


void r62add_last(T62* 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=r42realloc((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[STRING].item*/
/*No:FIXED_ARRAY[STRING].set_all_with*/


T6 r62valid_index(T62* C,T2 a1){
T6 R=0;
R=((0)<=(a1))&&((a1)<=((C)->_upper/*8*/));
return R;
}
/*No:FIXED_ARRAY[STRING].lower*/
/*No:FIXED_ARRAY[STRING].count*/


void r62resize(T62* 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=r42realloc((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]*/
}


T6 r62fast_has(T62* C,T0* a1){
T6 R=0;
R=r62valid_index(C,r62fast_index_of(C,a1));
return R;
}


void r62make(T62* 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*/{T62* C1=C;
T0* __value=NULL;
/*[IRF3.6set_all_with*/{T62* C2=C1;
T0* c1=__value;
r42set_all_with((C2)->_storage/*0*/,c1,(C2)->_upper/*8*/);
}/*]*/
}/*]*/
}
/*FI]*/
}


T2 r62fast_index_of(T62* C,T0* a1){
T2 R=0;
R=r42fast_index_of((C)->_storage/*0*/,a1,(C)->_upper/*8*/);
return R;
}
/*No:FIXED_ARRAY[STRING].upper*/
/*No:FIXED_ARRAY[STRING].capacity*/
/*No:FIXED_ARRAY[STRING].put*/
/*No:FIXED_ARRAY[STRING].storage*/


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


T6 r39has(T39* C,T0* a1){
T6 R=0;
R=r39valid_index(C,r39index_of(C,a1));
return R;
}


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


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


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


T2 r39count(T39* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[STRING].lower*/


T6 r39fast_has(T39* C,T0* a1){
T6 R=0;
R=r39valid_index(C,r39fast_index_of(C,a1));
return R;
}


T2 r39fast_index_of(T39* C,T0* a1){
T2 R=0;
R=((C)->_lower/*12*/)+(r42fast_index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
return R;
}
/*No:ARRAY[STRING].upper*/


T2 r39index_of(T39* C,T0* a1){
T2 R=0;
R=((C)->_lower/*12*/)+(r42index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
return R;
}
/*No:ARRAY[STRING].capacity*/
/*No:ARRAY[STRING].put*/
/*No:ARRAY[STRING].storage*/


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


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


T0* r80first(T80* C){
T0* R=NULL;
R=r80item(C,(C)->_lower/*12*/);
return R;
}


T2 r80count(T80* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[PARENT].lower*/
/*No:ARRAY[PARENT].upper*/
/*No:ARRAY[PARENT].capacity*/
/*No:ARRAY[PARENT].put*/
/*No:ARRAY[PARENT].storage*/


T0* r235twin(T235* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T235*)R)=M235;
r235copy(((T235*)R),((T0*)C));
return R;
}


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


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


T2 r235count(T235* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[E_WHEN].lower*/
/*No:ARRAY[E_WHEN].upper*/


void r235copy(T235* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T235*)a1))->_lower/*12*/;
C->_upper=(((T235*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r236copy_from((C)->_storage/*0*/,(((T235*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[E_WHEN].capacity*/
/*No:ARRAY[E_WHEN].put*/
/*No:ARRAY[E_WHEN].storage*/


T0* r228twin(T228* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T228*)R)=M228;
r228copy(((T228*)R),((T0*)C));
return R;
}


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


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


T2 r228count(T228* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[IFTHEN].lower*/
/*No:ARRAY[IFTHEN].upper*/


void r228copy(T228* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T228*)a1))->_lower/*12*/;
C->_upper=(((T228*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r229copy_from((C)->_storage/*0*/,(((T228*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[IFTHEN].capacity*/
/*No:ARRAY[IFTHEN].put*/
/*No:ARRAY[IFTHEN].storage*/
/*No:ARRAY[E_REQUIRE].clear_all*/


void r358add_last(T358* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r358count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r359realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T358* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*No:ARRAY[E_REQUIRE].set_all_with*/


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


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


T0* r358first(T358* C){
T0* R=NULL;
R=r358item(C,(C)->_lower/*12*/);
return R;
}


T2 r358count(T358* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[E_REQUIRE].lower*/


T6 r358fast_has(T358* C,T0* a1){
T6 R=0;
R=r358valid_index(C,r358fast_index_of(C,a1));
return R;
}


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


T2 r358fast_index_of(T358* C,T0* a1){
T2 R=0;
R=((C)->_lower/*12*/)+(r359fast_index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
return R;
}
/*No:ARRAY[E_REQUIRE].upper*/


void r358clear(T358* C){
C->_upper=((C)->_lower/*12*/)-(1);
}


T6 r358empty(T358* C){
T6 R=0;
R=(r358count(C))==(0);
return R;
}
/*No:ARRAY[E_REQUIRE].capacity*/
/*No:ARRAY[E_REQUIRE].put*/
/*No:ARRAY[E_REQUIRE].storage*/


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


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


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


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


T0* r328first(T328* C){
T0* R=NULL;
R=r328item(C,(C)->_lower/*12*/);
return R;
}


T2 r328count(T328* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[RUN_CLASS].lower*/


T6 r328fast_has(T328* C,T0* a1){
T6 R=0;
R=r328valid_index(C,r328fast_index_of(C,a1));
return R;
}


T2 r328fast_index_of(T328* C,T0* a1){
T2 R=0;
R=((C)->_lower/*12*/)+(r61fast_index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
return R;
}
/*No:ARRAY[RUN_CLASS].upper*/


void r328copy(T328* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T328*)a1))->_lower/*12*/;
C->_upper=(((T328*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r61copy_from((C)->_storage/*0*/,(((T328*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}


void r328swap(T328* C,T2 a1,T2 a2){
T0* _tmp=NULL;
_tmp=r328item(C,a1);
/*[IRF3.6put*/{T328* C1=C;
T0* b1=r328item(C,a2);
T2 b2=a1;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
/*[IRF3.6put*/{T328* C1=C;
T0* b1=_tmp;
T2 b2=a2;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*No:ARRAY[RUN_CLASS].capacity*/
/*No:ARRAY[RUN_CLASS].put*/
/*No:ARRAY[RUN_CLASS].storage*/


T0* r106twin(T106* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T106*)R)=M106;
r106copy(((T106*)R),((T0*)C));
return R;
}
/*No:ARRAY[ASSERTION].clear_all*/


void r106add_last(T106* C,T0* a1){
T2 _new_capacity=0;
/*[IF*/
if(((C)->_capacity/*4*/)<((r106count(C))+(1))){
/*[IF*/
if(((C)->_capacity/*4*/)==(0)){
C->_capacity=16;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
else{
_new_capacity=(2)*((C)->_capacity/*4*/);
C->_storage=r108realloc((C)->_storage/*0*/,(C)->_capacity/*4*/,_new_capacity);
C->_capacity=_new_capacity;
}
/*FI]*/
}
/*FI]*/
C->_upper=((C)->_upper/*8*/)+(1);
/*[IRF3.6put*/{T106* C1=C;
T0* b1=a1;
T2 b2=(C)->_upper/*8*/;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*No:ARRAY[ASSERTION].set_all_with*/


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


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


T2 r106count(T106* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[ASSERTION].lower*/


T6 r106fast_has(T106* C,T0* a1){
T6 R=0;
R=r106valid_index(C,r106fast_index_of(C,a1));
return R;
}


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


T2 r106fast_index_of(T106* C,T0* a1){
T2 R=0;
R=((C)->_lower/*12*/)+(r108fast_index_of((C)->_storage/*0*/,a1,((C)->_upper/*8*/)-((C)->_lower/*12*/)));
return R;
}
/*No:ARRAY[ASSERTION].upper*/


void r106clear(T106* C){
C->_upper=((C)->_lower/*12*/)-(1);
}


void r106copy(T106* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T106*)a1))->_lower/*12*/;
C->_upper=(((T106*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r108copy_from((C)->_storage/*0*/,(((T106*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}


T6 r106empty(T106* C){
T6 R=0;
R=(r106count(C))==(0);
return R;
}
/*No:ARRAY[ASSERTION].capacity*/
/*No:ARRAY[ASSERTION].put*/
/*No:ARRAY[ASSERTION].storage*/


T0* r238twin(T238* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T238*)R)=M238;
r238copy(((T238*)R),((T0*)C));
return R;
}


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


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


T2 r238count(T238* C){
T2 R=0;
R=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
return R;
}
/*No:ARRAY[WHEN_ITEM].lower*/
/*No:ARRAY[WHEN_ITEM].upper*/


void r238copy(T238* C,T0* a1){
T2 _needed_capacity=0;
C->_lower=(((T238*)a1))->_lower/*12*/;
C->_upper=(((T238*)a1))->_upper/*8*/;
_needed_capacity=(((C)->_upper/*8*/)-((C)->_lower/*12*/))+(1);
/*[IF*/
if(((C)->_capacity/*4*/)<(_needed_capacity)){
C->_capacity=_needed_capacity;
C->_storage=calloc((C)->_capacity/*4*/,sizeof(T0*));
}
/*FI]*/
/*[IF*/
if((_needed_capacity)>(0)){
r239copy_from((C)->_storage/*0*/,(((T238*)a1))->_storage/*0*/,(_needed_capacity)-(1));
}
/*FI]*/
}
/*No:ARRAY[WHEN_ITEM].capacity*/
/*No:ARRAY[WHEN_ITEM].put*/
/*No:ARRAY[WHEN_ITEM].storage*/

