PnprQuiesce

__int64 PnprQuiesce(){
  int v0; 
  __int64 v1; 
  int v2; 
  int v3; 

  v0 = 0;
  if( (*(_DWORD *)(PnprContext + 64) & 0x20) != 0 )
  {
    PnprLockPagesForReplace();
    goto LABEL_9;
  }
  KeSetEvent((PRKEVENT)(PnprContext + 20760), 0, 1u);
  KeWaitForSingleObject(PnprContext + 20784, 0, 0, 0, 0i64);
  v1 = PnprContext;
  v0 = *(_DWORD *)(PnprContext + 20856);
  if( v0 >= 0 )
  {
LABEL_9:
    PnprQuiesceProcessors();
    return(unsigned int)v0;
  }
  v2 = *(_DWORD *)(PnprContext + 20984);
  if( !v2 )
    v2 = 1899;
  *(_DWORD *)(PnprContext + 20984) = v2;
  v3 = *(_DWORD *)(v1 + 20988);
  if( !v3 )
    v3 = 1;
  *(_DWORD *)(v1 + 20988) = v3;
  return(unsigned int)v0;
}

Referenced by:

PnprEndMirroring
PnprInitiateReplaceOperation