/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79Beta#5)--
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "example01.h"
gc571*store571=NULL;
int store_left571=0;
fsoc*store_chunk571=NULL;
gc571*gc_free571=NULL;
na_env na_env1939={0,NULL,NULL,NULL,(void(*)(T0*))gc_mark1939};
na_env na_env2135={0,NULL,NULL,NULL,(void(*)(T0*))gc_mark2135};
gc474*store474=NULL;
int store_left474=0;
fsoc*store_chunk474=NULL;
gc474*gc_free474=NULL;
gc1405*store1405=NULL;
int store_left1405=0;
fsoc*store_chunk1405=NULL;
gc1405*gc_free1405=NULL;
gc701*store701=NULL;
int store_left701=0;
fsoc*store_chunk701=NULL;
gc701*gc_free701=NULL;
gc1707*store1707=NULL;
int store_left1707=0;
fsoc*store_chunk1707=NULL;
gc1707*gc_free1707=NULL;
gc1886*store1886=NULL;
int store_left1886=0;
fsoc*store_chunk1886=NULL;
gc1886*gc_free1886=NULL;
na_env na_env9={0,NULL,NULL,NULL,(void(*)(T0*))gc_mark9};
gc7*store7=NULL;
int store_left7=0;
fsoc*store_chunk7=NULL;
gc7*gc_free7=NULL;
gc2074*store2074=NULL;
int store_left2074=0;
fsoc*store_chunk2074=NULL;
gc2074*gc_free2074=NULL;
gc528*store528=NULL;
int store_left528=0;
fsoc*store_chunk528=NULL;
gc528*gc_free528=NULL;


void gc_sweep571(fsoc*c){
gc571*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store571;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free571;
gc_free571=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free571;
gc_free571=flh.header.next;
}
}
}


void gc_mark571(T571*o){
((gc571*)o)->header.flag=FSOH_MARKED;
}


void gc_align_mark571(fsoc*c,gc571*p){
gc571*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store571)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T571*o=(void*)p;
((gc571*)o)->header.flag=FSOH_MARKED;
}
}
}
fsoc H571={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark571,
(void(*)(mch*))gc_sweep571},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc571))-1};


T571*new571(void){
gc571*n;
if(store_left571>1){
store_left571--;
n=store571++;
}
else if (gc_free571!=NULL){
n=gc_free571;
gc_free571=n->header.next;
}
else if(store_left571==1){
store_left571=0;
store_chunk571->header.state_type=FSO_USED_CHUNK;
n=store571++;
}
else if(fsocfl!=NULL) {
store_chunk571=fsocfl;
fsocfl=fsocfl->next;
*store_chunk571=H571;
store571=(void*)(&(store_chunk571->first_object));
store_left571=H571.count_minus_one;
n=store571++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk571=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk571));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk571;
}
*store_chunk571=H571;
store571=(void*)(&(store_chunk571->first_object));
store_left571=H571.count_minus_one;
n=store571++;
}
else{
gc_start();
if(NULL!=gc_free571){
n=gc_free571;
gc_free571=n->header.next;
}
else{
store_chunk571=new_fsoc();
*store_chunk571=H571;
store571=(void*)(&(store_chunk571->first_object));
store_left571=H571.count_minus_one;
n=store571++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M571;
return (void*)n;
}


void gc_mark1939(T1939 o){
(((rsoh*)o)-1)->header.magic_flag=RSOH_MARKED;
}


T1939 new1939(int size){
size=(size*sizeof(int))+sizeof(rsoh);
if((size%sizeof(double))!=0)size+=(sizeof(double)-(size%sizeof(double)));
if (size<=(na_env1939.store_left)){
rsoh*r=na_env1939.store;
na_env1939.store_left-=size;
if(na_env1939.store_left>sizeof(rsoh)){
r->header.size=size;
na_env1939.store=((rsoh*)(((char*)(na_env1939.store))+size));
}
else {
r->header.size=size+na_env1939.store_left;
na_env1939.store_left=0;
}
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,r->header.size-sizeof(rsoh)));
return (void*)(r+1);
}
return (void*)new_na(&na_env1939,size);
}


void gc_mark2135(T2135 o){
rsoh*h=((rsoh*)o)-1;
if((h->header.magic_flag)==RSOH_UNMARKED){
h->header.magic_flag=RSOH_MARKED;
{T0* e;
T0**p=((void*)(o+((((h->header.size)-sizeof(rsoh))/sizeof(e))-1)));
for(;((void*)p)>=((void*)o);p--){
e=*p;
if(NULL!=e)gc_mark7((void*)(e));

}
}
}}


