TtmNotifySessionPowerRequestDeleted
VOID __stdcall TtmNotifySessionPowerRequestDeleted(UINT64 SessionId, INT64 a2){
unsigned __int64 v2;
int v3;
_TTMI_SESSION *v4;
unsigned int v5;
__int64 v6;
_QWORD *i;
_QWORD *v8;
_TTMI_SESSION *v9;
v9 = 0i64;
v2 = (int)a2;
v3 = (unsigned int)TtmpAcquireSessionById(&v9, (unsigned int)SessionId);
v4 = v9;
if( v3 >= 0 )
{
if( v9[68] )
{
v5 = (unsigned int)v9[69] >> 5;
v6 = -1i64 << (v9[69] & 0x1F);
v9 = (_TTMI_SESSION *)(v6 & v2);
for( i = (_QWORD *)(*((_QWORD *)v4 + 35)
+ 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)) & (v5 - 1))); ; i = (_QWORD *)*i )
{
v8 = (_QWORD *)*i;
if( (*i & 1) != 0 )
break;
if( (v6 & v8[1]) == (v6 & v2) )
{
*i = *v8;
--v4[68];
*v8 |= 0x8000000000000002ui64;
goto LABEL_10;
}
}
v8 = 0i64;
LABEL_10:
if( v8 )
ExFreePoolWithTag(v8, 0x52507454u);
}
TtmiLogSessionPowerRequestDeleted();
}
else
{
TtmiLogError((INT8 *)"TtmNotifySessionPowerRequestDeleted", 0xE52ui64, (unsigned int)v3, -1i64);
}
if( v4 )
{
ExReleaseResourceLite(&TtmpSessionLock);
KeLeaveCriticalRegion();
}
}Referenced by:
PopNotifySessionUserPowerRequestDeleted