static inline int array_roll(array_t* array,int index_to,int index_from,int count)

{

    char* buf;

    char* from;

    char* to;

    int is;



    if(!array ||

	    index_to<0 || index_to>=array->next ||

	    index_from<0 || index_from>=array->next)

	return -1;



    if(index_to==index_from)

	return 0;



    is=array->item_size;

    from=array->pointer+index_from*is;

    to=array->pointer+index_to*is;

    buf=g_malloc(is*count);

    memcpy(buf,from,is*count);



    if(index_to<index_from)

	memmove(to+is*count,to,from-to);

    else

	memmove(from,from+is*count,to-from);



    memcpy(to,buf,is*count);



    free(buf);



    return 0;

}

static inline int array_roll(array_t* array,int index_to,int index_from,int count)

{

    char* buf;

    char* from;

    char* to;

    int is;



    if(!array ||

	    index_to<0 || index_to>=array->next ||

	    index_from<0 || index_from>=array->next)

	return -1;



    if(index_to==index_from)

	return 0;



    is=array->item_size;

    from=array->pointer+index_from*is;

    to=array->pointer+index_to*is;

    buf=g_malloc(is*count);

    memcpy(buf,from,is*count);



    if(index_to<index_from)

	memmove(to+is*count,to,from-to);

    else

	memmove(from,from+is*count,to-from);



    memcpy(to,buf,is*count);



    free(buf);



    return 0;

}

    free(buf);
static inline int FUNC_0(array_t* VAR_0,int VAR_1,int VAR_2,int VAR_3)

{

    char* VAR_4;

    char* VAR_5;

    char* VAR_6;

    int VAR_7;



    if(!VAR_0 ||

	    VAR_1<0 || VAR_1>=VAR_0->next ||

	    VAR_2<0 || VAR_2>=VAR_0->next)

	return -1;



    if(VAR_1==VAR_2)

	return 0;



    VAR_7=VAR_0->item_size;

    VAR_5=VAR_0->pointer+VAR_2*VAR_7;

    VAR_6=VAR_0->pointer+VAR_1*VAR_7;

    VAR_4=g_malloc(VAR_7*VAR_3);

    memcpy(VAR_4,VAR_5,VAR_7*VAR_3);



    if(VAR_1<VAR_2)

	memmove(VAR_6+VAR_7*VAR_3,VAR_6,VAR_5-VAR_6);

    else

	memmove(VAR_5,VAR_5+VAR_7*VAR_3,VAR_6-VAR_5);



    memcpy(VAR_6,VAR_4,VAR_7*VAR_3);



    free(VAR_4);



    return 0;

}

static inline int FUNC_0(array_t* VAR_0,int VAR_1,int VAR_2,int VAR_3)
{ char* VAR_4; char* VAR_5; char* VAR_6; int VAR_7; if(!VAR_0 ||
VAR_1<0 || VAR_1>=VAR_0->next ||
VAR_2<0 || VAR_2>=VAR_0->next)
return -1; if(VAR_1==VAR_2)
return 0; VAR_7=VAR_0->item_size; VAR_5=VAR_0->pointer+VAR_2*VAR_7; VAR_6=VAR_0->pointer+VAR_1*VAR_7; VAR_4=g_malloc(VAR_7*VAR_3); memcpy(VAR_4,VAR_5,VAR_7*VAR_3); if(VAR_1<VAR_2)
memmove(VAR_6+VAR_7*VAR_3,VAR_6,VAR_5-VAR_6); else
memmove(VAR_5,VAR_5+VAR_7*VAR_3,VAR_6-VAR_5); memcpy(VAR_6,VAR_4,VAR_7*VAR_3); free(VAR_4); return 0; }