RaspGetUnscaledGlyphData

INT64 __fastcall RaspGetUnscaledGlyphData(INT64 rcx0, UINT16 a2, INT64 *a3, INT64 *a4, INT64 Workspace){
  UINT64 *v7; 
  __int64 v8; 
  unsigned __int16 v10; 
  int v11; 
  _QWORD *v12; 
  int GlyphData; 
  int Bearings; 
  INT64 a1[2]; 
  INT64 v17; 
  INT64 v18; 
  LOWORD(v17) = 0;
  v7 = *(UINT64 **)(rcx0 + 24);
  v8 = 0i64;
  LODWORD(v18) = 0;
  a1[0] = 0i64;
  v10 = 0;
  if( (int)RaspMapCharacterCodeToGlyphIndex(v7, a2, &v17) >= 0 )
    v10 = v17;
  v11 = RaspMapGlyphIndexToLocation(rcx0, v10, &v18);
  v12 = (_QWORD *)Workspace;
  if( v11 >= 0 || (v10 = 0, Bearings = RaspMapGlyphIndexToLocation(rcx0, 0, &v18), Bearings >= 0) )
  {
    LOWORD(v17) = v10;
    GlyphData = RaspLoadGlyphData(rcx0, (unsigned int)v18, (INT64)&v17, (INT64)a1, (INT64)v12);
    v8 = a1[0];
    Bearings = GlyphData;
    if( GlyphData >= 0 )
    {
      Bearings = RaspConvertDeltas(a1[0]);
      if( Bearings >= 0 )
        Bearings = RaspLoadBearings(rcx0, (unsigned __int16)v17, v8, (int *)a4);
    }
  }
  if( a3 )
  {
    *a3 = v8;
    v8 = 0i64;
  }
  if( v8 )
    RaspFreeMemory(v8, v12);
  return(unsigned int)Bearings;
}

Referenced by:

RaspRasterize