MiAddPhysicalPagesToCrashDump

VOID __stdcall MiAddPhysicalPagesToCrashDump(_MM_KERNEL_DUMP_CONTEXT *Context){
  PHYSICAL_MEMORY_DESCRIPTOR *v1; 
  int v2; 
  unsigned __int64 v4; 
  unsigned __int64 BasePage; 
  _MMPFN *v6; 
  __int64 v7; 
  unsigned __int64 EntireField; 
  __int64 v9; 
  bool v10; 
  char v11; 
  INT64 v12; 
  INT64 v13; 

  v1 = MmPhysicalMemoryBlock;
  v2 = 0;
  if( MmPhysicalMemoryBlock->NumberOfRuns )
  {
    while( 1 )
    {
      v4 = 0i64;
      BasePage = v1->Run[v2].BasePage;
      if( v1->Run[v2].PageCount )
        break;
LABEL_17:
      if( ++v2 >= v1->NumberOfRuns )
        return;
    }
    while( 1 )
    {
      v6 = &MmGetPfnDb()[BasePage];
      v7 = 1i64;
      EntireField = v6->u4.EntireField;
      if( (EntireField & 0x1000000000i64) != 0 )
        break;
      if( (*(_BYTE *)(&v6->u3 + 1) & 0xC0) == 64 )
      {
        v11 = *(_BYTE *)(&v6->u3 + 1) & 7;
        if( v11 == 6 )
        {
          if( ((EntireField >> 60) & 7) == 1
            || (v6->u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64) != 0 && (EntireField & 0xFFFFFFFFFi64) == 0xFFFFFFFFDi64 )
          {
            goto LABEL_16;
          }
LABEL_15:
          (*(void(__fastcall **)(_MM_KERNEL_DUMP_CONTEXT *, unsigned __int64, __int64, __int64))Context)(
            Context,
            BasePage,
            v7,
            2i64);
          goto LABEL_16;
        }
        if( (unsigned __int8)(v11 - 2) <= 1u )
        {
          v10 = (*(_DWORD *)(&v6->3 + 1) & 0x400i64) == 0;
LABEL_14:
          if( v10 )
            goto LABEL_15;
        }
      }
LABEL_16:
      v1 = MmPhysicalMemoryBlock;
      v4 += v7;
      BasePage += v7;
      if( v4 >= MmPhysicalMemoryBlock->Run[v2].PageCount )
        goto LABEL_17;
    }
    LODWORD(v12) = 0;
    LODWORD(v13) = 0;
    LODWORD(v9) = MiGetPagesRemainingInResidentPage((INT64)v6, &v12, &v13);
    v7 = v9;
    if( (_DWORD)v12 != 6 )
      goto LABEL_16;
    v10 = (_DWORD)v13 == 1;
    goto LABEL_14;
  }
}

Referenced by:

MmGetDumpRange