RaspRasterize

INT64 __fastcall RaspRasterize(
        INT64 a1,
        UINT16 a2,
        INT64 a3,
        INT64 a4,
        UINT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 *a8,
        INT64 *a9){
  __int64 *v9; 
  INT64 v11; 
  int UnscaledGlyphData; 
  int v13; 
  __int64 v14; 
  int v15; 
  INT64 v16; 
  int v17; 
  INT64 v19; 
  INT64 a1a; 
  INT64 v21; 
  INT64 v22; 
  v9 = a9;
  LODWORD(v22) = 0;
  v19 = 0i64;
  v11 = *(_QWORD *)(a1 + 8);
  a1a = 0i64;
  v21 = 0i64;
  UnscaledGlyphData = RaspGetUnscaledGlyphData(v11, a2, &v21, &v22, (INT64)a9);
  if( UnscaledGlyphData >= 0 )
  {
    UnscaledGlyphData = RaspScaleCoordinates(a1, v21);
    if( UnscaledGlyphData >= 0 )
    {
      v13 = RaspCreatePointList(v21, &a1a, v9);
      v16 = a1a;
      UnscaledGlyphData = v13;
      if( v13 >= 0 )
      {
        UnscaledGlyphData = RaspScanConvert(v21, a1a, v14, v15, a5, (__int64 **)&v19, (int *)a8, v9);
        if( UnscaledGlyphData < 0 )
        {
          if( v19 )
            RaspFreeMemory(v19, v9);
        }
        else
        {
          v17 = *(_DWORD *)(v19 + 4) >> 2;
          *(_QWORD *)a6 = v19;
          *(_DWORD *)a7 = v17;
        }
      }
      if( v16 )
        RaspFreeMemory(v16, v9);
    }
  }
  if( v21 )
    RaspFreeMemory(v21, v9);
  return(unsigned int)UnscaledGlyphData;
}

Referenced by:

BgpRasPrintGlyph
RaspGetXExtent