PnprRecopyMirrorPages

__int64 PnprRecopyMirrorPages(){
  __int64 Number; 
  __int64 v1; 
  __int64 v2; 
  int v3; 
  __int64 result; 
  int v5; 
  __int64 v6; 
  int v7; 
  int v8; 
  int v9; 
  __int64 v10; 
  int v11; 
  int v12; 

  Number = KeGetPcr()->Prcb.Number;
  PnprGetStackLimits((_QWORD *)(PnprContext + 216 + 8 * Number), (UINT64 *)(PnprContext + 10456 + 8 * Number));
  v1 = PnprContext;
  v2 = 0i64;
  if( *(_DWORD *)(PnprContext + 176) )
  {
    while( 1 )
    {
      v3 = PnprRecopyAddress(
             *(_QWORD *)(v1 + 8 * v2 + 216),
             *(_DWORD *)(v1 + 8 * v2 + 10456) - (unsigned int)*(_QWORD *)(v1 + 8 * v2 + 216));
      if( v3 < 0 )
        break;
      if( (_DWORD)v2 != *(_DWORD *)(PnprContext + 180) )
      {
        v3 = PnprRecopyMappingReserve((__int64 *)(*(_QWORD *)(PnprContext + 144) + 24 * v2));
        if( v3 < 0 )
        {
          v9 = 5613;
          goto LABEL_17;
        }
        v3 = PnprRecopyMappingReserve((__int64 *)(*(_QWORD *)(PnprContext + 136) + 24 * v2));
        if( v3 < 0 )
        {
          v9 = 5621;
          goto LABEL_17;
        }
      }
      v1 = PnprContext;
      v2 = (unsigned int)(v2 + 1);
      if( (unsigned int)v2 >= *(_DWORD *)(PnprContext + 176) )
        goto LABEL_7;
    }
    v9 = 5597;
LABEL_17:
    v10 = PnprContext;
    v11 = *(_DWORD *)(PnprContext + 20984);
    if( !v11 )
      v11 = v9;
    *(_DWORD *)(PnprContext + 20984) = v11;
    v12 = *(_DWORD *)(v10 + 20988);
    if( !v12 )
      v12 = 1;
    *(_DWORD *)(v10 + 20988) = v12;
    return(unsigned int)v3;
  }
  else
  {
LABEL_7:
    result = PnprRecopyAddress(v1, 0x5238u);
    if( (int)result >= 0 )
    {
      result = PnprCopyReservedMapping();
      if( (int)result >= 0 )
        return 0i64;
      v5 = 5645;
    }
    else
    {
      v5 = 5633;
    }
    v6 = PnprContext;
    v7 = *(_DWORD *)(PnprContext + 20984);
    if( !v7 )
      v7 = v5;
    *(_DWORD *)(PnprContext + 20984) = v7;
    v8 = *(_DWORD *)(v6 + 20988);
    if( !v8 )
      v8 = 1;
    *(_DWORD *)(v6 + 20988) = v8;
  }
  return result;
}

Referenced by:

PnprSwapFinalize