MiInitializePrototypePtes

int __fastcall MiInitializePrototypePtes(ULONG_PTR BugCheckParameter1, __int64 a2, unsigned __int16 *a3, int a4){
  INT64 SubsectionPte; 
  __int64 v9; 
  INT64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  unsigned int v13; 
  unsigned __int64 v14; 
  unsigned __int64 v15; 
  __int64 v16; 
  INT64 v18[2]; 
  INT64 v19[5]; 
  int v20; 
  LODWORD(SubsectionPte) = memset((INT64)v19, 0i64);
  v9 = *(_QWORD *)a3;
  v10 = 1i64;
  v11 = 8 * a2;
  v12 = 4096i64;
  if( *(_QWORD *)(*(_QWORD *)a3 + 64i64) )
  {
    SubsectionPte = MiMakeSubsectionPte((INT64)a3);
LABEL_3:
    v14 = SubsectionPte;
    goto LABEL_4;
  }
  v13 = 0;
  if( (*(_DWORD *)(v9 + 56) & 0x1000) == 0 )
  {
    SubsectionPte = MiMakeDemandZeroPte((a3[16] >> 1) & 0x1F);
    goto LABEL_3;
  }
  v14 = 0i64;
LABEL_4:
  if( v11 >= v12 )
  {
    if( a4 )
    {
      v15 = v14;
      if( !v14 )
        v15 = MiMakeDemandZeroPte(4) & 0xFFFFFFFFFFFFFC1Fui64;
      MiEncodeProtoFill(BugCheckParameter1, v11, v15 | (((v10 ^ v13) << 10) + 2));
      LODWORD(SubsectionPte) = v11 & 0xFFFFF000;
      BugCheckParameter1 += v11 & 0xFFFFFFFFFFFFF000ui64;
      v11 &= 0xFFFu;
    }
    else
    {
      v18[0] = BugCheckParameter1;
      v18[1] = v11;
      MiInitializeFaultVaListCore((INT64)v19, (INT64)v18, v10, 2);
      v20 = (*(_DWORD *)(v9 + 56) >> 20) & 0x3F;
      LODWORD(SubsectionPte) = MmAccessFault(2ui64, (PVOID)BugCheckParameter1, 0, (PVOID)(v16 | (unsigned __int64)v19));
    }
  }
  if( v11 )
  {
    LODWORD(SubsectionPte) = v14;
    memset64((void *)BugCheckParameter1, v14, v11 >> 3);
  }
  return SubsectionPte;
}

Referenced by:

MiCreatePagingFileMap
MiCreatePrototypePtes
MiExtendSection