qbs* FUNC_DEFLATE(qbs*_FUNC_DEFLATE_STRING_TEXT){
qbs *tqbs;
ptrszint tmp_long;
int32 tmp_fileno;
uint32 qbs_tmp_base=qbs_tmp_list_nexti;
uint8 *tmp_mem_static_pointer=mem_static_pointer;
uint32 tmp_cmem_sp=cmem_sp;
qbs *_FUNC_DEFLATE_STRING_DEFLATE=NULL;
if (!_FUNC_DEFLATE_STRING_DEFLATE)_FUNC_DEFLATE_STRING_DEFLATE=qbs_new(0,0);
qbs*oldstr1=NULL;
if(_FUNC_DEFLATE_STRING_TEXT->tmp||_FUNC_DEFLATE_STRING_TEXT->fixed||_FUNC_DEFLATE_STRING_TEXT->readonly){
oldstr1=_FUNC_DEFLATE_STRING_TEXT;
if (oldstr1->cmem_descriptor){
_FUNC_DEFLATE_STRING_TEXT=qbs_new_cmem(oldstr1->len,0);
}else{
_FUNC_DEFLATE_STRING_TEXT=qbs_new(oldstr1->len,0);
}
memcpy(_FUNC_DEFLATE_STRING_TEXT->chr,oldstr1->chr,oldstr1->len);
}
int32 *_FUNC_DEFLATE_LONG_FILESIZE=NULL;
if(_FUNC_DEFLATE_LONG_FILESIZE==NULL){
_FUNC_DEFLATE_LONG_FILESIZE=(int32*)mem_static_malloc(4);
*_FUNC_DEFLATE_LONG_FILESIZE=0;
}
int32 *_FUNC_DEFLATE_LONG_COMPSIZE=NULL;
if(_FUNC_DEFLATE_LONG_COMPSIZE==NULL){
_FUNC_DEFLATE_LONG_COMPSIZE=(int32*)mem_static_malloc(4);
*_FUNC_DEFLATE_LONG_COMPSIZE=0;
}
qbs *_FUNC_DEFLATE_STRING_RETURN=NULL;
if (!_FUNC_DEFLATE_STRING_RETURN)_FUNC_DEFLATE_STRING_RETURN=qbs_new(0,0);
byte_element_struct *byte_element_2=NULL;
if (!byte_element_2){
if ((mem_static_pointer+=12)<mem_static_limit) byte_element_2=(byte_element_struct*)(mem_static_pointer-12); else byte_element_2=(byte_element_struct*)mem_static_malloc(12);
}
float *_FUNC_DEFLATE_SINGLE_RESULT=NULL;
if(_FUNC_DEFLATE_SINGLE_RESULT==NULL){
_FUNC_DEFLATE_SINGLE_RESULT=(float*)mem_static_malloc(4);
*_FUNC_DEFLATE_SINGLE_RESULT=0;
}
mem_lock *sf_mem_lock;
new_mem_lock();
sf_mem_lock=mem_lock_tmp;
sf_mem_lock->type=3;
if (new_error) goto exit_subfunc;
*_FUNC_DEFLATE_LONG_FILESIZE=_FUNC_DEFLATE_STRING_TEXT->len;
qbs_cleanup(qbs_tmp_base,0);
*_FUNC_DEFLATE_LONG_COMPSIZE=( int32 )compressBound(*_FUNC_DEFLATE_LONG_FILESIZE);
qbs_set(_FUNC_DEFLATE_STRING_RETURN,func_space(*_FUNC_DEFLATE_LONG_COMPSIZE));
qbs_cleanup(qbs_tmp_base,0);
*_FUNC_DEFLATE_SINGLE_RESULT=( int32 )compress2((char*)(_FUNC_DEFLATE_STRING_RETURN)->chr,_FUNC_DEFLATE_LONG_COMPSIZE,(char*)(_FUNC_DEFLATE_STRING_TEXT)->chr,*_FUNC_DEFLATE_LONG_FILESIZE, 9 );
qbs_cleanup(qbs_tmp_base,0);
qbs_set(_FUNC_DEFLATE_STRING_DEFLATE,qbs_left(_FUNC_DEFLATE_STRING_RETURN,*_FUNC_DEFLATE_LONG_COMPSIZE));
qbs_cleanup(qbs_tmp_base,0);
exit_subfunc:;
free_mem_lock(sf_mem_lock);
if(oldstr1){
if(oldstr1->fixed)qbs_set(oldstr1,_FUNC_DEFLATE_STRING_TEXT);
qbs_free(_FUNC_DEFLATE_STRING_TEXT);
}
qbs_free(_FUNC_DEFLATE_STRING_RETURN);
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;
cmem_sp=tmp_cmem_sp;
qbs_maketmp(_FUNC_DEFLATE_STRING_DEFLATE);return _FUNC_DEFLATE_STRING_DEFLATE;
}