CmpMachineHiveLoadedWorkItem
VOID __fastcall CmpMachineHiveLoadedWorkItem(INT64 a1){
UINT64 v2;
UINT64 v3;
_QWORD *v4;
__int64 *v5;
__int64 v6;
v2 = a1 + 144;
v3 = a1 + 144;
ExAcquirePushLockExclusiveEx(a1 + 144, 0i64);
do
{
while( 1 )
{
v4 = (_QWORD *)(a1 + 152);
v5 = *(__int64 **)(a1 + 152);
if( v5 == (__int64 *)(a1 + 152) )
break;
v6 = *v5;
if( (_QWORD *)v5[1] != v4 || *(__int64 **)(v6 + 8) != v5 )
__fastfail(3u);
*v4 = v6;
*(_QWORD *)(v6 + 8) = v4;
*((_WORD *)v5 + 18) = 1;
ExReleasePushLockEx(v2, 0i64);
((void(__fastcall *)(__int64))v5[2])(v5[3]);
ExAcquirePushLockExclusiveEx(v3, 0i64);
*((_BYTE *)v5 + 36) = 0;
if( *((_BYTE *)v5 + 38) )
KeSetEvent(&CmpMachineHiveCallbackEvent, 0);
}
}
while( _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 176), 0xFFFFFFFF) > 1 );
ExReleasePushLockEx(v3, 0i64);
}Referenced by:
No references.