T2135 new2135(int size){
size=(size*sizeof(T0*))+sizeof(rsoh);
if((size%sizeof(double))!=0)size+=(sizeof(double)-(size%sizeof(double)));
if (size<=(na_env2135.store_left)){
rsoh*r=na_env2135.store;
na_env2135.store_left-=size;
if(na_env2135.store_left>sizeof(rsoh)){
r->header.size=size;
na_env2135.store=((rsoh*)(((char*)(na_env2135.store))+size));
}
else {
r->header.size=size+na_env2135.store_left;
na_env2135.store_left=0;
}
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,r->header.size-sizeof(rsoh)));
return (void*)(r+1);
}
return (void*)new_na(&na_env2135,size);
}


void gc_sweep474(fsoc*c){
gc474*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store474;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free474;
gc_free474=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free474;
gc_free474=flh.header.next;
}
}
}


void gc_mark474(T474*o){
((gc474*)o)->header.flag=FSOH_MARKED;
}


void gc_align_mark474(fsoc*c,gc474*p){
gc474*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store474)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T474*o=(void*)p;
((gc474*)o)->header.flag=FSOH_MARKED;
}
}
}
fsoc H474={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark474,
(void(*)(mch*))gc_sweep474},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc474))-1};


T474*new474(void){
gc474*n;
if(store_left474>1){
store_left474--;
n=store474++;
}
else if (gc_free474!=NULL){
n=gc_free474;
gc_free474=n->header.next;
}
else if(store_left474==1){
store_left474=0;
store_chunk474->header.state_type=FSO_USED_CHUNK;
n=store474++;
}
else if(fsocfl!=NULL) {
store_chunk474=fsocfl;
fsocfl=fsocfl->next;
*store_chunk474=H474;
store474=(void*)(&(store_chunk474->first_object));
store_left474=H474.count_minus_one;
n=store474++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk474=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk474));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk474;
}
*store_chunk474=H474;
store474=(void*)(&(store_chunk474->first_object));
store_left474=H474.count_minus_one;
n=store474++;
}
else{
gc_start();
if(NULL!=gc_free474){
n=gc_free474;
gc_free474=n->header.next;
}
else{
store_chunk474=new_fsoc();
*store_chunk474=H474;
store474=(void*)(&(store_chunk474->first_object));
store_left474=H474.count_minus_one;
n=store474++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M474;
return (void*)n;
}


void gc_sweep1405(fsoc*c){
gc1405*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store1405;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free1405;
gc_free1405=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free1405;
gc_free1405=flh.header.next;
}
}
}


void gc_mark1405(T1405*o){
if(((gc1405*)o)->header.flag==FSOH_UNMARKED){
((gc1405*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_memory/*8*/)gc_mark1707((void*)(o->_memory/*8*/));
if(NULL!=o->_path_memory/*4*/)gc_mark7((void*)(o->_path_memory/*4*/));
}}


void gc_align_mark1405(fsoc*c,gc1405*p){
gc1405*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store1405)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T1405*o=(void*)p;
((gc1405*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_memory/*8*/)gc_mark1707((void*)(o->_memory/*8*/));
if(NULL!=o->_path_memory/*4*/)gc_mark7((void*)(o->_path_memory/*4*/));
}
}
}
fsoc H1405={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark1405,
(void(*)(mch*))gc_sweep1405},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc1405))-1};


T1405*new1405(void){
gc1405*n;
if(store_left1405>1){
store_left1405--;
n=store1405++;
}
else if (gc_free1405!=NULL){
n=gc_free1405;
gc_free1405=n->header.next;
}
else if(store_left1405==1){
store_left1405=0;
store_chunk1405->header.state_type=FSO_USED_CHUNK;
n=store1405++;
}
else if(fsocfl!=NULL) {
store_chunk1405=fsocfl;
fsocfl=fsocfl->next;
*store_chunk1405=H1405;
store1405=(void*)(&(store_chunk1405->first_object));
store_left1405=H1405.count_minus_one;
n=store1405++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk1405=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk1405));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk1405;
}
*store_chunk1405=H1405;
store1405=(void*)(&(store_chunk1405->first_object));
store_left1405=H1405.count_minus_one;
n=store1405++;
}
else{
gc_start();
if(NULL!=gc_free1405){
n=gc_free1405;
gc_free1405=n->header.next;
}
else{
store_chunk1405=new_fsoc();
*store_chunk1405=H1405;
store1405=(void*)(&(store_chunk1405->first_object));
store_left1405=H1405.count_minus_one;
n=store1405++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M1405;
return (void*)n;
}


void gc_sweep701(fsoc*c){
gc701*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store701;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free701;
gc_free701=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free701;
gc_free701=flh.header.next;
}
}
}


