PnprSwapFinalize

__int64 PnprSwapFinalize(){
  int v0; 
  __int64 v1; 
  int MillisecondCounter; 
  __int64 v3; 
  __int64 v4; 
  int v5; 
  int v6; 

  v0 = 0;
  if( *(_DWORD *)(*(_QWORD *)(PnprContext + 24) + 4i64) && (*(_DWORD *)(PnprContext + 64) & 8) == 0 )
    PnprRecopyMirrorPages();
  v1 = PnprContext;
  *(_DWORD *)(PnprContext + 64) &= ~4u;
  if( (*(_DWORD *)(v1 + 64) & 0x20) == 0 )
    __wbinvd();
  if( *(_QWORD *)(PnprContext + 20944) )
  {
    MillisecondCounter = PnprGetMillisecondCounter(0);
    v3 = PnprContext;
    *(_DWORD *)(PnprContext + 21012) = MillisecondCounter;
    v0 = (*(__int64(__fastcall **)(_QWORD))(v3 + 20944))(*(_QWORD *)(v3 + 20880));
    if( v0 < 0 )
    {
      v4 = PnprContext;
      v5 = *(_DWORD *)(PnprContext + 20984);
      if( !v5 )
        v5 = 2980;
      *(_DWORD *)(PnprContext + 20984) = v5;
      v6 = *(_DWORD *)(v4 + 20988);
      if( !v6 )
        v6 = 8;
      *(_DWORD *)(v4 + 20988) = v6;
    }
    *(_DWORD *)(PnprContext + 21016) = PnprGetMillisecondCounter(0);
  }
  return(unsigned int)v0;
}

Referenced by:

PnprSwap