RtlpMuiRegGetLangInfoIndex

INT64 __fastcall RtlpMuiRegGetLangInfoIndex(INT64 a1, CHAR *a2){
  __int16 v3; 
  CHAR *v4; 
  __int64 v5; 
  unsigned __int16 v7; 
  unsigned __int16 v8; 
  char v9; 
  unsigned int v10; 
  if( !a1 )
    return 0xFFFFFFFFi64;
  if( !a2 )
    return 0xFFFFFFFFi64;
  v3 = *((_WORD *)a2 + 2);
  if( !v3 && *((__int16 *)a2 + 3) < 0 )
    return 0xFFFFFFFFi64;
  v4 = *(CHAR **)(a1 + 16);
  v5 = (a2 - v4) / 28;
  if( v5 < 0 || v5 >= *(unsigned __int16 *)(a1 + 6) )
  {
    v5 = 0i64;
    if( *(_WORD *)(a1 + 6) )
    {
      while( 1 )
      {
        if( *(_WORD *)v4 == *(_WORD *)a2
          && *((_WORD *)v4 + 2) == v3
          && *((_WORD *)v4 + 3) == *((_WORD *)a2 + 3)
          && *((_WORD *)v4 + 5) == *((_WORD *)a2 + 5) )
        {
          v7 = *((_WORD *)a2 + 4);
          v8 = *((_WORD *)v4 + 4);
          if( ((v8 ^ v7) & 0xC000) == 0 )
          {
            v9 = 1;
            v10 = 0;
            do
            {
              if( v10 >= 4 )
                break;
              if( (((unsigned __int16)(v8 ^ v7) >> (2 * v10)) & 3) == 0 )
              {
                v9 = 1;
                if( *(_WORD *)&v4[2 * v10 + 12] == *(_WORD *)&a2[2 * v10 + 12] )
                  continue;
              }
              v9 = 0;
              ++v10;
            }
            while( v9 );
            if( v9 )
              break;
          }
        }
        ++v5;
        v4 += 28;
        if( v5 >= *(unsigned __int16 *)(a1 + 6) )
          return 0xFFFFFFFFi64;
      }
      return(unsigned __int16)v5;
    }
    return 0xFFFFFFFFi64;
  }
  return(unsigned __int16)v5;
}

Referenced by:

RtlpMuiRegGetOrAddLangInfo