SdbpCheckKObject

__int64 __fastcall SdbpCheckKObject(
        __int64 a1,
        unsigned int a2,
        const WCHAR *a3,
        __int64 a4,
        wchar_t *a5,
        wchar_t *a6,
        __int64 *a7){
  unsigned int SearchDBContext; 
  const wchar_t **v11; 
  RTL_RUN_ONCE *v12; 
  __int64 *v14; 
  int v15; 
  _QWORD result[18]; 
  int v17; 
  UINT64 FileMappingHandleOut; 
  __int64 v19; 
  v19 = a4;
  memset((INT64)result, 0i64);
  LODWORD(v19) = 0;
  SearchDBContext = 0;
  v17 = 0;
  v11 = 0i64;
  v12 = *(RTL_RUN_ONCE **)(a1 + 8);
  FileMappingHandleOut = 0i64;
  if( !a3
    || (v15 = AslFileMappingCreate(&FileMappingHandleOut, a3, (VOID *)0xFFFFFFFFFFFFFFFFi64, a5, (UINT64)a6),
        v11 = (const wchar_t **)FileMappingHandleOut,
        v15 >= 0) )
  {
    memset((INT64)result + 4, 0i64);
    LODWORD(result[0]) = 26;
    SearchDBContext = SdbpCreateSearchDBContext(result, v11);
    if( SearchDBContext )
    {
      SearchDBContext = SdbpCheckForMatch(a1, (__int64)v12, a2, (__int64)result, &v17, (int *)&v19);
      if( SearchDBContext )
      {
        v14 = a7;
        if( a7 )
        {
          SearchDBContext = SdbpMatchAcpi(v12, a2, *a7);
          if( SearchDBContext )
          {
            SearchDBContext = SdbpMatchOem(v12, a2, v14[1]);
            if( SearchDBContext )
            {
              SearchDBContext = SdbpMatchBios(v12, a2, v14[2]);
              if( SearchDBContext )
                SearchDBContext = SdbpMatchCpu(v12, a2, v14[3]);
            }
          }
        }
      }
    }
  }
  SdbpReleaseSearchDBContext(result);
  AslFileMappingDelete((UINT64)v11);
  return SearchDBContext;
}

Referenced by:

SdbGetDatabaseMatchEx