SdbpCheckExe

NTSTATUS __stdcall SdbpCheckExe(
        VOID *hSDB,
        _DB *pdb,
        UINT64 tiExe,
        UINT64 *pdwNumExes,
        tagSEARCHDBCONTEXT *pContext,
        _ADDITIVE_MODE eMode,
        _MATCHMODE *pMatchMode,
        tagEXE_ENTRY_INFO *pExeEntryInfo){
  NTSTATUS v9; 
  unsigned int v10; 
  _MATCHMODE v11; 
  int v12; 
  unsigned int v13; 
  _MATCHMODE v15; 
  __int64 v16[2]; 

  v15 = MATCHMODE_ADDITIVE;
  v9 = 0;
  LODWORD(v16[0]) = 0;
  v10 = tiExe;
  if( SdbpCheckForMatch(hSDB, pdb, tiExe, pContext, &v15, (UINT64 *)v16) )
  {
    v11 = v15;
    if( (eMode != AM_ADDITIVE_ONLY || v15 == MATCHMODE_ADDITIVE)
      && (eMode != AM_NO_ADDITIVE || v15 != MATCHMODE_ADDITIVE) )
    {
      if( v15 == MATCHMODE_EXCLUSIVE )
      {
        memset(pExeEntryInfo, 0i64, 0x80u);
        v12 = 0;
      }
      else
      {
        v12 = *(_DWORD *)pdwNumExes;
        if( *(_DWORD *)pdwNumExes >= 0x10u )
        {
          AslLogCallPrintf(
            1ui64,
            (INT8 *)"SdbpCheckExe",
            0xCFEui64,
            (INT8 *)"The number of matching EXEs exceeded the max allowed");
          ++*(_DWORD *)pdwNumExes;
          return 0;
        }
      }
      v13 = v16[0];
      pExeEntryInfo[v12].tiExe = v10;
      pExeEntryInfo[v12].dwFlags = v13;
      *(_DWORD *)pdwNumExes = v12 + 1;
      v9 = 1;
      if( pMatchMode )
        *pMatchMode = v11;
    }
  }
  return v9;
}

Referenced by:

SdbpSearchDB