MiCountSystemImageCommitment

NTSTATUS __stdcall MiCountSystemImageCommitment(_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
  UINT64 DllBase; 
  _SECTION *SectionPointer; 
  _CONTROL_AREA *v4; 
  char *v5; 
  INT64 v6; 
  VOID *v7; 
  INT64 v8; 
  INT16 v9; 
  _MMSUPPORT_INSTANCE *SessionVm; 
  int v11; 
  _MMSUPPORT_INSTANCE *v12; 
  __int64 v13; 
  _MMSUPPORT_SHARED *SharedVm; 
  UINT8 v15; 
  _CONTROL_AREA *v16; 
  INT64 v17; 
  int v18; 
  unsigned __int64 v19; 
  unsigned int v20; 
  _MMPTE *PteBase; 
  INT64 v22; 
  _UNICODE_STRING *v23; 
  UINT8 v24; 
  _UNICODE_STRING *v25; 
  int v26; 
  __int64 v27; 
  __int64 v28; 
  __int64 v29; 
  __int64 v30; 
  UINT8 v32; 
  _CONTROL_AREA *v33; 
  _MMSUPPORT_INSTANCE *v34; 
  INT64 v35; 

  if( (HIDWORD(DataTableEntry[1].GpValue) & 0x12) != 0 )
    return(unsigned __int64)DataTableEntry->SizeOfImage >> 12;
  DllBase = (UINT64)DataTableEntry->DllBase;
  if( MI_IS_PHYSICAL_ADDRESS((VOID *)DllBase) )
    return(unsigned __int64)DataTableEntry->SizeOfImage >> 12;
  SectionPointer = (_SECTION *)DataTableEntry->SectionPointer;
  if( !SectionPointer )
    return(unsigned __int64)DataTableEntry->SizeOfImage >> 12;
  v4 = MiSectionControlArea(SectionPointer);
  if( !*(_QWORD *)&v4[1].gap8[8] )
  {
    return(unsigned __int64)DataTableEntry->SizeOfImage >> 12;
  }
  else
  {
    v5 = (char *)MmGetPteBase() + ((DllBase >> 9) & 0x7FFFFFFFF8i64);
    v6 = (INT64)v5;
    if( MiGetSystemRegionType(DllBase) == 1 )
      SessionVm = MiGetSessionVm(v8, (INT64)v7, v9);
    else
      SessionVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeSystemViews, v7);
    v34 = SessionVm;
    v11 = v4->u.LongFlags & 0x800;
    v12 = SessionVm;
    v13 = 0i64;
    v35 = (INT64)MiFreePrivateFixupEntryForSystemImage((VOID *)DllBase, 0i64);
    SharedVm = MiGetSharedVm(v12);
    v15 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
    SharedVm->GoodCitizenWaiting = 0;
    v16 = v4 + 1;
    v32 = v15;
    v33 = v4 + 1;
    if( v4 != (_CONTROL_AREA *)-128i64 )
    {
      v17 = v35;
      while( 1 )
      {
        v18 = HIDWORD(v16->NumberOfUserReferences) & 0x3FFFFFFF;
        v19 = (unsigned int)(HIDWORD(v16->NumberOfMappedViews) - v18);
        if( (v16->NumberOfPfnReferences & 0x3E) >= 8 )
        {
          v6 += 8i64 * (unsigned int)(HIDWORD(v16->NumberOfMappedViews) - v18);
LABEL_12:
          v13 += v19;
          goto LABEL_36;
        }
        if( MiGetSubsectionDriverProtos((_SUBSECTION *)v16) )
        {
          v6 += 8 * v19;
          goto LABEL_12;
        }
        v20 = 0;
        if( !v19 )
          goto LABEL_36;
        PteBase = MmGetPteBase();
        do
        {
          if( v17 && _bittest(*(const signed __int32 **)(*(_QWORD *)(v17 + 40) + 8i64), (v6 - (__int64)v5) >> 3) )
          {
LABEL_19:
            ++v13;
            goto LABEL_34;
          }
          LODWORD(v22) = MI_READ_PTE_LOCK_FREE(v6);
          v35 = v22;
          if( v22 )
          {
            if( v11 )
              goto LABEL_19;
            if( (v22 & 1) != 0 )
            {
              MI_READ_PTE_LOCK_FREE((INT64)&v35);
              if( (MiGetWsleContents(0xFFFFFFFFFi64, ((v6 << 25) - ((_QWORD)PteBase << 25)) >> 16) & 0xF) == 9 )
                goto LABEL_19;
              LOBYTE(v26) = MI_PFN_IS_PROTO(v25, v23, v24, &v25->Length);
              if( !v26 || (*(_QWORD *)(v27 + 40) & 0x1000000000i64) == 0 && *(__int64 *)(v27 + 8) > 0 )
                goto LABEL_19;
              v28 = v13 + 1;
              if( (*(_DWORD *)(v27 + 16) & 0x400i64) != 0 )
                v28 = v13;
              v13 = v28;
            }
            else
            {
              v29 = v13 + 1;
              if( (v22 & 0x400) != 0 && !MI_PROTO_FORMAT_COMBINED((_MMPTE)v22) )
                v29 = v13;
              v13 = v29;
            }
          }
LABEL_34:
          ++v20;
          v6 += 8i64;
        }
        while( v20 < v19 );
        v16 = v33;
LABEL_36:
        v16 = *(_CONTROL_AREA **)&v16->gap8[8];
        v33 = v16;
        if( !v16 )
        {
          v12 = v34;
          v15 = v32;
          break;
        }
      }
    }
    MiUnlockWorkingSetExclusive(v12, v15);
    LODWORD(v30) = v13;
  }
  return v30;
}

Referenced by:

MiSessionUpdateImageCharges