MiMirrorReduceBlackWrites

UINT64 __fastcall MiMirrorReduceBlackWrites(INT64 a1, INT64 a2){
  int v2; 
  INT64 v3; 
  INT64 v4; 
  int v5; 
  __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  _MMPFN *v11; 
  unsigned __int64 v12; 
  __int64 v13; 
  _MMPFN *PfnDb; 
  INT64 v16; 
  int v18; 
  int v19; 
  __int64 v20; 
  v2 = *(_DWORD *)(a2 + 8);
  v3 = a1;
  v4 = *(_QWORD *)a2;
  v5 = *(_DWORD *)(a2 + 12);
  v16 = v4;
  v19 = v5;
  if( (v2 & 8) != 0 )
  {
    v6 = 1i64;
  }
  else
  {
    v6 = 2i64;
    if( (v2 & 0x400) != 0 )
      v6 = 1i64;
  }
  v7 = 0;
  v18 = 0;
  v8 = 0i64;
LABEL_6:
  v20 = v6;
  while( 1 )
  {
    while( 1 )
    {
      if( v6 > 1 )
        v9 = v3 + 40i64 * v7 + 2432;
      else
        v9 = *(_QWORD *)(v3 + 8 * v6 + 2176) + 40 * v8;
      v10 = *(_QWORD *)(v9 + 16);
      if( v10 != 0xFFFFFFFFFi64 )
      {
        while( 1 )
        {
          if( v6 == 2 && (unsigned int)MiIsDecayPfn(v10) == 1 )
          {
            v12 = *((_QWORD *)v11 + 6 * v10 + 2);
            if( qword_140C4DC80 && (v12 & 0x10) == 0 )
              v12 &= ~qword_140C4DC80;
            v13 = (v12 >> 12) & 0xFFFFFFFFFi64;
            if( v13 == v10 )
              goto LABEL_22;
            PfnDb = MmGetPfnDb();
            do
            {
              MiMirrorOmitPagesFromCopy(v16, v13, 1ui64);
              v13 = *((_QWORD *)PfnDb + 6 * v13) & 0xFFFFFFFFFi64;
            }
            while( v13 != v10 );
            v6 = v20;
          }
          else
          {
            MiMirrorOmitPagesFromCopy(v16, v10, 1ui64);
          }
          v11 = MmGetPfnDb();
LABEL_22:
          v10 = *((_QWORD *)v11 + 6 * v10) & 0xFFFFFFFFFi64;
          if( v10 == 0xFFFFFFFFFi64 )
          {
            v7 = v18;
            v3 = a1;
            v5 = v19;
            break;
          }
        }
      }
      if( v6 > 1 )
        break;
      v8 = (unsigned int)(v8 + 1);
      if( (unsigned int)v8 >= dword_140C4DC3C )
      {
        v8 = 0i64;
        break;
      }
    }
    if( !v6 )
      return MiMirrorNodeLargePages(v16, v3, (UINT8 *)1);
    if( v6 == 2 )
    {
      v18 = ++v7;
      if( v7 != v5 )
        continue;
    }
    --v6;
    goto LABEL_6;
  }
}

Referenced by:

MiMirrorBlackPhase