RtlGetLastRange
INT64 __stdcall RtlGetLastRange(_RTL_RANGE_LIST *RangeList, _RANGE_LIST_ITERATOR *Iterator, _RTL_RANGE **Range){
_RTL_RANGE *p_Blink;
unsigned int v4;
_LIST_ENTRY *Blink;
INT64 result;
Iterator->RangeListHead = &RangeList->ListHead;
p_Blink = 0i64;
v4 = 0;
Iterator->Stamp = RangeList->Stamp;
if( (_RTL_RANGE_LIST *)RangeList->ListHead.Flink == RangeList )
{
Iterator->MergedHead = 0i64;
v4 = -2147483622;
}
else
{
Blink = RangeList->ListHead.Blink;
if( (BYTE2(Blink[-1].Blink) & 1) != 0 )
{
Iterator->MergedHead = (_LIST_ENTRY *)((char *)Blink - 24);
Blink = Blink[-1].Flink;
}
else
{
Iterator->MergedHead = 0i64;
}
p_Blink = (_RTL_RANGE *)&Blink[-3].Blink;
}
Iterator->Current = p_Blink;
result = v4;
*Range = p_Blink;
return result;
}Referenced by:
RtlFindRange