MiSecureVad

NTSTATUS __fastcall MiSecureVad(_MI_PARTITION *Partition, INT64 a2, INT64 a3, INT64 a4, INT64 a5, INT64 a6){
  int v6; 
  __int64 v7; 
  __int64 v8; 
  INT64 v9; 
  INT64 v11; 
  VOID *v12; 
  NTSTATUS result; 
  _DWORD *v14; 
  INT64 v15; 

  v6 = a4;
  v7 = (a2 + a3 - 1) | 0xFFF;
  v8 = a2 & 0xFFFFFFFFFFFFF000ui64;
  v9 = 1i64;
  if( (v6 & 1) != 0 )
    goto LABEL_5;
  v11 = (a2 + a3 - 1) | 0xFFF;
  v12 = (VOID *)(a2 & 0xFFFFFFFFFFFFF000ui64);
  if( v6 != 2 )
    v9 = 4i64;
  LODWORD(v15) = 0;
  result = MiComparePteProtections((_EPROCESS *)Partition, v12, v11, v9, v15);
  if( result >= 0 )
  {
LABEL_5:
    v14 = MiAddSecureEntry(Partition, v8, v7, v6, a5);
    *(_QWORD *)a6 = v14;
    return v14 == 0i64 ? 0xC000009A : 0;
  }
  return result;
}

Referenced by:

MiMapViewOfDataSection
MiMapViewOfImageSection
MiReserveUserMemory
MmSecureVirtualMemoryEx