SdbpFindNextNamedTag

UINT64 __stdcall SdbpFindNextNamedTag(_DB *pdb, UINT64 tiParent, UINT64 tiPrev, UINT16 tName, const WCHAR *pszName){
  unsigned int v5; 
  unsigned int v7; 
  unsigned int v9; 
  UINT16 TagFromTagID; 
  unsigned int FirstTag; 
  WCHAR *StringTagPtr; 
  unsigned int NextChild; 

  v5 = tiParent;
  v7 = tiPrev;
  v9 = 0;
  TagFromTagID = SdbGetTagFromTagID(pdb, (unsigned int)tiPrev);
  if( TagFromTagID )
  {
    while( 1 )
    {
      NextChild = SdbGetNextChild(pdb, v5, v7);
      v7 = NextChild;
      if( !NextChild )
        break;
      if( SdbGetTagFromTagID(pdb, NextChild) == TagFromTagID )
      {
        FirstTag = SdbFindFirstTag(pdb, v7, tName);
        if( FirstTag )
        {
          StringTagPtr = SdbGetStringTagPtr(pdb, FirstTag);
          if( !StringTagPtr )
          {
            AslLogCallPrintf(
              1ui64,
              (INT8 *)"SdbpFindNextNamedTag",
              0xD7ui64,
              (INT8 *)"Can't get the name string tagid 0x%lx");
            return v9;
          }
          if( !wcsicmp(pszName, StringTagPtr) )
            return v7;
        }
      }
    }
    return v9;
  }
  else
  {
    AslLogCallPrintf(1ui64, (INT8 *)"SdbpFindNextNamedTag", 0xC6ui64, (INT8 *)"Invalid tagid 0x%lx");
    return 0i64;
  }
}

Referenced by:

SdbpSearchDB