RaspMapCharacterCodeToGlyphIndex

NTSTATUS __stdcall RaspMapCharacterCodeToGlyphIndex(_MAPPING_TABLE *MappingTable, WCHAR Character, UINT16 *GlyphIndex){
  NTSTATUS v3; 
  unsigned int v5; 
  unsigned int i; 
  __int64 v8; 
  unsigned int v9; 
  __int16 v10; 
  __int64 v12; 

  v3 = 0;
  v5 = *MappingTable;
  for( i = 0; i < v5; ++i )
  {
    if( *(_WORD *)(*((_QWORD *)MappingTable + 2) + 2i64 * i) <= Character
      && Character <= *(_WORD *)(*((_QWORD *)MappingTable + 3) + 2i64 * i) )
    {
      break;
    }
  }
  if( i == v5 )
    return -1073741823;
  v8 = *((_QWORD *)MappingTable + 5);
  v9 = *(unsigned __int16 *)(v8 + 2i64 * i);
  if( (_WORD)v9 )
  {
    v12 = Character + i + (v9 >> 1) - *(unsigned __int16 *)(*((_QWORD *)MappingTable + 2) + 2i64 * i);
    Character = *(_WORD *)(*((_QWORD *)MappingTable + 4) + 2i64 * i);
    v10 = *(_WORD *)(v8 + 2 * v12);
  }
  else
  {
    v10 = *(_WORD *)(*((_QWORD *)MappingTable + 4) + 2i64 * i);
  }
  *GlyphIndex = Character + v10;
  return v3;
}

Referenced by:

RaspGetUnscaledGlyphData