ExpSetWorkerFactoryDeferredCreateTimer

VOID __fastcall ExpSetWorkerFactoryDeferredCreateTimer(INT64 NewState){
  LARGE_INTEGER v1; 
  ULONG v2; 
  signed __int32 v3; 
  int v4; 
  switch( (_DWORD)NewState )
  {
    case 1:
      v1.QuadPart = ExpWorkerFactoryDeferredLongTimeout;
      v2 = 500;
      break;
    case 2:
      v1.QuadPart = ExpWorkerFactoryDeferredMediumTimeout;
      v2 = 120;
      break;
    case 3:
      v1 = ExpWorkerFactoryDeferredShortTimeout;
      v2 = 30;
      break;
    default:
      v1.QuadPart = 0i64;
      v2 = 0;
      break;
  }
  _m_prefetchw(&ExpWorkerFactoryThreadCreationState);
  v3 = ExpWorkerFactoryThreadCreationState;
  if( (int)NewState > ExpWorkerFactoryThreadCreationState )
  {
    while( 1 )
    {
      v4 = _InterlockedCompareExchange(&ExpWorkerFactoryThreadCreationState, NewState, v3);
      if( v3 == v4 )
        break;
      v3 = v4;
      if( (int)NewState <= v4 )
        return;
    }
    KeSetCoalescableTimer((PKTIMER)&ExpWorkerFactoryThreadCreationTimer, v1, 0, v2, 0i64);
  }
}

Referenced by:

ExpWorkerFactoryCheckCreate