SdbGetIndex

UINT64 __stdcall SdbGetIndex(_DB *pdb, UINT16 tWhich, UINT16 tKey, UINT64 *lpdwFlags){
  unsigned int v7; 
  int v8; 
  __int64 v9; 
  _WORD *i; 
  __int64 v11; 
  VOID *v13; 
  VOID **v14; 
  VOID *v15; 
  VOID **v16; 
  PVOID Context; 

  Context = 0i64;
  v7 = 0;
  if( lpdwFlags )
    *(_DWORD *)lpdwFlags = 0;
  if( RtlRunOnceExecuteOnce(
         (_RTL_RUN_ONCE *)pdb + 167,
         (UINT64)InitOnceScanIndexes,
         (INT64 *)pdb,
         (_RTL_RUN_ONCE *)&Context,
         v13,
         v14,
         v15,
         v16) < 0 )
  {
    AslLogCallPrintf(
      1ui64,
      (INT8 *)"SdbGetIndex",
      0x427ui64,
      (INT8 *)"RtlRunOnceExecuteOnce failed for InitOnceScanIndexes [%x]");
  }
  else
  {
    v8 = 0;
    v9 = 0i64;
    for( i = (char *)Context + 4; *i; i += 20 )
    {
      if( *i == tWhich && i[1] == tKey )
      {
        v11 = 5i64 * v8;
        v7 = *((_DWORD *)Context + 2 * v11);
        if( lpdwFlags )
          *(_DWORD *)lpdwFlags = *((_DWORD *)Context + 2 * v11 + 8);
        return v7;
      }
      ++v8;
      if( ++v9 >= 32 )
        return v7;
    }
  }
  return v7;
}

Referenced by:

SdbFindFirstStringIndexedTag
SdbpFindFirstIndexedWildCardTag
SdbpSearchDB