VerifierMmUnmapLockedPages

VOID __stdcall VerifierMmUnmapLockedPages(VOID *BaseAddress, ULONG_PTR MemoryDescriptorList){
  __int64 v2; 
  __int64 Param4; 
  unsigned __int8 CurrentIrql; 
  ULONG_PTR v6; 
  __int64 v7; 
  int v8; 
  UINT64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  __int128 MemoryInformation; 
  __int128 v13; 
  __int128 v14; 
  _XSTATE_FEATURE *retaddr; 

  Param4 = *(_QWORD *)&MemoryDescriptorList;
  MemoryInformation = 0i64;
  v13 = 0i64;
  v14 = 0i64;
  CurrentIrql = KeGetCurrentIrql();
  if( (unsigned __int64)BaseAddress <= 0x7FFFFFFEFFFFi64 )
  {
    if( CurrentIrql > 1u && (MmVerifierData & 1) != 0 )
    {
      v6 = 122;
      goto LABEL_8;
    }
  }
  else if( CurrentIrql > 2u && (MmVerifierData & 1) != 0 )
  {
    v6 = 121;
LABEL_8:
    VerifierBugCheckIfAppropriate(0xC4ui64, v6, CurrentIrql, (ULONG_PTR)BaseAddress, Param4, v10);
  }
  if( (unsigned __int64)BaseAddress <= 0x7FFFFFFEFFFFi64 )
  {
    if( (MmVerifierData & 0x800) != 0 && !PsGetProcessExitProcessCalled(KeGetCurrentThread()->ApcState.Process) )
    {
      v7 = ((*(_DWORD *)(Param4 + 32) + *(_DWORD *)(Param4 + 44)) & 0xFFF) + *(unsigned int *)(Param4 + 40) + 4095i64;
      if( ZwQueryVirtualMemory(-1, BaseAddress, MemoryRegionInformationEx, &MemoryInformation, 48, 0i64) < 0
        || (_QWORD)MemoryInformation != ((unsigned __int64)BaseAddress & 0xFFFFFFFFFFFFF000ui64)
        || (_QWORD)v13 != (v7 & 0xFFFFFFFFFFFFF000ui64)
        || (BYTE12(MemoryInformation) & 1) == 0 )
      {
        LOBYTE(v8) = VfUtilCheckRuleEnforcement(retaddr);
        if( v8 == 1 )
          VerifierBugCheckIfAppropriate(0xC4ui64, 0xB9u, (ULONG_PTR)BaseAddress, Param4, 0, v11);
      }
    }
  }
  else if( (*(_WORD *)(Param4 + 10) & 1) == 0 && (MmVerifierData & 0x800) != 0 )
  {
    VerifierBugCheckIfAppropriate(0xC4ui64, 0xB6u, Param4, *(__int16 *)(Param4 + 10), 1u, v10);
  }
  v9 = -(__int64)*(unsigned int *)(Param4 + 40);
  if( (MmVerifierData & 0x1000) != 0 )
    ViTargetAddToCounter(retaddr, 0xC0ui64, 0xC8ui64, v9);
  ((void(__fastcall *)(VOID *, __int64, __int64, UINT64))pXdvMmUnmapLockedPages)(BaseAddress, Param4, v2, v9);
}

Referenced by:

No references.