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