ObpEnumFindHandleProcedure
UINT8 __stdcall ObpEnumFindHandleProcedure(
_HANDLE_TABLE *ObjectTable,
_HANDLE_TABLE_ENTRY *ObjectTableEntry,
VOID *HandleId,
VOID *EnumParameter){
UINT8 v5;
__int64 v7;
_DWORD *v8;
__int64 v9;
int v10[10];
if( !*(_QWORD *)EnumParameter
|| *(_QWORD *)EnumParameter == ((ObjectTableEntry->LowValue >> 16) & 0xFFFFFFFFFFFFFFF0ui64) )
{
v7 = *((_QWORD *)EnumParameter + 1);
if( !v7
|| v7 == ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ *(unsigned __int8 *)(((ObjectTableEntry->LowValue >> 16) & 0xFFFFFFFFFFFFFFF0ui64)
+ 0x18) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)(WORD1(ObjectTableEntry->LowValue) & 0xFFF0) >> 8)] )
{
v8 = (_DWORD *)*((_QWORD *)EnumParameter + 2);
if( !v8 )
goto LABEL_11;
v9 = (ObjectTableEntry->LowValue >> 17) & 7;
if( (ObjectTableEntry->LeafHandleValue.$E5B3C52FE72490EE6A49ADBB8529F30E::_bf_0 & 0x2000000) != 0 )
LOBYTE(v9) = v9 | 8;
if( *v8 == (v9 & 7)
&& v8[1] == (ObjectTableEntry->LeafHandleValue.$E5B3C52FE72490EE6A49ADBB8529F30E::_bf_0 & 0x1FFFFFF) )
{
LABEL_11:
v5 = 1;
}
else
{
v5 = 0;
}
}
else
{
v5 = 0;
}
}
else
{
v5 = 0;
}
_InterlockedExchangeAdd64(&ObjectTableEntry->VolatileLowValue, 1ui64);
_InterlockedOr(v10, 0);
if( ObjectTable->HandleContentionEvent._bf_0 )
ExfUnblockPushLock(&ObjectTable->HandleContentionEvent._bf_0, 0i64);
return v5;
}Referenced by:
No references.