void gc_mark701(T701*o){
((gc701*)o)->header.flag=FSOH_MARKED;
}


void gc_align_mark701(fsoc*c,gc701*p){
gc701*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store701)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T701*o=(void*)p;
((gc701*)o)->header.flag=FSOH_MARKED;
}
}
}
fsoc H701={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark701,
(void(*)(mch*))gc_sweep701},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc701))-1};


T701*new701(void){
gc701*n;
if(store_left701>1){
store_left701--;
n=store701++;
}
else if (gc_free701!=NULL){
n=gc_free701;
gc_free701=n->header.next;
}
else if(store_left701==1){
store_left701=0;
store_chunk701->header.state_type=FSO_USED_CHUNK;
n=store701++;
}
else if(fsocfl!=NULL) {
store_chunk701=fsocfl;
fsocfl=fsocfl->next;
*store_chunk701=H701;
store701=(void*)(&(store_chunk701->first_object));
store_left701=H701.count_minus_one;
n=store701++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk701=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk701));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk701;
}
*store_chunk701=H701;
store701=(void*)(&(store_chunk701->first_object));
store_left701=H701.count_minus_one;
n=store701++;
}
else{
gc_start();
if(NULL!=gc_free701){
n=gc_free701;
gc_free701=n->header.next;
}
else{
store_chunk701=new_fsoc();
*store_chunk701=H701;
store701=(void*)(&(store_chunk701->first_object));
store_left701=H701.count_minus_one;
n=store701++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M701;
return (void*)n;
}


void gc_sweep1707(fsoc*c){
gc1707*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store1707;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free1707;
gc_free1707=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free1707;
gc_free1707=flh.header.next;
}
}
}


void gc_mark1707(T1707*o){
if(((gc1707*)o)->header.flag==FSOH_UNMARKED){
((gc1707*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark1939((o->_storage/*4*/));
}}


void gc_align_mark1707(fsoc*c,gc1707*p){
gc1707*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store1707)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T1707*o=(void*)p;
((gc1707*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark1939((o->_storage/*4*/));
}
}
}
fsoc H1707={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark1707,
(void(*)(mch*))gc_sweep1707},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc1707))-1};


T1707*new1707(void){
gc1707*n;
if(store_left1707>1){
store_left1707--;
n=store1707++;
}
else if (gc_free1707!=NULL){
n=gc_free1707;
gc_free1707=n->header.next;
}
else if(store_left1707==1){
store_left1707=0;
store_chunk1707->header.state_type=FSO_USED_CHUNK;
n=store1707++;
}
else if(fsocfl!=NULL) {
store_chunk1707=fsocfl;
fsocfl=fsocfl->next;
*store_chunk1707=H1707;
store1707=(void*)(&(store_chunk1707->first_object));
store_left1707=H1707.count_minus_one;
n=store1707++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk1707=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk1707));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk1707;
}
*store_chunk1707=H1707;
store1707=(void*)(&(store_chunk1707->first_object));
store_left1707=H1707.count_minus_one;
n=store1707++;
}
else{
gc_start();
if(NULL!=gc_free1707){
n=gc_free1707;
gc_free1707=n->header.next;
}
else{
store_chunk1707=new_fsoc();
*store_chunk1707=H1707;
store1707=(void*)(&(store_chunk1707->first_object));
store_left1707=H1707.count_minus_one;
n=store1707++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M1707;
return (void*)n;
}


void gc_sweep1886(fsoc*c){
gc1886*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store1886;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free1886;
gc_free1886=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free1886;
gc_free1886=flh.header.next;
}
}
}


void gc_mark1886(T1886*o){
if(((gc1886*)o)->header.flag==FSOH_UNMARKED){
((gc1886*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark2135((o->_storage/*4*/));
}}


void gc_align_mark1886(fsoc*c,gc1886*p){
gc1886*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store1886)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T1886*o=(void*)p;
((gc1886*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark2135((o->_storage/*4*/));
}
}
}
fsoc H1886={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark1886,
(void(*)(mch*))gc_sweep1886},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc1886))-1};


