SdbpFindMatchingName

UINT64 __stdcall SdbpFindMatchingName(_DB *pdb, UINT64 tiStart, _FIND_INFO *pFindInfo){
  unsigned int NextIndexedRecord; 
  unsigned int FirstTag; 
  WCHAR *StringTagPtr; 
  bool v8; 
  int v10; 

  NextIndexedRecord = tiStart;
  if( !(_DWORD)tiStart )
    return NextIndexedRecord;
  while( 1 )
  {
    FirstTag = SdbFindFirstTag(pdb, NextIndexedRecord, *((_WORD *)pFindInfo + 6));
    if( !FirstTag )
      break;
    StringTagPtr = SdbGetStringTagPtr(pdb, FirstTag);
    if( !StringTagPtr )
    {
      AslLogCallPrintf(
        1ui64,
        (INT8 *)"SdbpFindMatchingName",
        0x10Aui64,
        (INT8 *)"Can't get the name string for tagid 0x%x");
      return 0i64;
    }
    if( (pFindInfo[5] & 1) != 0 )
    {
      v10 = wcsicmp(*((const wchar_t **)pFindInfo + 4), StringTagPtr);
      v8 = v10 == 0;
      if( v10 < 0 )
        return 0i64;
    }
    else
    {
      v8 = wcsicmp(StringTagPtr, *((const wchar_t **)pFindInfo + 4)) == 0;
    }
    if( !v8 )
    {
      NextIndexedRecord = SdbpGetNextIndexedRecord(pdb, (unsigned int)*pFindInfo, pFindInfo);
      if( NextIndexedRecord )
        continue;
    }
    return NextIndexedRecord;
  }
  AslLogCallPrintf(
    1ui64,
    (INT8 *)"SdbpFindMatchingName",
    0x100ui64,
    (INT8 *)"The tag 0x%x was not found under tag 0x%x");
  return 0i64;
}

Referenced by:

SdbFindFirstStringIndexedTag
SdbFindNextStringIndexedTag