TtmNotifySessionPowerRequestDeleted
VOID __stdcall TtmNotifySessionPowerRequestDeleted(UINT64 SessionId, INT64 a2){
unsigned __int64 v2;
int v3;
__int64 v4;
int v5;
__int64 v6;
_QWORD *i;
_QWORD *v8;
__int64 v9;
v9 = 0i64;
v2 = (int)a2;
v3 = TtmpAcquireSessionById(&v9, SessionId);
v4 = v9;
if( v3 >= 0 )
{
if( *(_DWORD *)(v9 + 272) )
{
v5 = *(_DWORD *)(v9 + 276) >> 5;
v6 = -1i64 << (*(_DWORD *)(v9 + 276) & 0x1F);
v9 = v6 & v2;
for( i = (_QWORD *)(*(_QWORD *)(v4 + 280)
+ 8
* ((37
* ((unsigned __int8)((v6 & v2) >> 48)
+ 37
* ((unsigned __int8)((unsigned __int16)((v6 & v2) >> 32) >> 8)
+ 37
* ((unsigned __int8)((v6 & v2) >> 32)
+ 37
* ((((unsigned int)v6 & (unsigned int)v2) >> 24)
+ 37
* ((unsigned __int8)(((unsigned int)v6 & (unsigned int)v2) >> 16)
+ 37
* ((unsigned __int8)((unsigned __int16)(v6 & v2) >> 8)
+ 37 * ((unsigned __int8)(v6 & v2) + 11623883)))))))
+ ((v6 & v2) >> 56)) & (unsigned int)(v5 - 1))); ; i = (_QWORD *)*i )
{
v8 = (_QWORD *)*i;
if( (*i & 1) != 0 )
break;
if( (v6 & v8[1]) == (v6 & v2) )
{
*i = *v8;
--*(_DWORD *)(v4 + 272);
*v8 |= 0x8000000000000002ui64;
goto LABEL_10;
}
}
v8 = 0i64;
LABEL_10:
if( v8 )
ExFreePoolWithTag(v8, 0x52507454u);
}
TtmiLogSessionPowerRequestDeleted();
}
else
{
TtmiLogError((PSTR)"TtmNotifySessionPowerRequestDeleted", 3666i64, (unsigned int)v3, -1i64);
}
if( v4 )
{
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
}Referenced by:
PopNotifySessionUserPowerRequestDeleted