RaspDestroySegmentList
VOID __stdcall RaspDestroySegmentList(
_GLYPH_SEGMENT *SegmentList,
UINT64 SegmentCount,
_BG_RASTERIZER_WORKSPACE *Workspace){
int v3;
unsigned int v5;
_GLYPH_SEGMENT *v7;
VOID **v8;
char v9;
VOID *v10;
VOID *v11;
v3 = 0;
v5 = SegmentCount;
if( (_DWORD)SegmentCount )
{
v7 = SegmentList + 6;
while( 1 )
{
v8 = (VOID **)(v7 - 6);
if( v7 == (_GLYPH_SEGMENT *)24 )
goto LABEL_8;
v9 = *(_BYTE *)v7;
if( *(_BYTE *)v7 == 3 )
{
v9 = 3;
if( *v8 )
{
RaspFreeMemory(*v8, Workspace);
v9 = *(_BYTE *)v7;
}
}
if( v9 != 4 )
goto LABEL_6;
v11 = (VOID *)*((_QWORD *)v7 - 1);
if( v11 )
break;
LABEL_7:
v7 = (_GLYPH_SEGMENT *)((char *)v7 + 25);
if( ++v3 >= v5 )
goto LABEL_8;
}
RaspFreeMemory(v11, Workspace);
v9 = *(_BYTE *)v7;
LABEL_6:
if( v9 == 5 )
{
if( *v8 )
RaspFreeMemory(*v8, Workspace);
v10 = (VOID *)*((_QWORD *)v7 - 1);
if( v10 )
RaspFreeMemory(v10, Workspace);
}
goto LABEL_7;
}
LABEL_8:
RaspFreeMemory(SegmentList, Workspace);
}Referenced by:
RaspCreateSegmentList
RaspScanConvert