SdbGetDatabaseMatchEx

__int64 __fastcall SdbGetDatabaseMatchEx(
        __int64 a1,
        int a2,
        const wchar_t *a3,
        __int64 a4,
        wchar_t *a5,
        wchar_t *a6,
        __int64 *a7){
  RTL_RUN_ONCE *v7; 
  INT16 v10; 
  const wchar_t *v11; 
  WCHAR *v12; 
  WCHAR *v13; 
  unsigned int FirstStringIndexedTag; 
  INT64 v15; 
  __int64 v16; 
  __int64 *v17; 
  wchar_t *v18; 
  unsigned int v19; 
  unsigned int i; 
  __int64 v21; 
  unsigned int v22; 
  UINT64 v24; 
  INT64 v25[2]; 
  __int128 v26; 
  __int64 v27; 
  unsigned int v28; 
  v7 = *(RTL_RUN_ONCE **)(a1 + 8);
  *(_OWORD *)v25 = 0i64;
  v26 = 0i64;
  v27 = 0i64;
  if( a2 )
  {
    v10 = 28698;
    v11 = 0i64;
    goto LABEL_10;
  }
  v10 = 28700;
  v11 = a3;
  v12 = wcsrchr(a3, 0x5Cu);
  if( !v12 )
  {
LABEL_10:
    v13 = (WCHAR *)a3;
    goto LABEL_4;
  }
  v13 = v12 + 1;
LABEL_4:
  v28 = 0;
  FirstStringIndexedTag = SdbFindFirstStringIndexedTag(v7, v10, 24577, v13, (INT64)v25);
  v17 = a7;
  v18 = a6;
  while( 1 )
  {
    v19 = FirstStringIndexedTag;
    if( !FirstStringIndexedTag )
    {
      for( i = SdbpFindFirstIndexedWildCardTag(v7, v10, v15, (INT64)v13, (INT64)v25);
            ;
            i = SdbpFindNextIndexedWildCardTag(v7, (__int64)v25) )
      {
        v22 = i;
        if( !i )
          break;
        if( (unsigned int)SdbpCheckKObject(a1, i, v11, v21, a5, v18, v17) )
        {
          if( (unsigned int)SdbTagIDToTagRef(a1, (__int64)v7, v22, &v28) )
            return v28;
          v24 = 5282i64;
          goto LABEL_19;
        }
      }
      return v28;
    }
    if( (unsigned int)SdbpCheckKObject(a1, FirstStringIndexedTag, v11, v16, a5, v18, v17) )
      break;
    FirstStringIndexedTag = SdbFindNextStringIndexedTag(v7, (unsigned int *)v25);
  }
  if( !(unsigned int)SdbTagIDToTagRef(a1, (__int64)v7, v19, &v28) )
  {
    v24 = 5258i64;
LABEL_19:
    AslLogCallPrintf(1ui64, "SdbGetDatabaseMatchEx", v24, "Failed to convert tiKObject to trKObject");
  }
  return v28;
}

Referenced by:

KsepDbCacheReadDeviceInternal
KsepDbGetDriverShimsInternal