MmIdentifyPhysicalMemory

INT64 __stdcall MmIdentifyPhysicalMemory(UINT64 LoggerId, UINT16 HookId, UINT64 LogActive){
  int v3; 
  unsigned int v4; 
  UINT64 v5; 
  int v6; 
  unsigned int v7; 
  _PHYSICAL_MEMORY_DESCRIPTOR *v8; 
  _MMPFN *v9; 
  unsigned __int64 v10; 
  UINT64 v11; 
  __int64 v12; 
  __int64 v13; 
  __int64 v14; 
  INT64 a6; 
  INT16 a5; 
  unsigned int a4; 
  _MMPFN_IDENTITY a4_4; 
  int v20; 
  UINT64 a3; 
  unsigned __int64 v22; 
  PHYSICAL_MEMORY_DESCRIPTOR *v23; 
  __int64 v24[3]; 
  EVENT_DATA_DESCRIPTOR a1; 
  a4 = HookId;
  a3 = LoggerId;
  v24[0] = 0i64;
  v4 = HookId;
  v5 = LoggerId;
  v20 = v3;
  a5 = LogActive;
  memset(&a4_4, 0, sizeof(a4_4));
  v6 = v3;
  a1 = 0i64;
  v7 = 0;
  v23 = MiReferencePageRuns((_MI_PARTITION *)&MiSystemPartition, 0i64);
  v8 = v23;
  if( v23->NumberOfRuns )
  {
    do
    {
      v9 = (_MMPFN *)((char *)MmGetPfnDb() + 48 * v8->Run[v7].BasePage);
      v10 = (unsigned __int64)v9 + 48 * v8->Run[v7].PageCount;
      v22 = v10;
      if( (unsigned __int64)v9 < v10 )
      {
        v11 = a3;
        do
        {
          v12 = 1i64;
          if( !v6 || (*((_QWORD *)v9 + 5) & 0x1000000000i64) != 0 || (*((_BYTE *)v9 + 34) & 7) == 6 )
          {
            memset(&a4_4, 0, sizeof(a4_4));
            MiIdentifyPfnWrapper(v9, &a4_4);
            v12 = v13;
            if( !v6 || (*(_BYTE *)&a4_4.u1.e1 & 0x70) == 96 )
            {
              if( v13 )
              {
                a1.Reserved = 0;
                v14 = v13;
                a1.Ptr = (unsigned __int64)&a4_4;
                a1.Size = 24;
                do
                {
                  LODWORD(a6) = 4200450;
                  EtwTraceSiloDcEvent(&a1, 1u, v11, a4, a5, a6);
                  ++a4_4.PageFrameIndex;
                  if( (*(_BYTE *)&a4_4.u1.e1 & 0xF) == 2 )
                  {
                    a4_4.u2.FileObject = (char *)a4_4.u2.FileObject + 8;
                  }
                  else if( a4_4.u2.FileObject && a4_4.u2.FileObject != MmBadPointer )
                  {
                    a4_4.u2.FileObject = (char *)a4_4.u2.FileObject + 4096;
                  }
                  --v14;
                }
                while( v14 );
                v10 = v22;
                v6 = v20;
              }
            }
          }
          v9 = (_MMPFN *)((char *)v9 + 48 * v12);
        }
        while( (unsigned __int64)v9 < v10 );
        v8 = v23;
      }
      ++v7;
    }
    while( v7 < v8->NumberOfRuns );
    v5 = a3;
    v4 = a4;
  }
  MiDereferencePageRuns(v8);
  if( !v6 )
  {
    LODWORD(v24[0]) &= 0xFFFFFFE0;
    a1.Reserved = 0;
    v24[1] = MmPfnDatabase;
    v24[2] = MxPfnAllocation;
    a1.Ptr = (unsigned __int64)v24;
    LODWORD(a6) = 4200450;
    a1.Size = 24;
    EtwTraceSiloDcEvent(&a1, 1u, v5, v4, 635, a6);
  }
  return 0i64;
}

Referenced by:

EtwpKernelTraceRundown
EtwpSetMark