ExpLookupHandleTableEntry

_HANDLE_TABLE_ENTRY *__stdcall ExpLookupHandleTableEntry(_HANDLE_TABLE *HandleTable, _EXHANDLE Handle){
  unsigned __int64 v2; 
  volatile unsigned __int64 TableCode; 

  v2 = Handle.Value & 0xFFFFFFFFFFFFFFFCui64;
  if( v2 >= HandleTable->NextHandleNeedingPool )
    return 0i64;
  TableCode = HandleTable->TableCode;
  if( (TableCode & 3) == 1 )
    return(_HANDLE_TABLE_ENTRY *)(*(_QWORD *)(TableCode + 8 * (v2 >> 10) - 1) + 4 * (v2 & 0x3FF));
  if( (TableCode & 3) != 0 )
    return(_HANDLE_TABLE_ENTRY *)(*(_QWORD *)(*(_QWORD *)(TableCode + 8 * (v2 >> 19) - 2) + 8 * ((v2 >> 10) & 0x1FF))
                                 + 4 * (v2 & 0x3FF));
  return(_HANDLE_TABLE_ENTRY *)(TableCode + 4 * v2);
}

Referenced by:

AlpcpLookupMessage
ExDupHandleTable
ExEnumHandleTable
ExMapHandleToPointer
ExSweepHandleTable
ExpGetHandleExtraInfo
ExpGetNextHandleTableEntry
ExpSetHandleExtraInfo
ExpSnapShotHandleTables
NtClose
ObReferenceFileObjectForWrite
ObWaitForMultipleObjects
ObpReferenceObjectByHandleWithTag
ObpReferenceProcessObjectByHandle
PspReferenceCidTableEntry