MmIdentifyPhysicalMemory

VOID __fastcall MmIdentifyPhysicalMemory(UINT64 LoggerId, INT64 HookId, UINT64 LogActive){
  int v3; 
  unsigned int v4; 
  PFN_WDFREGISTRYQUERYULONG *v5; 
  int v6; 
  unsigned int v7; 
  PHYSICAL_MEMORY_DESCRIPTOR *v8; 
  _MMPFN *v9; 
  unsigned __int64 v10; 
  PFN_WDFREGISTRYQUERYULONG *v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  INT64 v15; 
  INT16 v16; 
  _MMPFN_IDENTITY Identity[5]; 
  char *v18; 
  int v19; 
  PFN_WDFREGISTRYQUERYULONG *v20; 
  unsigned __int64 v21; 
  PHYSICAL_MEMORY_DESCRIPTOR *v22; 
  __int64 v23[3]; 
  PGET_UPDATED_BUS_RESOURCE v24[2]; 

  Identity[0] = HookId;
  v20 = (PFN_WDFREGISTRYQUERYULONG *)LoggerId;
  v23[0] = 0i64;
  v4 = HookId;
  v5 = (PFN_WDFREGISTRYQUERYULONG *)LoggerId;
  v18 = 0i64;
  v19 = v3;
  v16 = LogActive;
  *(_OWORD *)&Identity[1] = 0i64;
  v6 = v3;
  *(_OWORD *)v24 = 0i64;
  v7 = 0;
  v22 = MiReferencePageRuns((ULONG_PTR *)&Irp.Core.PartitionId, 0i64);
  v8 = v22;
  if( v22->NumberOfRuns )
  {
    do
    {
      v9 = &MmGetPfnDb()[v8->Run[v7].BasePage];
      v10 = (unsigned __int64)&v9[v8->Run[v7].PageCount];
      v21 = v10;
      if( (unsigned __int64)v9 < v10 )
      {
        v11 = v20;
        do
        {
          v12 = 1i64;
          if( !v6 || (v9->u4._bf_0 & 0x1000000000i64) != 0 || (*(_BYTE *)(&v9->u3 + 1) & 7) == 6 )
          {
            *(_OWORD *)&Identity[1] = 0i64;
            v18 = 0i64;
            MiIdentifyPfnWrapper(v9, &Identity[1]);
            v12 = v13;
            if( !v6 || (Identity[1] & 0x70) == 96 )
            {
              if( v13 )
              {
                v14 = v13;
                v24[0] = (PGET_UPDATED_BUS_RESOURCE)&Identity[1];
                v24[1] = (PGET_UPDATED_BUS_RESOURCE)24;
                do
                {
                  LODWORD(v15) = 4200450;
                  EtwTraceSiloDcEvent(v24, 1ui64, v11, (unsigned int)Identity[0], v16, v15);
                  ++*(_QWORD *)&Identity[3];
                  if( (Identity[1] & 0xF) == 2 )
                  {
                    v18 += 8;
                  }
                  else if( v18 && v18 != MmBadPointer )
                  {
                    v18 += 4096;
                  }
                  --v14;
                }
                while( v14 );
                v10 = v21;
                v6 = v19;
              }
            }
          }
          v9 += v12;
        }
        while( (unsigned __int64)v9 < v10 );
        v8 = v22;
      }
      ++v7;
    }
    while( v7 < v8->NumberOfRuns );
    v5 = v20;
    v4 = Identity[0];
  }
  MiDereferencePageRuns(v8);
  if( !v6 )
  {
    LODWORD(v23[0]) &= 0xFFFFFFE0;
    v23[1] = (__int64)MmPfnDatabase;
    v23[2] = MxPfnAllocation;
    v24[0] = (PGET_UPDATED_BUS_RESOURCE)v23;
    LODWORD(v15) = 4200450;
    v24[1] = (PGET_UPDATED_BUS_RESOURCE)24;
    EtwTraceSiloDcEvent(v24, 1ui64, v5, v4, 635, v15);
  }
}

Referenced by:

EtwpKernelTraceRundown
EtwpSetMark