MiMirrorReduceBlackWrites

VOID __stdcall MiMirrorReduceBlackWrites(_MM_MIRROR_DISPATCH *MirrorDispatch, INT64 a2){
  int v2; 
  _MM_MIRROR_DISPATCH *v3; 
  INT64 v4; 
  int v5; 
  __int64 v6; 
  int v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  _MMPFN *v11; 
  union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v12; 
  __int64 v13; 
  _MMPFN *PfnDb; 
  INT64 v15; 
  int v17; 
  int v18; 
  __int64 v19; 

  v2 = *(_DWORD *)(a2 + 8);
  v3 = MirrorDispatch;
  v4 = *(_QWORD *)a2;
  v5 = *(_DWORD *)(a2 + 12);
  v15 = v4;
  v18 = v5;
  if( (v2 & 8) != 0 )
  {
    v6 = 1i64;
  }
  else
  {
    v6 = 2i64;
    if( (v2 & 0x400) != 0 )
      v6 = 1i64;
  }
  v7 = 0;
  v17 = 0;
  v8 = 0i64;
LABEL_6:
  v19 = v6;
  while( 1 )
  {
    while( 1 )
    {
      if( v6 > 1 )
        v9 = (__int64)&v3[10 * v7 + 608];
      else
        v9 = *(_QWORD *)&v3[2 * v6 + 544] + 40 * v8;
      v10 = *(_QWORD *)(v9 + 16);
      if( v10 != 0xFFFFFFFFFi64 )
      {
        while( 1 )
        {
          if( v6 == 2 && MiIsDecayPfn(v10) == 1 )
          {
            v12.Long = (unsigned __int64)v11[v10].OriginalPte.u;
            if( *(&stru_140C4DB30 + 42) && (v12.Long & 0x10) == 0 )
              v12.Long &= ~*(&stru_140C4DB30 + 42);
            v13 = (v12.Long >> 12) & 0xFFFFFFFFFi64;
            if( v13 == v10 )
              goto LABEL_22;
            PfnDb = MmGetPfnDb();
            do
            {
              MiMirrorOmitPagesFromCopy(v15, v13, 1ui64);
              v13 = PfnDb[v13].u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 & 0xFFFFFFFFFi64;
            }
            while( v13 != v10 );
            v6 = v19;
          }
          else
          {
            MiMirrorOmitPagesFromCopy(v15, v10, 1ui64);
          }
          v11 = MmGetPfnDb();
LABEL_22:
          v10 = v11[v10].u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 & 0xFFFFFFFFFi64;
          if( v10 == 0xFFFFFFFFFi64 )
          {
            v7 = v17;
            v3 = MirrorDispatch;
            v5 = v18;
            break;
          }
        }
      }
      if( v6 > 1 )
        break;
      v8 = (unsigned int)(v8 + 1);
      if( (unsigned int)v8 >= *(&stru_140C4DB30 + 67) )
      {
        v8 = 0i64;
        break;
      }
    }
    if( !v6 )
      break;
    if( v6 == 2 )
    {
      v17 = ++v7;
      if( v7 != v5 )
        continue;
    }
    --v6;
    goto LABEL_6;
  }
  MiMirrorNodeLargePages(v15, v3, 1);
}

Referenced by:

MiMirrorBlackPhase