RaspDestroySegmentList

INT64 __fastcall RaspDestroySegmentList(__int64 a1, unsigned int a2, _QWORD *a3){
  int v3; 
  char *i; 
  INT64 *v8; 
  char v9; 
  INT64 v11; 
  INT64 v12; 
  v3 = 0;
  if( a2 )
  {
    for( i = (char *)(a1 + 24); ; i += 25 )
    {
      v8 = (INT64 *)(i - 24);
      if( i == (char *)24 )
        return RaspFreeMemory(a1, a3);
      v9 = *i;
      if( *i == 3 )
      {
        v9 = 3;
        if( *v8 )
        {
          RaspFreeMemory(*v8, a3);
          v9 = *i;
        }
      }
      if( v9 != 4 )
        goto LABEL_6;
      v12 = *((_QWORD *)i - 1);
      if( v12 )
        break;
LABEL_7:
      if( ++v3 >= a2 )
        return RaspFreeMemory(a1, a3);
    }
    RaspFreeMemory(v12, a3);
    v9 = *i;
LABEL_6:
    if( v9 == 5 )
    {
      if( *v8 )
        RaspFreeMemory(*v8, a3);
      v11 = *((_QWORD *)i - 1);
      if( v11 )
        RaspFreeMemory(v11, a3);
    }
    goto LABEL_7;
  }
  return RaspFreeMemory(a1, a3);
}

Referenced by:

RaspCreateSegmentList
RaspScanConvert