RaspGetCacheEntry

VOID __stdcall RaspGetCacheEntry(
        _BITMAP_CACHE *Cache,
        WCHAR Character,
        UINT64 PointSize,
        UINT64 FontIndex,
        VOID *FontHandle,
        _CACHED_BITMAP **Match){
  __int64 *v6; 
  _CACHED_BITMAP *v7; 
  __int64 *v8; 
  __int64 **v9; 
  __int64 *v10; 

  v6 = *(__int64 **)Cache;
  v7 = 0i64;
  if( *(_BITMAP_CACHE **)Cache != Cache )
  {
    while( *((_WORD *)v6 + 30) != Character
         || *(__int64 *)((char *)v6 + 36) != __PAIR64__(PointSize, FontIndex)
         || (VOID *)v6[3] != FontHandle )
    {
      v6 = (__int64 *)*v6;
      if( v6 == (__int64 *)Cache )
        goto LABEL_11;
    }
    v8 = (__int64 *)*v6;
    v7 = (_CACHED_BITMAP *)v6;
    if( *(__int64 **)(*v6 + 8) != v6
      || (v9 = (__int64 **)v6[1], *v9 != v6)
      || (*v9 = v8, v8[1] = (__int64)v9, v10 = *(__int64 **)Cache, *(_BITMAP_CACHE **)(*(_QWORD *)Cache + 8i64) != Cache) )
    {
      __fastfail(3u);
    }
    *v6 = (__int64)v10;
    v6[1] = (__int64)Cache;
    v10[1] = (__int64)v6;
    *(_QWORD *)Cache = v6;
  }
LABEL_11:
  *Match = v7;
}

Referenced by:

BgpRasPrintGlyph
RaspGetXExtent