PopNetEvaluationWorkerCallback

VOID __stdcall PopNetEvaluationWorkerCallback(VOID *Context){
  POP_NET_STANDBY_STATE v1; 
  POP_NET_STANDBY_REASON v2; 
  char v3; 
  char v4; 
  char v5; 
  UINT64 v6; 
  UINT64 v7; 
  POP_NET_STANDBY_STATE v8; 
  POP_NET_STANDBY_REASON v9; 
  unsigned __int64 v10; 
  char v11; 
  POP_NET_STANDBY_REASON Reason; 
  POP_NET_STANDBY_STATE State; 

  Reason = PopNetStandbyReasonNone;
  State = PopNetStandbyCs;
  PopAcquirePolicyLock();
  while( 1 )
  {
    v1 = PopNetStandbyState;
    v2 = PopNetStandbyReason;
    v3 = 0;
    v11 = 0;
    v4 = 0;
    v5 = 0;
    PopNetEvaluateStateMask(&State, &Reason);
    v8 = State;
    if( State == v1 )
      goto LABEL_6;
    if( v1 == PopNetStandbyDs )
    {
      v5 = 1;
    }
    else if( State != PopNetStandbyDs )
    {
      goto LABEL_6;
    }
    v4 = 1;
    if( PopNetResiliencyEngaged && qword_140C54140 )
    {
      v11 = 1;
      PopNetSetResiliencyPhaseBias(1);
    }
LABEL_6:
    v9 = Reason;
    if( Reason != v2 )
    {
      v3 = 1;
      v10 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&stru_140C23628 + 115);
      PopNetStandbyReason = v9;
      if( PopCsResiliencyStats[0] && !dword_140C22F6C )
        dword_140C22F6C = v9;
      KxReleaseSpinLock((UINT64 *)&stru_140C23628 + 115);
      v7 = (unsigned int)KiIrqlFlags;
      __writecr8(v10);
    }
    if( v8 != v1 )
    {
      v3 = 1;
      PopNetStandbyState = v8;
      PopNetUpdateCsConsumptionFlags();
    }
    if( v4 )
    {
      LOBYTE(v7) = v5;
      PopNetPublishWnfStateUpdate(v7, v6);
      if( v11 )
        PopNetSetResiliencyPhaseBias(0);
    }
    if( !v3 )
      break;
    if( PopDiagHandleRegistered )
      PopTraceStandbyConnectivityUpdate(v8, v9);
    else
      PopNetDeferLogRequest = 1;
  }
  _InterlockedExchange(&dword_140C20828, 0);
  PopReleasePolicyLock();
}

Referenced by:

No references.