RtlFindDynamicEnforcedAddressInRanges
BOOL __stdcall RtlFindDynamicEnforcedAddressInRanges(UINT64 *rcx0, INT64 a2){
UINT64 *i;
_ETHREAD *CurrentThread;
INT64 *v4;
int v5;
BOOL result;
INT64 v7;
__int128 v8;
INT64 v9;
__int64 v10;
v9 = a2;
v7 = 0i64;
v8 = 0i64;
v10 = 1i64;
i = rcx0;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
v4 = (INT64 *)(rcx0 + 1);
ExAcquirePushLockSharedEx((UINT64)(rcx0 + 1), 0i64);
LABEL_2:
for( i = (UINT64 *)*i; i; i = (UINT64 *)i[1] )
{
v5 = RtlpDynamicEnforcedAddressRangesTreeCompare((INT64)&v7, (INT64)i);
if( v5 < 0 )
goto LABEL_2;
if( v5 <= 0 )
break;
}
if( _InterlockedCompareExchange64(v4, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v4);
KeAbPostRelease(v4);
KeLeaveCriticalRegion();
LOBYTE(result) = i != 0i64;
return result;
}Referenced by:
KiCheckUserAddressCetCompat