MiInitializeMdlPfn

CHAR __fastcall MiInitializeMdlPfn(INT64 a1, INT64 a2){
  int v2; 
  char v4; 
  unsigned __int64 v5; 
  _MMPTE *PteBase; 
  _MMPTE *v7; 
  v2 = a2;
  if( (a2 & 0x100) != 0 )
  {
    v4 = *(_BYTE *)(a1 + 34);
    if( (v4 & 7) != 5 )
      *(_BYTE *)(a1 + 34) = v4 & 0xF8 | 5;
    LOBYTE(v5) = 0;
    *(_QWORD *)(a1 + 24) &= 0xC000000000000000ui64;
  }
  else
  {
    *(_QWORD *)(a1 + 24) = *(_QWORD *)(a1 + 24) & 0xC000000000000000ui64 | 1;
    *(_WORD *)(a1 + 32) = 2;
    PteBase = MmGetPteBase();
    v7 = 0i64;
    if( (a2 & 0x80000200) == 0 )
      v7 = PteBase;
    *(_QWORD *)(a1 + 8) = v7;
    if( (int)a2 < 0 )
      *(_QWORD *)(a1 + 24) &= ~0x4000000000000000ui64;
    if( (a2 & 0x200) != 0 )
    {
      MiAbortCombineScan(a1);
      *(_QWORD *)(a1 + 40) = *(_QWORD *)(a1 + 40) & 0x8FFFFFFFFFFFFFFFui64 | 0x3000000000000000i64;
      if( (v2 & 0x20000) == 0 )
        _InterlockedIncrement64(&qword_140C4DD40);
    }
    LOBYTE(v5) = *(_BYTE *)(a1 + 34) & 0xF8 | 6;
    *(_BYTE *)(a1 + 34) = v5;
    if( v2 < 0 )
    {
      v5 = *(_QWORD *)(a1 + 40) & 0x8FFFFFFFFFFFFFFFui64 | 0x1000000000000000i64;
      *(_QWORD *)(a1 + 40) = v5;
    }
  }
  *(_BYTE *)(a1 + 35) &= 0xF8u;
  *(_DWORD *)(a1 + 36) = 0;
  return v5;
}

Referenced by:

MiCreateEnclaveRegions
MiInitializeMdlLeafPfns
MmAllocateNonChargedSecurePages
MmAllocateSecureKernelPages