MiAddExpansionNonPagedPool

VOID __stdcall MiAddExpansionNonPagedPool(UINT64 PageFrameIndex, UINT64 NumberOfPages){
  INT64 v2; 
  __int64 v3; 
  char *v4; 
  __int64 v5; 
  _MMPFN *v6; 
  char *v7; 
  int v8; 
  signed __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  unsigned __int8 v12; 
  char v13; 
  unsigned __int64 v14; 
  char v15; 
  char v16; 
  char v17; 
  if( NumberOfPages )
  {
    v2 = MiSwizzleInvalidPte(128i64);
    v4 = (char *)MmGetPfnDb() + 48 * v3;
    v6 = 0i64;
    v7 = &v4[48 * v5];
    v8 = -1;
    do
    {
      v9 = v4 - (char *)MmGetPfnDb();
      LODWORD(v10) = MiSearchNumaNodeTable((PVOID)(v9 / 48));
      if( v8 != *(_DWORD *)(v10 + 8) )
      {
        if( v6 )
        {
          MiReturnPhysicalPoolPages(v6);
          v6 = 0i64;
        }
        LODWORD(v11) = MiSearchNumaNodeTable((PVOID)(v9 / 48));
        v8 = *(_DWORD *)(v11 + 8);
      }
      v12 = MiLockPageInline((INT64)v4);
      v13 = v4[34] & 0xC7;
      v14 = v12;
      *((_QWORD *)v4 + 5) &= ~0x8000000000000000ui64;
      v4[34] = v13;
      v15 = v4[35] & 0xDF;
      v4[35] = v15;
      *(_WORD *)((char *)MmGetPfnDb() + v9 + 32) = 0;
      *((_QWORD *)v4 + 3) &= 0xC000000000000000ui64;
      *(_QWORD *)((char *)MmGetPfnDb() + v9 + 16) = v2;
      *((_QWORD *)v4 + 5) &= 0x8FFFFFFFFFFFFFFFui64;
      v16 = v15;
      v17 = v4[34];
      v4[35] = v16 | 0x10;
      *((_QWORD *)v4 + 5) &= 0xFFFFFFF000000000ui64;
      if( (v17 & 0xC0) != 64 )
      {
        MiChangePageAttribute((INT64)v4, 1i64, 3);
        v17 = v4[34];
      }
      *((_QWORD *)v4 + 1) = -8i64;
      v4[34] = v17 & 0xF8 | 5;
      _InterlockedAnd64((volatile signed __int64 *)v4 + 3, 0x7FFFFFFFFFFFFFFFui64);
      __writecr8(v14);
      *(_QWORD *)v4 = v6;
      v6 = (_MMPFN *)v4;
      v4 += 48;
    }
    while( v4 < v7 );
    MiReturnPhysicalPoolPages(v6);
  }
}

Referenced by:

MiFreeLargeInitializationCodePages
MiInitializeNonPagedPool