IopAcquireReleaseConnectLockInternal

VOID __fastcall IopAcquireReleaseConnectLockInternal(INT64 a1, CHAR a2, CHAR a3){
  struct _KEVENT *v3; 
  _ETHREAD *CurrentThread; 
  if( (a3 & 1) != 0 )
  {
    v3 = (struct _KEVENT *)(a1 + 40);
  }
  else if( (a3 & 2) != 0 )
  {
    v3 = &ActiveConnectListLock;
  }
  else
  {
    v3 = *(struct _KEVENT **)(a1 + 24);
  }
  if( a2 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    KeWaitForSingleObject(v3, Executive, 0, 0, 0i64);
  }
  else
  {
    KeSetEvent(v3, 0);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  }
}

Referenced by:

IopAcquireActiveConnectLock
IopDestroyActiveConnectBlock
IopInitializeActiveConnectBlock
IopReleaseActiveConnectLock