PnprSwapFinalize

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

Referenced by:

PnprSwap