WdipSemMarkNextTimedOutInstanceForDeletion

INT64 *__fastcall WdipSemMarkNextTimedOutInstanceForDeletion(INT64 **a1){
  _ETHREAD *CurrentThread; 
  INT64 *v2; 
  INT64 *v4; 
  INT64 *v6; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v2 = 0i64;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&qword_140C1A3B8, 0i64);
  if( a1 )
  {
    v4 = *a1;
    while( v4 != (INT64 *)&WdipSemEnabledInstanceTable )
    {
      v6 = v4;
      v4 = (INT64 *)*v4;
      if( ++*((_DWORD *)v6 + 10) >= 0xAu && *(_BYTE *)(v6[4] + 1176) && !*((_DWORD *)v6 + 11) )
      {
        *((_DWORD *)v6 + 11) = 1;
        v2 = v6;
        break;
      }
    }
  }
  ExReleasePushLockEx((UINT64)&qword_140C1A3B8, 0i64);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return v2;
}

Referenced by:

WdipTimeoutCheckRoutine