﻿v_Regions := LOAD r2_AllEvents[ArrayLength]
STORE v_Regions
STORE v_Regions
STORE v_Regions
v_ConstantZero := FILL 
v_ConstantOne := FILL 
fn-COLLAPSE-MAX v_Regions
(scalar instruction)
(begin loop s_Region)
v_NumEvents := LOAD r2_AllEvents[]
STORE v_NumEvents
v_FilteredLengthIn := FILL 
fn-COLLAPSE-MAX v_NumEvents
(scalar instruction)
(begin loop s_EventIndex)
v_EventIds := LOAD r2_AllEvents[]
v_NumEventsList := LOAD r2_EventList[]
v_CumMatchFlagsIn := FILL 
fn-COLLAPSE-MAX v_NumEventsList
(scalar instruction)
(begin loop s_EventListPosition)
v_CumMatchFlagsCurrent := PHI v_CumMatchFlagsIn v_CumMatchFlagsOut
v_CurrentEvent := LOAD r2_EventList[]
v_MatchFlags := fn-EQUAL v_EventIds v_CurrentEvent
v_CumMatchFlagsOut := fn-OR v_CumMatchFlagsCurrent v_MatchFlags
(end loop s_EventListPosition)
v_EventIndex := FILL 
v_BoundsFlags := fn-LESS-THAN v_EventIndex v_NumEvents
v_BoundsAndMatchFlags := fn-AND v_BoundsFlags v_CumMatchFlagsOut
v_Adjuster := fn-IF-THEN-ELSE v_BoundsAndMatchFlags v_ConstantOne v_ConstantZero
v_FilteredLengthCurrent := PHI v_FilteredLengthIn v_FilteredLengthOut
v_FilteredLengthOut := fn-PLUS v_FilteredLengthCurrent v_Adjuster
STORE v_Adjuster
(end loop s_EventIndex)
STORE v_FilteredLengthOut
STORE v_FilteredLengthOut
STORE v_FilteredLengthOut
(scalar instruction)
fn-COLLAPSE-MAX v_FilteredLengthOut
(begin loop s_FilteredEventIndex)
v_CumMatchIn := FILL 
v_FilteredEventIdsIn := FILL 
v_FilteredEventIndex := FILL 
(scalar instruction)
(begin loop s_EventIndex2)
v_CumMatchCurrent := PHI v_CumMatchIn v_CumMatchOut
v_FilteredEventIdsCurrent := PHI v_FilteredEventIdsIn v_FilteredEventIdsOut
v_EventIds2 := LOAD r2_AllEvents[]
v_Adjuster2 := LOAD r1_MatchAdjusters[]
v_CumMatchOut := fn-PLUS v_CumMatchCurrent v_Adjuster2
v_MatchFlags2 := fn-EQUAL v_Adjuster2 v_ConstantOne
v_CorrectIndex := fn-EQUAL v_FilteredEventIndex v_CumMatchOut
v_ShouldAssign := fn-AND v_MatchFlags2 v_CorrectIndex
v_FilteredEventIdsOut := fn-IF-THEN-ELSE v_ShouldAssign v_EventIds2 v_FilteredEventIdsCurrent
(end loop s_EventIndex2)
STORE v_FilteredEventIdsOut
v_EventPositionsIn := FILL 
v_NumEventsList2 := LOAD r2_EventList[]
fn-COLLAPSE-MAX v_NumEventsList2
(scalar instruction)
(begin loop s_EventListIndex2)
v_EventPositionsCurrent := PHI v_EventPositionsIn v_EventPositionsOut
v_EventList2 := LOAD r2_EventList[]
v_MatchFlags3 := fn-EQUAL v_FilteredEventIdsOut v_EventList2
v_EventListIndex := FILL 
v_BoundsFlags2 := fn-LESS-THAN v_EventListIndex v_NumEvents
v_ShouldAssign2 := fn-AND v_MatchFlags3 v_BoundsFlags2
v_EventPositionsOut := fn-IF-THEN-ELSE v_ShouldAssign2 v_FilteredEventIndex v_EventPositionsCurrent
(end loop s_EventListIndex2)
STORE v_EventPositionsOut
v_EventLookups := fn-DIVIDE v_EventPositionsOut v_NumEventsList2
STORE v_EventLookups
(end loop s_FilteredEventIndex)
(end loop s_Region)