MiFreedUnusedPfnPagesWorker

VOID __stdcall MiFreedUnusedPfnPagesWorker(UINT64 *rcx0){
  unsigned __int64 v1; 
  _MMPTE *PteBase; 
  _MMPFN *PfnDb; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  UINT64 v6; 
  UINT64 v7; 
  _MMPFN *v8; 
  _MMPFN *v9; 
  UINT64 v10; 
  _MMPFN *v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  _MMPFN *v15; 
  __int64 v16; 
  _MMPFN *v17; 
  __int64 v18; 
  _MMPFN *v19; 
  _MMPFN *v20; 
  __int64 v21; 
  _PHYSICAL_MEMORY_RUN *i; 
  unsigned __int64 BasePage; 
  unsigned __int64 v24; 
  UINT64 v25; 
  UINT64 v26; 
  UINT64 v27; 
  unsigned __int64 v28; 

  if( !*rcx0 )
    *(&stru_140C50B28 + 100) = 1;
  v1 = 0i64;
LABEL_4:
  PteBase = MmGetPteBase();
LABEL_5:
  PfnDb = MmGetPfnDb();
LABEL_6:
  if( v1 != 0x1000000000i64 )
  {
    if( !MmPhysicalMemoryBlock )
    {
LABEL_8:
      v4 = 0x1000000000i64 - v1;
      goto LABEL_9;
    }
    for( i = MmPhysicalMemoryBlock->Run; ; ++i )
    {
      if( i >= &MmPhysicalMemoryBlock->Run[MmPhysicalMemoryBlock->NumberOfRuns] )
      {
        PfnDb = MmGetPfnDb();
        goto LABEL_8;
      }
      BasePage = i->BasePage;
      if( v1 >= i->BasePage )
      {
        v24 = i->PageCount + BasePage;
        if( v1 < v24 )
          v1 = v24;
      }
      else
      {
        v4 = BasePage - v1;
        if( BasePage - v1 >= 0x55 )
        {
          PfnDb = MmGetPfnDb();
LABEL_9:
          v5 = v1;
          if( v4 )
          {
            v1 += v4;
            v28 = v1;
            v6 = (UINT64)PteBase + (((48 * v5 - 0x57FFFFFF001i64) >> 9) & 0x7FFFFFFFF8i64);
            v26 = v6;
            v7 = (UINT64)PteBase + (((unsigned __int64)&PfnDb[v1] >> 9) & 0x7FFFFFFFF8i64);
            v27 = v7;
            if( v6 < v7 )
            {
              while( 1 )
              {
                v25 = (__int64)(v7 - v6) >> 3 << 12;
                LODWORD(v8) = MiGetNextNonGapPfnPage(&v26, &v25, 2, 1i64);
                PteBase = MmGetPteBase();
                v9 = v8;
                if( !v8 )
                  goto LABEL_5;
                v10 = v25 & 0xFFFFFFFFFFFFF000ui64;
                if( (v25 & 0xFFFFFFFFFFFFF000ui64) == 0 )
                  goto LABEL_5;
                v11 = MmGetPfnDb();
                do
                {
                  if( v9->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0
                    || (LODWORD(v14) = RtlCompareMemoryUlong(v9, v10, 0i64), v12 = v14, v14 < 0x1000) )
                  {
                    v12 = 4096i64;
                  }
                  else
                  {
                    v15 = v9;
                    v16 = v9 - v11;
                    v17 = &v11[v16];
                    if( v17 != v9 )
                    {
                      if( !MmIsAddressValidEx((INT64)&v11[v16])
                        || (LODWORD(v18) = RtlCompareMemoryUlong(v17, 48, 0i64), v18 != 48) )
                      {
                        v15 = (_MMPFN *)((char *)v9 + 4096);
                      }
                    }
                    v19 = (_MMPFN *)((char *)v9 + (v12 & 0xFFFFFFFFFFFFF000ui64));
                    v20 = &v11[v19 - v11];
                    if( v20 != v19 )
                    {
                      if( !MmIsAddressValidEx((INT64)&v20[1])
                        || (LODWORD(v21) = RtlCompareMemoryUlong(v20, 48, 0i64), v21 != 48) )
                      {
                        v19 = (_MMPFN *)((char *)v19 - 4096);
                      }
                    }
                    MiPfnRangeIsZero(v15, v19);
                  }
                  v13 = (v12 + 4095) & 0xFFFFFFFFFFFFF000ui64;
                  v9 = (_MMPFN *)((char *)v9 + v13);
                  v10 -= v13;
                }
                while( v10 >= 0x1000 );
                v6 = v26;
                v7 = v27;
                v1 = v28;
                if( v26 >= v27 )
                  goto LABEL_4;
              }
            }
            goto LABEL_6;
          }
          return;
        }
        v1 = BasePage + i->PageCount;
      }
    }
  }
}

Referenced by:

MiFreeUnusedPfnPagesDpc