IoWithinStackLimits
UINT64 __stdcall IoWithinStackLimits(UINT64 RegionStart, UINT64 RegionSize){
_ETHREAD *CurrentThread;
UINT64 v3;
UINT64 v5;
_QWORD *v6;
unsigned __int64 v8;
__int128 v9;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v3 = RegionStart + RegionSize;
if( (*((_BYTE *)KeGetPcr() + 12972) & 1) == 0 || CurrentThread == *((_ETHREAD **)KeGetCurrentPrcb() + 3) )
{
*(_QWORD *)&v9 = *((_QWORD *)CurrentThread + 7);
v5 = *((_QWORD *)CurrentThread + 6);
v6 = (_QWORD *)*((_QWORD *)CurrentThread + 5);
while( RegionStart < v5 || v3 > (unsigned __int64)v9 )
{
if( !v6[2] )
return 0i64;
v9 = *((_OWORD *)v6 + 1);
v5 = v6[3];
v6 = (_QWORD *)v6[5];
}
}
else
{
v8 = *((_QWORD *)KeGetPcr() + 1618) + 80i64;
if( v3 > v8 || RegionStart < v8 - (unsigned int)KeKernelStackSize )
return 0i64;
}
return 1i64;
}Referenced by:
No references.