VfDriverEnableVerifier

NTSTATUS __stdcall VfDriverEnableVerifier(
        PVOID PreAllocatedEntry,
        _KLDR_DATA_TABLE_ENTRY *DataTableEntry,
        UINT64 *EntryInserted){
  _VF_SUSPECT_DRIVER_ENTRY *v4; 
  int v5; 
  int v6; 
  unsigned int v7; 
  int v8; 
  _KLDR_DATA_TABLE_ENTRY *Flink; 
  _VF_SUSPECT_DRIVER_ENTRY **v10; 

  *(_DWORD *)EntryInserted = 0;
  v4 = (_VF_SUSPECT_DRIVER_ENTRY *)PreAllocatedEntry;
  v5 = 0;
  v6 = 0;
  v7 = 0;
  v8 = 0;
  VfDriverLock();
  if( ViSuspectDriversLookupEntry(&v4->BaseName) )
    goto LABEL_23;
  if( !DataTableEntry )
  {
    ExAcquireResourceSharedLite((UINT64)&PsLoadedModuleResource, 1);
    Flink = (_KLDR_DATA_TABLE_ENTRY *)PsLoadedModuleList;
    v6 = 1;
    if( (INT64 *)PsLoadedModuleList == &PsLoadedModuleList )
      goto LABEL_7;
    do
    {
      DataTableEntry = Flink;
      if( (unsigned __int8)RtlEqualUnicodeString(&v4->BaseName, &Flink->BaseDllName, 1u) )
        break;
      Flink = (_KLDR_DATA_TABLE_ENTRY *)Flink->InLoadOrderLinks.Flink;
      ++v7;
    }
    while( Flink != (_KLDR_DATA_TABLE_ENTRY *)&PsLoadedModuleList );
    v4 = (_VF_SUSPECT_DRIVER_ENTRY *)PreAllocatedEntry;
    if( Flink == (_KLDR_DATA_TABLE_ENTRY *)&PsLoadedModuleList )
LABEL_7:
      DataTableEntry = 0i64;
    if( !DataTableEntry )
      goto LABEL_16;
  }
  if( (~VerifierModifyableOptions & (unsigned int)MmVerifierData) != 0
    || v6 && (v7 <= 1 || VfUtilIsProtectedDriver(&DataTableEntry->BaseDllName)) )
  {
    v8 = -1073741554;
  }
  else
  {
    v8 = MmRemoveImportOptimizationForDriverVerifier((INT64)DataTableEntry);
    if( v8 >= 0 )
    {
      v5 = 1;
LABEL_16:
      v10 = (_VF_SUSPECT_DRIVER_ENTRY **)qword_140C1D0B8;
      if( *(_VF_SUSPECT_DRIVER_ENTRY ***)qword_140C1D0B8 != &VfSuspectDriversList )
        __fastfail(3u);
      v4->Links.Blink = (_LIST_ENTRY *)qword_140C1D0B8;
      v4->Links.Flink = (_LIST_ENTRY *)&VfSuspectDriversList;
      *v10 = v4;
      qword_140C1D0B8 = (__int64)v4;
      *(_DWORD *)EntryInserted = 1;
      if( v5 )
        VfDriverLoadImage(DataTableEntry, v4, 0, 1u);
      ++dword_140C2A698;
    }
  }
  if( v6 )
    ExReleaseResourceLite(&PsLoadedModuleResource);
LABEL_23:
  ViDriversLoadLockOwner = 0i64;
  KeReleaseMutex(&ViDriversLoadLock, 0);
  return v8;
}

Referenced by:

MmEnableVerifierForDriver
VfDriverEnableVerifierForAll