VfDriverEnableVerifier

__int64 __fastcall VfDriverEnableVerifier(__int64 a1, __int64 a2, _DWORD *a3){
  __int64 v3; 
  __int64 v4; 
  int v5; 
  int v6; 
  unsigned int v7; 
  int v8; 
  BOOL v9; 
  PVOID *v10; 
  __int64 *v11; 
  *a3 = 0;
  v3 = a2;
  v4 = a1;
  v5 = 0;
  v6 = 0;
  v7 = 0;
  v8 = 0;
  VfDriverLock(a1, a2, (INT64)a3);
  if( ViSuspectDriversLookupEntry((UNICODE_STRING *)(v4 + 24)) )
    goto LABEL_23;
  if( !v3 )
  {
    LOBYTE(v9) = 1;
    ExAcquireResourceSharedLite(&PsLoadedModuleResource, v9);
    v10 = (PVOID *)PsLoadedModuleList;
    v6 = 1;
    if( PsLoadedModuleList == &PsLoadedModuleList )
      goto LABEL_7;
    do
    {
      v3 = (__int64)v10;
      if( RtlEqualUnicodeString((UNICODE_STRING *)(v4 + 24), (UNICODE_STRING *)(v10 + 11), 1u) )
        break;
      v10 = (PVOID *)*v10;
      ++v7;
    }
    while( v10 != &PsLoadedModuleList );
    v4 = a1;
    if( v10 == &PsLoadedModuleList )
LABEL_7:
      v3 = 0i64;
    if( !v3 )
      goto LABEL_16;
  }
  if( (~VerifierModifyableOptions & (unsigned int)MmVerifierData) != 0
    || v6 && (v7 <= 1 || VfUtilIsProtectedDriver((PCUNICODE_STRING)(v3 + 88))) )
  {
    v8 = -1073741554;
  }
  else
  {
    v8 = MmRemoveImportOptimizationForDriverVerifier(v3);
    if( v8 >= 0 )
    {
      v5 = 1;
LABEL_16:
      v11 = (__int64 *)qword_140C1D0B8;
      if( *(_VF_SUSPECT_DRIVER_ENTRY ***)qword_140C1D0B8 != &VfSuspectDriversList )
        __fastfail(3u);
      *(_QWORD *)(v4 + 8) = qword_140C1D0B8;
      *(_QWORD *)v4 = &VfSuspectDriversList;
      *v11 = v4;
      qword_140C1D0B8 = v4;
      *a3 = 1;
      if( v5 )
        VfDriverLoadImage(v3, v4, 0, 1u);
      ++dword_140C2A698;
    }
  }
  if( v6 )
    ExReleaseResourceLite(&PsLoadedModuleResource);
LABEL_23:
  ViDriversLoadLockOwner = 0i64;
  KeReleaseMutex(&ViDriversLoadLock, 0);
  return(unsigned int)v8;
}

Referenced by:

MmEnableVerifierForDriver
VfDriverEnableVerifierForAll