FsRtlpHeatUnregisterVolume
VOID __stdcall FsRtlpHeatUnregisterVolume(PGUID VolumeGuid){
BOOL(__fastcall *i)(INT64, struct KPRCB *);
__int64 v3;
BOOL(__fastcall *v5)(INT64, struct KPRCB *);
BOOL(__fastcall **v6)(INT64, struct KPRCB *);
ExAcquireResourceExclusiveLite(&Resource, 1u);
for( i = *(BOOL(__fastcall **)(INT64, struct KPRCB *))FsRtlTieringHeatData;
i != FsRtlTieringHeatData;
i = *(BOOL(__fastcall **)(INT64, struct KPRCB *))i )
{
v3 = *(_QWORD *)((char *)i + 20) - *(_QWORD *)&VolumeGuid->Data1;
if( !v3 )
v3 = *(_QWORD *)((char *)i + 28) - *(_QWORD *)VolumeGuid->Data4;
if( !v3 )
{
if( (*((_DWORD *)i + 4))-- == 1 )
{
v5 = *(BOOL(__fastcall **)(INT64, struct KPRCB *))i;
if( *(BOOL(__fastcall **)(INT64, struct KPRCB *))(*(_QWORD *)i + 8i64) != i
|| (v6 = (BOOL(__fastcall **)(INT64, struct KPRCB *))*((_QWORD *)i + 1), *v6 != i) )
{
__fastfail(3u);
}
*v6 = v5;
*((_QWORD *)v5 + 1) = v6;
ExFreePoolWithTag(i, 0x68745346u);
}
break;
}
}
ExReleaseResourceLite(&Resource);
}Referenced by:
FsRtlHeatUninit