T1886*new1886(void){
gc1886*n;
if(store_left1886>1){
store_left1886--;
n=store1886++;
}
else if (gc_free1886!=NULL){
n=gc_free1886;
gc_free1886=n->header.next;
}
else if(store_left1886==1){
store_left1886=0;
store_chunk1886->header.state_type=FSO_USED_CHUNK;
n=store1886++;
}
else if(fsocfl!=NULL) {
store_chunk1886=fsocfl;
fsocfl=fsocfl->next;
*store_chunk1886=H1886;
store1886=(void*)(&(store_chunk1886->first_object));
store_left1886=H1886.count_minus_one;
n=store1886++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk1886=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk1886));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk1886;
}
*store_chunk1886=H1886;
store1886=(void*)(&(store_chunk1886->first_object));
store_left1886=H1886.count_minus_one;
n=store1886++;
}
else{
gc_start();
if(NULL!=gc_free1886){
n=gc_free1886;
gc_free1886=n->header.next;
}
else{
store_chunk1886=new_fsoc();
*store_chunk1886=H1886;
store1886=(void*)(&(store_chunk1886->first_object));
store_left1886=H1886.count_minus_one;
n=store1886++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M1886;
return (void*)n;
}


void gc_mark9(T9 o){
(((rsoh*)o)-1)->header.magic_flag=RSOH_MARKED;
}


T9 new9(int size){
size=(size*sizeof(T3))+sizeof(rsoh);
if((size%sizeof(double))!=0)size+=(sizeof(double)-(size%sizeof(double)));
if (size<=(na_env9.store_left)){
rsoh*r=na_env9.store;
na_env9.store_left-=size;
if(na_env9.store_left>sizeof(rsoh)){
r->header.size=size;
na_env9.store=((rsoh*)(((char*)(na_env9.store))+size));
}
else {
r->header.size=size+na_env9.store_left;
na_env9.store_left=0;
}
(r->header.magic_flag)=RSOH_UNMARKED;
((void)memset((r+1),0,r->header.size-sizeof(rsoh)));
return (void*)(r+1);
}
return (void*)new_na(&na_env9,size);
}


void gc_sweep7(fsoc*c){
gc7*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store7;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free7;
gc_free7=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free7;
gc_free7=flh.header.next;
}
}
}


void gc_mark7(T7*o){
if(((gc7*)o)->header.flag==FSOH_UNMARKED){
((gc7*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark9((o->_storage/*4*/));
}}


void gc_align_mark7(fsoc*c,gc7*p){
gc7*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store7)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T7*o=(void*)p;
((gc7*)o)->header.flag=FSOH_MARKED;
if(NULL!=o->_storage/*4*/)gc_mark9((o->_storage/*4*/));
}
}
}
fsoc H7={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark7,
(void(*)(mch*))gc_sweep7},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc7))-1};


T7*new7(void){
gc7*n;
if(store_left7>1){
store_left7--;
n=store7++;
}
else if (gc_free7!=NULL){
n=gc_free7;
gc_free7=n->header.next;
}
else if(store_left7==1){
store_left7=0;
store_chunk7->header.state_type=FSO_USED_CHUNK;
n=store7++;
}
else if(fsocfl!=NULL) {
store_chunk7=fsocfl;
fsocfl=fsocfl->next;
*store_chunk7=H7;
store7=(void*)(&(store_chunk7->first_object));
store_left7=H7.count_minus_one;
n=store7++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk7=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk7));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk7;
}
*store_chunk7=H7;
store7=(void*)(&(store_chunk7->first_object));
store_left7=H7.count_minus_one;
n=store7++;
}
else{
gc_start();
if(NULL!=gc_free7){
n=gc_free7;
gc_free7=n->header.next;
}
else{
store_chunk7=new_fsoc();
*store_chunk7=H7;
store7=(void*)(&(store_chunk7->first_object));
store_left7=H7.count_minus_one;
n=store7++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M7;
return (void*)n;
}


void gc_sweep2074(fsoc*c){
gc2074*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store2074;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free2074;
gc_free2074=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free2074;
gc_free2074=flh.header.next;
}
}
}


void gc_mark2074(T2074*o){
((gc2074*)o)->header.flag=FSOH_MARKED;
}


void gc_align_mark2074(fsoc*c,gc2074*p){
gc2074*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store2074)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T2074*o=(void*)p;
((gc2074*)o)->header.flag=FSOH_MARKED;
}
}
}
fsoc H2074={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark2074,
(void(*)(mch*))gc_sweep2074},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc2074))-1};


