VfSettingsCheckForChanges

VOID __stdcall VfSettingsCheckForChanges(
        UINT64 OldVerifierFlags,
        UINT64 NewFlagsOn,
        UINT64 NewFlagsOff,
        UINT64 NewFlags){
  unsigned int v4; 
  unsigned int v5; 
  int v6; 
  int v7; 
  _BOOL4 v8; 
  int v9; 
  char v10; 
  _BOOL4 v11; 
  _BOOL8 v12; 

  v4 = OldVerifierFlags;
  v5 = NewFlags;
  v6 = NewFlagsOff;
  v7 = NewFlagsOn;
  VfKeCheckForChanges((unsigned int)NewFlags);
  v8 = 0;
  v9 = 0;
  v10 = v6 & v4;
  v11 = 1;
  if( (v7 & 8) != 0 )
  {
    v8 = ((v4 >> 3) & 1) == 0;
    v9 = v8;
  }
  else if( (v10 & 8) != 0 )
  {
    v9 = 1;
  }
  if( v9 )
  {
    if( v8 )
      MmTrackLockedPages = 1;
    else
      MmTrackLockedPages |= 0x10000000u;
  }
  ViSettingsIoCheckForChanges(v5);
  if( (v7 & 0x20) != 0 )
  {
    if( (v4 & 0x20) != 0 )
      goto LABEL_14;
  }
  else if( (v10 & 0x20) == 0 )
  {
    goto LABEL_14;
  }
  ViDeadlockDetectionApplySettings();
LABEL_14:
  if( (v7 & 0x80u) == 0 )
  {
    if( (v10 & 0x80) == 0 )
      goto LABEL_19;
  }
  else if( (v4 & 0x80) != 0 )
  {
    goto LABEL_19;
  }
  ViHalApplySettings();
LABEL_19:
  if( (v7 & 0x800) != 0 )
  {
    v12 = ((v4 >> 11) & 1) == 0;
    v11 = ((v4 >> 11) & 1) == 0;
  }
  else
  {
    if( ((unsigned __int16)v6 & (unsigned __int16)v4 & 0x800) == 0 )
      goto LABEL_25;
    v12 = 0i64;
  }
  if( v11 )
  {
    ViSettingsEnableKernelHandleChecking(v12);
    VfSettingsApplyMiscellaneousChecks(~v6 & (v7 | v4));
  }
LABEL_25:
  VfPendingCheckForChanges(v5);
}

Referenced by:

VfSetVerifierInformation