CmpMachineHiveLoadedWorkItem
void __fastcall CmpMachineHiveLoadedWorkItem(__int64 a1){
ULONG_PTR v2;
_EX_PUSH_LOCK *v3;
_QWORD *v4;
__int64 *v5;
__int64 v6;
v2 = a1 + 144;
v3 = (_EX_PUSH_LOCK *)(a1 + 144);
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)(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, 0);
((void(__fastcall *)(__int64))v5[2])(v5[3]);
ExAcquirePushLockExclusiveEx(v3, 0i64);
*((_BYTE *)v5 + 36) = 0;
if( *((_BYTE *)v5 + 38) )
KeSetEvent((PRKEVENT)((char *)&CmpDummyThreadEvent + 1984), 0, 0);
}
}
while( _InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 176), 0xFFFFFFFF) > 1 );
ExReleasePushLockEx((ULONG_PTR)v3, 0);
}Referenced by:
No references.