RtlFindDynamicEnforcedAddressInRanges
bool __fastcall RtlFindDynamicEnforcedAddressInRanges(_EX_PUSH_LOCK *a1, __int64 a2){
_EX_PUSH_LOCK *i;
_ETHREAD *CurrentThread;
_EX_PUSH_LOCK *v4;
NTSTATUS v5;
INT64 v7;
__int128 v8;
__int64 v9;
__int64 v10;
v9 = a2;
v7 = 0i64;
v8 = 0i64;
v10 = 1i64;
i = a1;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v4 = a1 + 1;
ExAcquirePushLockSharedEx(a1 + 1, 0i64);
LABEL_2:
for( i = (_EX_PUSH_LOCK *)i->_bf_0; i; i = (_EX_PUSH_LOCK *)i[1]._bf_0 )
{
v5 = RtlpDynamicEnforcedAddressRangesTreeCompare((INT64)&v7, (INT64)i);
if( v5 < 0 )
goto LABEL_2;
if( v5 <= 0 )
break;
}
if( _InterlockedCompareExchange64(&v4->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v4);
KeAbPostRelease(v4);
KeLeaveCriticalRegion();
return i != 0i64;
}Referenced by:
KiCheckUserAddressCetCompat