#line 23 "utilities/s-buffer/simplebuffer.bm"
int16 FUNC_CREATEBUF(){
#line 23 "utilities/s-buffer/simplebuffer.bm"
qbs *tqbs;
#line 23 "utilities/s-buffer/simplebuffer.bm"
ptrszint tmp_long;
#line 23 "utilities/s-buffer/simplebuffer.bm"
int32 tmp_fileno;
#line 23 "utilities/s-buffer/simplebuffer.bm"
uint32 qbs_tmp_base=qbs_tmp_list_nexti;
#line 23 "utilities/s-buffer/simplebuffer.bm"
uint8 *tmp_mem_static_pointer=mem_static_pointer;
#line 23 "utilities/s-buffer/simplebuffer.bm"
uint32 tmp_cmem_sp=cmem_sp;
#line 23 "utilities/s-buffer/simplebuffer.bm"
#include "data206.txt"
#line 23 "utilities/s-buffer/simplebuffer.bm"
mem_lock *sf_mem_lock;
#line 23 "utilities/s-buffer/simplebuffer.bm"
new_mem_lock();
#line 23 "utilities/s-buffer/simplebuffer.bm"
sf_mem_lock=mem_lock_tmp;
#line 23 "utilities/s-buffer/simplebuffer.bm"
sf_mem_lock->type=3;
#line 23 "utilities/s-buffer/simplebuffer.bm"
libqb_check_stack();
#line 23 "utilities/s-buffer/simplebuffer.bm"
if (is_error_pending()) goto exit_subfunc;
#line 25 "utilities/s-buffer/simplebuffer.bm"
do{
#line 25 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,25,"simplebuffer.bm");}while(r);
#line 27 "utilities/s-buffer/simplebuffer.bm"
do{
#line 27 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_AUB=func_ubound(__ARRAY_STRING_SIMPLEBUFFER_ARRAY,1,1);
#line 27 "utilities/s-buffer/simplebuffer.bm"
qbs_cleanup(qbs_tmp_base,0);
#line 27 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,27,"simplebuffer.bm");}while(r);
#line 28 "utilities/s-buffer/simplebuffer.bm"
do{
#line 28 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_BUF=*__LONG_SIMPLEBUFFER_FREEHINT;
#line 28 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,28,"simplebuffer.bm");}while(r);
#line 28 "utilities/s-buffer/simplebuffer.bm"
do{
#line 28 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_INTEGER_CREATEBUF= -1ll ;
#line 28 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,28,"simplebuffer.bm");}while(r);
#line 29 "utilities/s-buffer/simplebuffer.bm"
S_39855:;
#line 29 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_BUF< 0 ))||is_error_pending()){
#line 29 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,29,"simplebuffer.bm");if(r)goto S_39855;}
#line 29 "utilities/s-buffer/simplebuffer.bm"
do{
#line 29 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_BUF= 0 ;
#line 29 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,29,"simplebuffer.bm");}while(r);
#line 29 "utilities/s-buffer/simplebuffer.bm"
}
#line 30 "utilities/s-buffer/simplebuffer.bm"
S_39858:;
#line 30 "utilities/s-buffer/simplebuffer.bm"
while((-(*_FUNC_CREATEBUF_LONG_BUF<*_FUNC_CREATEBUF_LONG_AUB))||is_error_pending()){
#line 30 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,30,"simplebuffer.bm");if(r)goto S_39858;}
#line 31 "utilities/s-buffer/simplebuffer.bm"
S_39859:;
#line 31 "utilities/s-buffer/simplebuffer.bm"
if ((qbs_cleanup(qbs_tmp_base,-((((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[array_check((*_FUNC_CREATEBUF_LONG_BUF+ 1 )-__ARRAY_STRING_SIMPLEBUFFER_ARRAY[4],__ARRAY_STRING_SIMPLEBUFFER_ARRAY[5])])->len== 0 )))||is_error_pending()){
#line 31 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,31,"simplebuffer.bm");if(r)goto S_39859;}
#line 31 "utilities/s-buffer/simplebuffer.bm"
do{
#line 31 "utilities/s-buffer/simplebuffer.bm"
goto ww_exit_3944;
#line 31 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,31,"simplebuffer.bm");}while(r);
#line 31 "utilities/s-buffer/simplebuffer.bm"
}
#line 32 "utilities/s-buffer/simplebuffer.bm"
do{
#line 32 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_BUF=*_FUNC_CREATEBUF_LONG_BUF+ 2ll ;
#line 32 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,32,"simplebuffer.bm");}while(r);
#line 33 "utilities/s-buffer/simplebuffer.bm"
S_39863:;
#line 33 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_BUF>=( 32765 * 2ll )))||is_error_pending()){
#line 33 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,33,"simplebuffer.bm");if(r)goto S_39863;}
#line 33 "utilities/s-buffer/simplebuffer.bm"
do{
#line 33 "utilities/s-buffer/simplebuffer.bm"
goto exit_subfunc;
#line 33 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,33,"simplebuffer.bm");}while(r);
#line 33 "utilities/s-buffer/simplebuffer.bm"
}
#line 34 "utilities/s-buffer/simplebuffer.bm"
ww_continue_3944:;
#line 34 "utilities/s-buffer/simplebuffer.bm"
}
#line 34 "utilities/s-buffer/simplebuffer.bm"
ww_exit_3944:;
#line 36 "utilities/s-buffer/simplebuffer.bm"
do{
#line 36 "utilities/s-buffer/simplebuffer.bm"
*__LONG_SIMPLEBUFFER_FREEHINT=*_FUNC_CREATEBUF_LONG_BUF+ 2ll ;
#line 36 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,36,"simplebuffer.bm");}while(r);
#line 37 "utilities/s-buffer/simplebuffer.bm"
S_39868:;
#line 37 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_BUF>*__LONG_SIMPLEBUFFER_TOPUSED))||is_error_pending()){
#line 37 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,37,"simplebuffer.bm");if(r)goto S_39868;}
#line 37 "utilities/s-buffer/simplebuffer.bm"
do{
#line 37 "utilities/s-buffer/simplebuffer.bm"
*__LONG_SIMPLEBUFFER_TOPUSED=*_FUNC_CREATEBUF_LONG_BUF;
#line 37 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,37,"simplebuffer.bm");}while(r);
#line 37 "utilities/s-buffer/simplebuffer.bm"
}
#line 40 "utilities/s-buffer/simplebuffer.bm"
S_39871:;
#line 40 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_AUB<(*_FUNC_CREATEBUF_LONG_BUF+ 2ll - 1 )))||is_error_pending()){
#line 40 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,40,"simplebuffer.bm");if(r)goto S_39871;}
#line 44 "utilities/s-buffer/simplebuffer.bm"
do{
#line 44 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_BUFS=qb_safe_idiv((*_FUNC_CREATEBUF_LONG_AUB+ 1 ), 2ll );
#line 44 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,44,"simplebuffer.bm");}while(r);
#line 45 "utilities/s-buffer/simplebuffer.bm"
do{
#line 45 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_NEWBUFS=*_FUNC_CREATEBUF_LONG_BUFS+(qb_safe_idiv(*_FUNC_CREATEBUF_LONG_BUFS, 2 ));
#line 45 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,45,"simplebuffer.bm");}while(r);
#line 46 "utilities/s-buffer/simplebuffer.bm"
S_39874:;
#line 46 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_NEWBUFS<((qb_safe_idiv(*_FUNC_CREATEBUF_LONG_BUF, 2ll ))+ 100 )))||is_error_pending()){
#line 46 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,46,"simplebuffer.bm");if(r)goto S_39874;}
#line 46 "utilities/s-buffer/simplebuffer.bm"
do{
#line 46 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_NEWBUFS=(qb_safe_idiv(*_FUNC_CREATEBUF_LONG_BUF, 2ll ))+ 100 ;
#line 46 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,46,"simplebuffer.bm");}while(r);
#line 46 "utilities/s-buffer/simplebuffer.bm"
}
#line 47 "utilities/s-buffer/simplebuffer.bm"
S_39877:;
#line 47 "utilities/s-buffer/simplebuffer.bm"
if ((-(*_FUNC_CREATEBUF_LONG_NEWBUFS> 32766 ))||is_error_pending()){
#line 47 "utilities/s-buffer/simplebuffer.bm"
if(qbevent){evnt(28805,47,"simplebuffer.bm");if(r)goto S_39877;}
#line 47 "utilities/s-buffer/simplebuffer.bm"
do{
#line 47 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_LONG_NEWBUFS= 32766 ;
#line 47 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,47,"simplebuffer.bm");}while(r);
#line 47 "utilities/s-buffer/simplebuffer.bm"
}
#line 48 "utilities/s-buffer/simplebuffer.bm"
do{
if (__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]&2){
error(10);
}else{
static int64 alloc_new_desc[8];
static uint64 alloc_req_elems;
static uint64 alloc_req_bytes;
static uint64 alloc_dim_value;
static uint64 alloc_bytes_per_element;
((mem_lock*)((ptrszint*)__ARRAY_STRING_SIMPLEBUFFER_ARRAY)[8])->id=(++mem_lock_id);
static ptrszint preserve_old_ptr;
static ptrszint preserve_old_flags;
static uint64 preserve_old_total;
static uint64 preserve_new_total;
static uint64 preserve_copy_count;
static ptrszint preserve_new_ptr;
if (__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]&1){
preserve_old_ptr=__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0];
preserve_old_flags=__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2];
preserve_old_total=__ARRAY_STRING_SIMPLEBUFFER_ARRAY[5];
}else{
preserve_old_total=0; preserve_old_ptr=0; preserve_old_flags=0; preserve_new_total=0; preserve_copy_count=0;
}
alloc_new_desc[4]= 0 ;
alloc_new_desc[5]=((*_FUNC_CREATEBUF_LONG_NEWBUFS* 2ll )-( 1 ))-alloc_new_desc[4]+1;
if (alloc_new_desc[5]<=0) error(5);
alloc_new_desc[6]=1;
alloc_req_elems=1;
alloc_bytes_per_element=(uint64)(8);
if (!alloc_bytes_per_element) error(257);
if (((int64)((ptrszint)alloc_new_desc[4]))!=alloc_new_desc[4]) error(257);
if (alloc_new_desc[5]<0) error(257);
if (((int64)((ptrszint)alloc_new_desc[5]))!=alloc_new_desc[5]) error(257);
if (alloc_new_desc[6]<0) error(257);
if (((int64)((ptrszint)alloc_new_desc[6]))!=alloc_new_desc[6]) error(257);
alloc_dim_value=(uint64)alloc_new_desc[5];
if (alloc_dim_value){
if (alloc_req_elems>(18446744073709551615ull/alloc_dim_value)) error(257);
alloc_req_elems*=alloc_dim_value;
}
if (alloc_req_elems>(18446744073709551615ull/alloc_bytes_per_element)) error(257);
alloc_req_bytes=alloc_req_elems*alloc_bytes_per_element;
if (((uint64)((ptrszint)alloc_req_elems))!=alloc_req_elems) error(257);
if (((uint64)((size_t)alloc_req_bytes))!=alloc_req_bytes) error(257);
preserve_new_total=alloc_req_elems;
preserve_copy_count=preserve_old_total;
if (preserve_new_total<preserve_copy_count) preserve_copy_count=preserve_new_total;
if (preserve_old_total){
preserve_new_ptr=(ptrszint)malloc((size_t)alloc_req_bytes);
if (!preserve_new_ptr) error(257);
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]=preserve_new_ptr;
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]|=1;
tmp_long=(ptrszint)alloc_req_elems;
if (__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]&4){
while(tmp_long--) ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long]=qbs_new_cmem(0,0);
}else{
while(tmp_long--) ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long]=qbs_new(0,0);
}
tmp_long=preserve_copy_count;
while(tmp_long--){
qbs_set(((qbs**)(preserve_new_ptr))[tmp_long],((qbs**)(preserve_old_ptr))[tmp_long]);
}
tmp_long=preserve_old_total;
while(tmp_long--) qbs_free(((qbs**)(preserve_old_ptr))[tmp_long]);
free((void*)(preserve_old_ptr));
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]=preserve_new_ptr;
}else{
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]=(ptrszint)malloc((size_t)alloc_req_bytes);
if (!__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]) error(257);
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]|=1;
tmp_long=(ptrszint)alloc_req_elems;
if (__ARRAY_STRING_SIMPLEBUFFER_ARRAY[2]&4){
while(tmp_long--) ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long]=qbs_new_cmem(0,0);
}else{
while(tmp_long--) ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long]=qbs_new(0,0);
}
}
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[4]=alloc_new_desc[4];
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[5]=alloc_new_desc[5];
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[6]=alloc_new_desc[6];
__ARRAY_STRING_SIMPLEBUFFER_ARRAY[7]=alloc_new_desc[7];
}
#line 48 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,48,"simplebuffer.bm");}while(r);
#line 49 "utilities/s-buffer/simplebuffer.bm"
}
#line 51 "utilities/s-buffer/simplebuffer.bm"
do{
#line 51 "utilities/s-buffer/simplebuffer.bm"
tmp_long=array_check((*_FUNC_CREATEBUF_LONG_BUF+ 0 )-__ARRAY_STRING_SIMPLEBUFFER_ARRAY[4],__ARRAY_STRING_SIMPLEBUFFER_ARRAY[5]);
#line 51 "utilities/s-buffer/simplebuffer.bm"
if (!is_error_pending()) qbs_set( ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long],func_space( 16384 ));
#line 51 "utilities/s-buffer/simplebuffer.bm"
qbs_cleanup(qbs_tmp_base,0);
#line 51 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,51,"simplebuffer.bm");}while(r);
#line 52 "utilities/s-buffer/simplebuffer.bm"
do{
#line 52 "utilities/s-buffer/simplebuffer.bm"
tmp_long=array_check((*_FUNC_CREATEBUF_LONG_BUF+ 1 )-__ARRAY_STRING_SIMPLEBUFFER_ARRAY[4],__ARRAY_STRING_SIMPLEBUFFER_ARRAY[5]);
#line 52 "utilities/s-buffer/simplebuffer.bm"
if (!is_error_pending()) qbs_set( ((qbs**)(__ARRAY_STRING_SIMPLEBUFFER_ARRAY[0]))[tmp_long],qbs_add(qbs_add(qbs_add(l2string( 1 ),l2string( 0 )),qbs_new_txt_len("EolU",4)),l2string( -1 )));
#line 52 "utilities/s-buffer/simplebuffer.bm"
qbs_cleanup(qbs_tmp_base,0);
#line 52 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,52,"simplebuffer.bm");}while(r);
#line 54 "utilities/s-buffer/simplebuffer.bm"
do{
#line 54 "utilities/s-buffer/simplebuffer.bm"
*_FUNC_CREATEBUF_INTEGER_CREATEBUF=qb_safe_idiv(*_FUNC_CREATEBUF_LONG_BUF, 2ll );
#line 54 "utilities/s-buffer/simplebuffer.bm"
if(!qbevent)break;evnt(28805,54,"simplebuffer.bm");}while(r);
#line 55 "utilities/s-buffer/simplebuffer.bm"
exit_subfunc:;
#line 55 "utilities/s-buffer/simplebuffer.bm"
free_mem_lock(sf_mem_lock);
#line 55 "utilities/s-buffer/simplebuffer.bm"
#include "free206.txt"
#line 55 "utilities/s-buffer/simplebuffer.bm"
if ((tmp_mem_static_pointer>=mem_static)&&(tmp_mem_static_pointer<=mem_static_limit)) mem_static_pointer=tmp_mem_static_pointer; else mem_static_pointer=mem_static;
#line 55 "utilities/s-buffer/simplebuffer.bm"
cmem_sp=tmp_cmem_sp;
#line 55 "utilities/s-buffer/simplebuffer.bm"
return *_FUNC_CREATEBUF_INTEGER_CREATEBUF;
#line 55 "utilities/s-buffer/simplebuffer.bm"
}
