RtlAddDynamicEnforcedAddressRange
NTSTATUS __stdcall RtlAddDynamicEnforcedAddressRange(
_RTL_BALANCED_NODE **Tree,
_RTL_BALANCED_NODE *a2,
_RTL_BALANCED_NODE *a3){
_RTL_BALANCED_NODE *Pool2;
BOOL v7;
_RTL_BALANCED_NODE *v8;
_RTL_BALANCED_NODE *v10;
NTSTATUS v11;
_RTL_BALANCED_NODE *v12;
Pool2 = (_RTL_BALANCED_NODE *)ExAllocatePool2(257i64, 0x28ui64, 0x52414544ui64);
v7 = 0;
v8 = Pool2;
if( !Pool2 )
return -1073741801;
Pool2[1].Children[0] = a2;
Pool2[1].Children[1] = a3;
v10 = *Tree;
if( !*Tree )
{
LABEL_7:
RtlAvlInsertNodeEx(Tree, (UINT64)v10, v7, v8);
return 0;
}
while( 1 )
{
v11 = RtlpDynamicEnforcedAddressRangesTreeCompare((INT64)v8, (INT64)v10);
if( v11 <= 0 )
break;
v12 = v10->Children[1];
if( !v12 )
{
v7 = 1;
goto LABEL_7;
}
LABEL_10:
v10 = v12;
}
if( v11 < 0 )
{
v12 = v10->Children[0];
if( !v10->Children[0] )
goto LABEL_7;
goto LABEL_10;
}
ExFreePoolWithTag(v8, 0);
return -1073741800;
}Referenced by:
PspProcessDynamicEnforcedAddressRanges