MiInitializeDynamicPfns

VOID __stdcall MiInitializeDynamicPfns(UINT64 StartPage, UINT64 NumberOfPages, UINT16 PartitionId, UINT64 Flags){
  UINT16 *v4; 
  unsigned int v7; 
  char *v8; 
  char v9; 
  int v10; 
  KIRQL v11; 
  unsigned __int64 v12; 
  unsigned int v13; 
  INT64 v14; 
  UINT64 v15; 
  char v16; 
  _MMPFN *v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  UINT64 v20; 
  __int64 v21; 
  int v22; 
  char v23; 
  char *v24; 
  int v25; 
  char v26; 
  bool v27; 
  __int128 v28; 
  __int64 v29; 
  unsigned __int64 v30; 
  __int128 v31; 
  __int128 v32; 
  __int128 v33; 
  UINT64 v34; 
  INT64 v35; 
  INT64 v36; 
  char PageIrql[2]; 
  UINT16 v38; 
  int v39; 
  INT64 v40; 
  __int64 v41; 
  INT64 v42; 
  __int128 v43; 
  __int128 v44; 
  __int128 v45; 
  __int128 v46; 
  __int128 v47; 
  __int128 v48; 
  INT64 result[22]; 
  unsigned int v50; 
  int v51; 
  __int64 v52; 
  __int64 v53; 
  v4 = (UINT16 *)PartitionId;
  v41 = v52;
  v42 = PartitionId;
  v40 = v53;
  v7 = Flags;
  v46 = 0i64;
  v47 = 0i64;
  v48 = 0i64;
  v43 = 0i64;
  v44 = 0i64;
  v45 = 0i64;
  memset((INT64)result, 0i64);
  v38 = *v4;
  v8 = (char *)MmGetPfnDb() + 48 * StartPage;
  v9 = 5;
  v10 = v7 & 6;
  v39 = v10;
  if( v10 == 4 )
  {
    v11 = ExAcquireSpinLockExclusive(&dword_140C50B88);
    qword_140C525D0 += NumberOfPages;
    v12 = v11;
    byte_140C50ACC = 1;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&dword_140C50B88);
    __writecr8(v12);
    v10 = v39;
    v9 = 6;
  }
  if( (v7 & 1) != 0 )
  {
    v13 = v7 | 0x40;
    if( v10 != 4 )
      v13 = v7;
    if( (v13 & 0x1800) != 0 )
    {
      LODWORD(v36) = 0;
      LODWORD(v35) = MiDetermineNewPfnHeatState(0i64) == 0;
      MiInitializeAllResidentPageBasePfns((UINT16 *)&MiSystemPartition, StartPage, NumberOfPages, v14, 1, v35, v36);
    }
    if( (v13 & 2) != 0 )
    {
      v15 = *(_QWORD *)(v52 + 8);
      MiReferenceControlAreaPfn(**(_CONTROL_AREA ***)v52, *(_SUBSECTION **)v52, (unsigned int)NumberOfPages);
    }
    else
    {
      v15 = 0i64;
    }
    v16 = 17;
    v17 = 0i64;
    PageIrql[0] = 17;
    while( NumberOfPages )
    {
      MiRestrictRangeToNode(StartPage, NumberOfPages);
      v19 = v18;
      if( v41 )
      {
        if( v18 > (unsigned __int64)(4096 - (unsigned int)(v15 & 0xFFF)) >> 3 )
          v19 = (unsigned __int64)(4096 - (unsigned int)(v15 & 0xFFF)) >> 3;
        while( 1 )
        {
          v17 = MiLockProtoPoolPage((_MMPTE *)v15, (UINT8 *)PageIrql);
          if( v17 )
            break;
          MmAccessFault(2ui64, (PVOID)v15, 0, 0i64);
        }
        MiInitializeUnusablePfns(
          (__m128i *)MmGetPfnDb() + 3 * StartPage,
          v19,
          v38,
          v13,
          *(_QWORD *)v41,
          v15,
          *(_DWORD *)(v41 + 16));
        v16 = PageIrql[0];
      }
      else
      {
        LODWORD(v21) = MiSearchNumaNodeTable((PVOID)StartPage);
        MiInitializeDpcGang((INT64)result, *(unsigned int *)(v21 + 8), 1);
        result[21] = v42;
        v22 = v51 | 4;
        v50 = v13;
        result[0] = StartPage;
        result[1] = v19;
        result[20] = v40;
        if( v40 )
          v22 = v51 | 0xC;
        v51 = v22 | 2;
        MiStartDpcGang((UINT64 *)result);
      }
      if( v15 )
      {
        LOBYTE(v20) = v16;
        MiUnlockProtoPoolPage(v17, v20);
        v15 += 8 * v19;
      }
      NumberOfPages -= v19;
      StartPage += v19;
      v40 += v19 << 12;
    }
  }
  else
  {
    if( (v7 & 2) == 0 )
    {
      LODWORD(v34) = 0;
      MiUpdateLargePageBitMap((UINT64)&MiSystemPartition, StartPage, NumberOfPages, 0i64, v34);
    }
    *((_QWORD *)&v47 + 1) |= 0x8000000000000000ui64;
    *((_QWORD *)&v44 + 1) |= 0x8000000000000000ui64;
    v23 = v9 | BYTE2(v45) & 0xF8;
    v24 = &v8[48 * NumberOfPages];
    BYTE2(v45) = v23;
    if( v8 < v24 )
    {
      v25 = v7 & 0x10;
      do
      {
        v26 = MiLockPageInline((INT64)v8);
        v27 = (v8[35] & 0x40) == 0;
        PageIrql[0] = v26;
        if( !v27 )
          MiSetPfnRemovalRequested((INT64)v8, 0i64);
        v28 = v44;
        v29 = *((_QWORD *)&v45 + 1);
        v30 = *((_QWORD *)&v45 + 1) ^ ((unsigned __int64)(unsigned __int16)(*((_QWORD *)v8 + 5) >> 39) << 39);
        *(_OWORD *)v8 = v43;
        *((_QWORD *)&v45 + 1) = v30 & 0x1FF8000000000i64 ^ v29;
        v31 = v45;
        *((_OWORD *)v8 + 1) = v28;
        *((_OWORD *)v8 + 2) = v31;
        MiAbortCombineScan((INT64)v8);
        if( v25 )
        {
          v32 = v47;
          *(_OWORD *)v8 = v46;
          v33 = v48;
          *((_OWORD *)v8 + 1) = v32;
          *((_OWORD *)v8 + 2) = v33;
        }
        _InterlockedAnd64((volatile signed __int64 *)v8 + 3, 0x7FFFFFFFFFFFFFFFui64);
        __writecr8((unsigned __int8)PageIrql[0]);
        v8 += 48;
      }
      while( v8 < v24 );
    }
  }
}

Referenced by:

MiMapNewPfns
MiRemovePhysicalMemory