T2074*new2074(void){
gc2074*n;
if(store_left2074>1){
store_left2074--;
n=store2074++;
}
else if (gc_free2074!=NULL){
n=gc_free2074;
gc_free2074=n->header.next;
}
else if(store_left2074==1){
store_left2074=0;
store_chunk2074->header.state_type=FSO_USED_CHUNK;
n=store2074++;
}
else if(fsocfl!=NULL) {
store_chunk2074=fsocfl;
fsocfl=fsocfl->next;
*store_chunk2074=H2074;
store2074=(void*)(&(store_chunk2074->first_object));
store_left2074=H2074.count_minus_one;
n=store2074++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk2074=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk2074));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk2074;
}
*store_chunk2074=H2074;
store2074=(void*)(&(store_chunk2074->first_object));
store_left2074=H2074.count_minus_one;
n=store2074++;
}
else{
gc_start();
if(NULL!=gc_free2074){
n=gc_free2074;
gc_free2074=n->header.next;
}
else{
store_chunk2074=new_fsoc();
*store_chunk2074=H2074;
store2074=(void*)(&(store_chunk2074->first_object));
store_left2074=H2074.count_minus_one;
n=store2074++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M2074;
return (void*)n;
}


void gc_sweep528(fsoc*c){
gc528*o1,*o2,*flt,flh;
o1=((void*)(&(c->first_object)));
if(c->header.state_type==FSO_STORE_CHUNK){
for(;o1<store528;o1++){
if((o1->header.flag)==FSOH_MARKED){
o1->header.flag=FSOH_UNMARKED;
}
else{
o1->header.next=gc_free528;
gc_free528=o1;
}
}
}
else{
int dead=1;
flh.header.next=NULL;
flt=&flh;
o2=o1+c->count_minus_one;
for(;o1<=o2;o2--){
if((o2->header.flag)==FSOH_MARKED){
o2->header.flag=FSOH_UNMARKED;
dead=0;}
else{
flt->header.next=o2;
flt=o2;
}
}
if (dead){
c->next=fsocfl;
fsocfl=c;
c->header.state_type=FSO_FREE_CHUNK;

}
else if(flh.header.next!=NULL){
flt->header.next=gc_free528;
gc_free528=flh.header.next;
}
}
}


void gc_mark528(T528*o){
((gc528*)o)->header.flag=FSOH_MARKED;
}


void gc_align_mark528(fsoc*c,gc528*p){
gc528*b=(void*)&(c->first_object);
if(c->header.state_type==FSO_STORE_CHUNK){
if(p>=store528)return;}
else{
if(p>(b+(c->count_minus_one)))return;}
if(p<b)return;
if(((((char*)p)-((char*)b))%sizeof(*b))==0){
if(p->header.flag==FSOH_UNMARKED){
T528*o=(void*)p;
((gc528*)o)->header.flag=FSOH_MARKED;
}
}
}
fsoc H528={{FSOC_SIZE,FSO_STORE_CHUNK,
(void(*)(mch*,void*))gc_align_mark528,
(void(*)(mch*))gc_sweep528},NULL,((FSOC_SIZE-sizeof(fsoc)+sizeof(double))/sizeof(gc528))-1};


T528*new528(void){
gc528*n;
if(store_left528>1){
store_left528--;
n=store528++;
}
else if (gc_free528!=NULL){
n=gc_free528;
gc_free528=n->header.next;
}
else if(store_left528==1){
store_left528=0;
store_chunk528->header.state_type=FSO_USED_CHUNK;
n=store528++;
}
else if(fsocfl!=NULL) {
store_chunk528=fsocfl;
fsocfl=fsocfl->next;
*store_chunk528=H528;
store528=(void*)(&(store_chunk528->first_object));
store_left528=H528.count_minus_one;
n=store528++;
}
else if(fsoc_count_ceil>fsoc_count) {
store_chunk528=malloc(FSOC_SIZE);
fsoc_count++;
{mch**p;
if(gcmt_used==gcmt_max){
gcmt_max<<=1;
gcmt=realloc(gcmt,(gcmt_max+1)*sizeof(void*));
}
for(p=gcmt+(gcmt_used++ -1);(p>=gcmt)&&(*p>((mch*)store_chunk528));p--)
*(p+1)=*p;
*(p+1)=(mch*)store_chunk528;
}
*store_chunk528=H528;
store528=(void*)(&(store_chunk528->first_object));
store_left528=H528.count_minus_one;
n=store528++;
}
else{
gc_start();
if(NULL!=gc_free528){
n=gc_free528;
gc_free528=n->header.next;
}
else{
store_chunk528=new_fsoc();
*store_chunk528=H528;
store528=(void*)(&(store_chunk528->first_object));
store_left528=H528.count_minus_one;
n=store528++;
}
}
n->header.flag=FSOH_UNMARKED;
n->object=M528;
return (void*)n;
}

