MiInitializeDynamicPfns

VOID __stdcall MiInitializeDynamicPfns(UINT64 StartPage, UINT64 NumberOfPages, UINT16 PartitionId, UINT64 Flags){
  unsigned __int16 *v4; 
  unsigned int v7; 
  _MMPFN *v8; 
  char v9; 
  int v10; 
  unsigned __int8 v11; 
  unsigned __int64 v12; 
  unsigned int v13; 
  INT64 v14; 
  _MMPTE *v15; 
  UINT8 v16; 
  ULONG_PTR v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  _MMPFN *v20; 
  __int64 v21; 
  int v22; 
  char v23; 
  _MMPFN *v24; 
  int v25; 
  UINT8 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]; 
  unsigned __int16 v38; 
  int v39; 
  INT64 v40; 
  __int64 v41; 
  INT64 v42; 
  _LIST_ENTRY v43; 
  __int128 v44; 
  __int128 v45; 
  _LIST_ENTRY v46; 
  __int128 v47; 
  __int128 v48; 
  INT64 v49[48]; 
  __int64 v50; 
  INT64 v51; 

  v4 = (unsigned __int16 *)PartitionId;
  v41 = v50;
  v42 = PartitionId;
  v40 = v51;
  v7 = Flags;
  v46 = 0i64;
  v47 = 0i64;
  v48 = 0i64;
  v43 = 0i64;
  v44 = 0i64;
  v45 = 0i64;
  memset(v49, 0i64, sizeof(v49));
  v38 = *v4;
  v8 = &MmGetPfnDb()[StartPage];
  v9 = 5;
  v10 = v7 & 6;
  v39 = v10;
  if( v10 == 4 )
  {
    v11 = ExAcquireSpinLockExclusive((INT64 *)&stru_140C50B28 + 12);
    *(&stru_140C50B28 + 853) += NumberOfPages;
    v12 = v11;
    byte_140C50ACC = 1;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&stru_140C50B28 + 12);
    __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(&Irp.Core.PartitionId, StartPage, NumberOfPages, v14, 1, v35, v36);
    }
    if( (v13 & 2) != 0 )
    {
      v15 = *(_MMPTE **)(v50 + 8);
      MiReferenceControlAreaPfn(**(_CONTROL_AREA ***)v50, *(_SUBSECTION **)v50, (unsigned int)NumberOfPages);
    }
    else
    {
      v15 = 0i64;
    }
    v16 = 17;
    v17 = 0;
    PageIrql[0] = 17;
    while( NumberOfPages )
    {
      MiRestrictRangeToNode(StartPage, NumberOfPages);
      v19 = v18;
      if( v41 )
      {
        if( v18 > (unsigned __int64)(4096 - ((unsigned __int16)v15 & 0xFFFu)) >> 3 )
          v19 = (unsigned __int64)(4096 - ((unsigned __int16)v15 & 0xFFFu)) >> 3;
        while( 1 )
        {
          v20 = MiLockProtoPoolPage(v15, (UINT8 *)PageIrql);
          v17 = (unsigned int)v20;
          if( v20 )
            break;
          MmAccessFault(2ui64, v15, 0, 0i64);
        }
        MiInitializeUnusablePfns(&MmGetPfnDb()[StartPage], v19, v38, v13);
        v16 = PageIrql[0];
      }
      else
      {
        LODWORD(v21) = MiSearchNumaNodeTable((PVOID)StartPage);
        MiInitializeDpcGang((INT64)v49, *(unsigned int *)(v21 + 8), 1);
        v49[21] = v42;
        v22 = LODWORD(v49[23]) | 4;
        HIDWORD(v49[22]) = v13;
        v49[0] = StartPage;
        v49[1] = v19;
        v49[20] = v40;
        if( v40 )
          v22 = LODWORD(v49[23]) | 0xC;
        LODWORD(v49[23]) = v22 | 2;
        MiStartDpcGang((UINT64 *)v49);
      }
      if( v15 )
      {
        MiUnlockProtoPoolPage(v17, v16);
        v15 += v19;
      }
      NumberOfPages -= v19;
      StartPage += v19;
      v40 += v19 << 12;
    }
  }
  else
  {
    if( (v7 & 2) == 0 )
    {
      LODWORD(v34) = 0;
      MiUpdateLargePageBitMap((UINT64)&Irp, StartPage, NumberOfPages, 0i64, v34);
    }
    *((_QWORD *)&v47 + 1) |= 0x8000000000000000ui64;
    *((_QWORD *)&v44 + 1) |= 0x8000000000000000ui64;
    v23 = v9 | BYTE2(v45) & 0xF8;
    v24 = &v8[NumberOfPages];
    BYTE2(v45) = v23;
    if( v8 < v24 )
    {
      v25 = v7 & 0x10;
      do
      {
        v26 = MiLockPageInline(v8);
        v27 = (*((_BYTE *)&v8->u3 + 3) & 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)((unsigned __int64)v8->u4._bf_0 >> 39) << 39);
        v8->ListEntry = v43;
        *((_QWORD *)&v45 + 1) = v30 & 0x1FF8000000000i64 ^ v29;
        v31 = v45;
        *((_OWORD *)&v8->3 + 1) = v28;
        *(_OWORD *)&v8->u3.ReferenceCount = v31;
        MiAbortCombineScan(v8);
        if( v25 )
        {
          v32 = v47;
          v8->ListEntry = v46;
          v33 = v48;
          *((_OWORD *)&v8->3 + 1) = v32;
          *(_OWORD *)&v8->u3.ReferenceCount = v33;
        }
        _InterlockedAnd64(&v8->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
        __writecr8((unsigned __int8)PageIrql[0]);
        ++v8;
      }
      while( v8 < v24 );
    }
  }
}

Referenced by:

MiMapNewPfns
MiRemovePhysicalMemory