HalpIrtReleaseDeviceAperture
VOID __stdcall HalpIrtReleaseDeviceAperture(INT64 a1, INT64 a2){
int v2;
int v3;
void ***i;
bool v5;
void **v6;
void **v7;
__int64 v8;
v2 = a1;
v3 = a2;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
for( i = (void ***)*(&CmpDummyThreadEvent + 896); i != (void ***)((char *)&CmpDummyThreadEvent + 7168); i = (void ***)*i )
{
if( *((_DWORD *)i + 4) == v2 )
{
v5 = *((_DWORD *)i + 5) == v3;
*((_DWORD *)i + 5) -= v3;
if( v5 )
{
*((_DWORD *)i + 6) = 0;
*((_DWORD *)i + 7) = 0;
v6 = *i;
if( (*i)[1] != i
|| (v7 = i[1], *v7 != i)
|| (*v7 = v6,
v6[1] = v7,
v8 = *(&CmpDummyThreadEvent + 966),
*(_UNKNOWN **)(*(&CmpDummyThreadEvent + 966) + 8i64) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 7728)) )
{
__fastfail(3u);
}
*i = (void **)*(&CmpDummyThreadEvent + 966);
i[1] = (void **)((char *)&CmpDummyThreadEvent + 7728);
*(_QWORD *)(v8 + 8) = i;
*(&CmpDummyThreadEvent + 966) = i;
}
break;
}
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&CmpDummyThreadEvent + 7776));
}Referenced by:
HalpIrtAllocateIndex
HalpIrtFreeIndex