IopDisassociateThreadIrp

VOID __stdcall IopDisassociateThreadIrp(){
  INT64 v0; 
  INT64 v1; 
  unsigned __int8 CurrentIrql; 
  unsigned int *p_SystemCallNumber; 
  UINT8 v4; 
  _QWORD *v5; 
  UINT8 v6; 
  _QWORD *v7; 
  __int64 v8; 
  _QWORD *v9; 
  __int64 v10; 
  __int64 v11; 
  _ADAPTER_OBJECT *v12; 
  _DWORD *ErrorLogEntry; 

  CurrentIrql = KeGetCurrentIrql();
  __writecr8(1ui64);
  p_SystemCallNumber = &KeGetCurrentThread()[1].SystemCallNumber;
  if( *(unsigned int **)p_SystemCallNumber == p_SystemCallNumber )
    goto LABEL_4;
  v4 = KeAcquireQueuedSpinLock(11i64, v0, v1);
  v5 = *(_QWORD **)p_SystemCallNumber;
  v6 = v4;
  if( *(char *)(*(_QWORD *)p_SystemCallNumber + 35i64) == *(char *)(*(_QWORD *)p_SystemCallNumber + 34i64) + 2 )
  {
    KeReleaseQueuedSpinLock(LockQueueIoCompletionLock, v4);
LABEL_4:
    __writecr8(CurrentIrql);
    return;
  }
  ObfReferenceObjectWithTag((VOID *)v5[15], 0x746C6644ui64);
  v7 = *(_QWORD **)p_SystemCallNumber;
  v8 = **(_QWORD **)p_SystemCallNumber;
  if( *(unsigned int **)(*(_QWORD *)p_SystemCallNumber + 8i64) != p_SystemCallNumber
    || *(_QWORD **)(v8 + 8) != v7
    || (*(_QWORD *)p_SystemCallNumber = v8,
        *(_QWORD *)(v8 + 8) = p_SystemCallNumber,
        v5[1] = v5,
        *v5 = v5,
        v9 = (_QWORD *)*(&stru_140C452E0 + 273),
        (_UNKNOWN *)**(&stru_140C452E0 + 273) != (_UNKNOWN *)((char *)&stru_140C452E0 + 2176)) )
  {
    __fastfail(3u);
  }
  *v7 = (char *)&stru_140C452E0 + 2176;
  v7[1] = v9;
  *v9 = v7;
  *(&stru_140C452E0 + 273) = v7;
  if( *((_BYTE *)v5 + 35) <= *((_BYTE *)v5 + 34)
    && (v11 = v5[20]) != 0
    && (v10 = v5[19], v12 = *(_ADAPTER_OBJECT **)(v10 + 40), *(_ADAPTER_OBJECT **)(v11 + 8) == v12) )
  {
    ObfReferenceObjectWithTag(*(VOID **)(v10 + 40), 0x746C6644ui64);
  }
  else
  {
    v12 = 0i64;
  }
  KeReleaseQueuedSpinLock(LockQueueIoCompletionLock, v6);
  __writecr8(CurrentIrql);
  if( v12 )
  {
    ErrorLogEntry = IoAllocateErrorLogEntry(v12, 0x30u);
    if( ErrorLogEntry )
    {
      ErrorLogEntry[3] = -2147221450;
      IoWriteErrorLogEntry(ErrorLogEntry);
    }
    HalPutDmaAdapter(v12);
  }
}

Referenced by:

IoCancelThreadIo