IopInitializeActiveConnectBlock

VOID __stdcall IopInitializeActiveConnectBlock(
        _INTERRUPT_CONNECTION_DATA *ConnectionData,
        _ACTIVE_CONNECT_BLOCK *ConnectBlock){
  unsigned int Gsiv; 
  __int64 *v5; 
  __int64 *v6; 
  _ACTIVE_CONNECT_BLOCK *v7; 
  _ACTIVE_CONNECT_BLOCK **v8; 
  _ACTIVE_CONNECT_BLOCK **v9; 

  memset(ConnectBlock, 0i64, 0x50u);
  if( ConnectionData->Vectors[0].Type == InterruptTypeControllerInput )
  {
    *((_QWORD *)ConnectBlock + 1) = ConnectBlock;
    *(_QWORD *)ConnectBlock = ConnectBlock;
    KeInitializeEvent((INT64)(ConnectBlock + 10), 1, 1u);
    ConnectBlock[16] = 1;
    Gsiv = ConnectionData->Vectors[0].ControllerInput.Gsiv;
    ConnectBlock[4] = Gsiv;
    IopAcquireReleaseConnectLockInternal(0i64, 1u, 2ui64);
    v5 = (__int64 *)qword_140C452C0;
    v6 = 0i64;
    while( v5 != &qword_140C452C0 )
    {
      if( *((_DWORD *)v5 + 4) == Gsiv )
      {
        v6 = v5;
        break;
      }
      if( *((_DWORD *)v5 + 4) > Gsiv )
        break;
      v5 = (__int64 *)*v5;
    }
    if( v6 )
    {
      *((_QWORD *)ConnectBlock + 3) = v6[3];
      *((_QWORD *)ConnectBlock + 4) = v6[4];
      _InterlockedIncrement((volatile signed __int32 *)v6[4]);
    }
    else
    {
      *((_QWORD *)ConnectBlock + 3) = ConnectBlock + 10;
      *((_QWORD *)ConnectBlock + 4) = ConnectBlock + 16;
    }
    v7 = (_ACTIVE_CONNECT_BLOCK *)qword_140C452C0;
    if( (_QWORD *)qword_140C452C0 != &qword_140C452C0 )
    {
      while( v7[4] <= (unsigned int)ConnectBlock[4] )
      {
        v7 = *(_ACTIVE_CONNECT_BLOCK **)v7;
        if( v7 == (_ACTIVE_CONNECT_BLOCK *)&qword_140C452C0 )
          goto LABEL_21;
      }
      v9 = (_ACTIVE_CONNECT_BLOCK **)*((_QWORD *)v7 + 1);
      if( *v9 != v7 )
        goto LABEL_23;
      *(_QWORD *)ConnectBlock = v7;
      *((_QWORD *)ConnectBlock + 1) = v9;
      *v9 = ConnectBlock;
      *((_QWORD *)v7 + 1) = ConnectBlock;
LABEL_21:
      if( v7 != (_ACTIVE_CONNECT_BLOCK *)&qword_140C452C0 )
        goto LABEL_9;
    }
    v8 = (_ACTIVE_CONNECT_BLOCK **)qword_140C452C8;
    if( *(_QWORD **)qword_140C452C8 == &qword_140C452C0 )
    {
      *(_QWORD *)ConnectBlock = &qword_140C452C0;
      *((_QWORD *)ConnectBlock + 1) = v8;
      *v8 = ConnectBlock;
      qword_140C452C8 = (__int64)ConnectBlock;
LABEL_9:
      IopAcquireReleaseConnectLockInternal(0i64, 0, 2ui64);
      return;
    }
LABEL_23:
    __fastfail(3u);
  }
}

Referenced by:

IoDisconnectInterrupt
IopConnectInterrupt