SdbpFindNextNamedTag

__int64 __fastcall SdbpFindNextNamedTag(void *a1, unsigned int a2, unsigned int a3, __int16 a4, wchar_t *Str1){
  unsigned int v7; 
  unsigned int v9; 
  __int16 TagFromTagID; 
  unsigned int FirstTag; 
  int v13; 
  const wchar_t *StringTagPtr; 
  unsigned int NextChild; 
  v7 = a3;
  v9 = 0;
  TagFromTagID = SdbGetTagFromTagID((__int64)a1, a3);
  if( TagFromTagID )
  {
    while( 1 )
    {
      NextChild = SdbGetNextChild((__int64)a1, a2, v7);
      v7 = NextChild;
      if( !NextChild )
        break;
      if( (unsigned __int16)SdbGetTagFromTagID((__int64)a1, NextChild) == TagFromTagID )
      {
        FirstTag = SdbFindFirstTag((INT64)a1, v7, a4);
        v13 = FirstTag;
        if( FirstTag )
        {
          StringTagPtr = (const wchar_t *)SdbGetStringTagPtr((RTL_RUN_ONCE *)a1, FirstTag);
          if( !StringTagPtr )
          {
            AslLogCallPrintf(1ui64, "SdbpFindNextNamedTag", 0xD7ui64, "Can't get the name string tagid 0x%lx", v13);
            return v9;
          }
          if( !wcsicmp(Str1, StringTagPtr) )
            return v7;
        }
      }
    }
    return v9;
  }
  else
  {
    AslLogCallPrintf(1ui64, "SdbpFindNextNamedTag", 0xC6ui64, "Invalid tagid 0x%lx", v7);
    return 0i64;
  }
}

Referenced by:

SdbpSearchDB