KiActivateWaiterKQueue

VOID __stdcall KiActivateWaiterKQueue(_KQUEUE *Queue){
  char *v2; 
  _KQUEUE *v3; 
  __int64 v4; 
  _KQUEUE **v5; 
  char v6; 
  __int64 v7; 

  if( *((_DWORD *)Queue + 10) < *((_DWORD *)Queue + 11) )
  {
    v2 = (char *)Queue + 24;
    v3 = (_KQUEUE *)*((_QWORD *)Queue + 3);
    if( v3 != (_KQUEUE *)((char *)Queue + 24) && *((_KQUEUE **)Queue + 1) != (_KQUEUE *)((char *)Queue + 8) )
    {
      v4 = *(_QWORD *)v3;
      v5 = (_KQUEUE **)*((_QWORD *)v3 + 1);
      if( *(_KQUEUE **)(*(_QWORD *)v3 + 8i64) == v3 && *v5 == v3 )
      {
        *v5 = (_KQUEUE *)v4;
        *(_QWORD *)(v4 + 8) = v5;
        *(_QWORD *)v3 = 0i64;
        KiWakeQueueWaiter(KeGetCurrentPrcb(), Queue, (INT64)v3);
        if( v6 )
        {
          --*((_DWORD *)Queue + 1);
          goto LABEL_3;
        }
        v7 = *(_QWORD *)v2;
        if( *(char **)(*(_QWORD *)v2 + 8i64) == v2 )
        {
          *(_QWORD *)v3 = v7;
          *((_QWORD *)v3 + 1) = v2;
          *(_QWORD *)(v7 + 8) = v3;
          *(_QWORD *)v2 = v3;
          goto LABEL_3;
        }
      }
      __fastfail(3u);
    }
  }
LABEL_3:
  _InterlockedAnd((volatile signed __int32 *)Queue, 0xFFFFFF7F);
}

Referenced by:

KiActivateWaiterQueueWithNoLocks