<xaif:CallGraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xaif="http://www.mcs.anl.gov/XAIF"
       xsi:schemaLocation="http://www.mcs.anl.gov/XAIF ../xaif.xsd"
       program_name="Example 3"
       prefix="test_prefix">

  <xaif:ScopeHierarchy>

    <xaif:Scope vertex_id="1">
      <xaif:SymbolTable>
        <xaif:Symbol symbol_id="head" kind="subroutine" type="void"/>
        <xaif:Symbol symbol_id="my_add" kind="subroutine" type="void"/>
      </xaif:SymbolTable>
    </xaif:Scope>

    <xaif:Scope vertex_id="2">
      <xaif:SymbolTable>
        <xaif:Symbol symbol_id="x"/>
        <xaif:Symbol symbol_id="y"/>
        <xaif:Symbol symbol_id="t1"/>
        <xaif:Symbol symbol_id="t2"/>
        <xaif:Symbol symbol_id="i" type="integer" active="false"/>
      </xaif:SymbolTable>
    </xaif:Scope>

    <xaif:Scope vertex_id="3">
      <xaif:SymbolTable>
        <xaif:Symbol symbol_id="u1"/>
        <xaif:Symbol symbol_id="u2"/>
        <xaif:Symbol symbol_id="v"/>
      </xaif:SymbolTable>
    </xaif:Scope>

    <xaif:ScopeEdge edge_id="1" source="2" target="1"/>
    <xaif:ScopeEdge edge_id="2" source="3" target="1"/>

  </xaif:ScopeHierarchy>

  <xaif:AliasSetMap>
    <xaif:AliasSet key="0">
      <xaif:AliasRange from_virtual_address="1" to_virtual_address="1"/>
    </xaif:AliasSet>
  </xaif:AliasSetMap>

  <xaif:DUUDSetMap>
    <xaif:StmtIdSet key="0">
    </xaif:StmtIdSet>
  </xaif:DUUDSetMap>

  <xaif:DOSetMap>
    <xaif:StmtIdSet key="0">
    </xaif:StmtIdSet>
  </xaif:DOSetMap>



  <xaif:ControlFlowGraph vertex_id="1" symbol_id="head" scope_id="1" controlflowgraph_scope_id="2">

     <xaif:ArgumentList>
       <xaif:ArgumentSymbolReference position="1" symbol_id="x" scope_id="2"/>
       <xaif:ArgumentSymbolReference position="2" symbol_id="y" scope_id="2"/>
     </xaif:ArgumentList>

     <xaif:Entry vertex_id="1"/>

     <xaif:ForLoop vertex_id="2">

       <xaif:Initialization statement_id="fi">
         <xaif:AssignmentLHS>
             <xaif:SymbolReference vertex_id="1" symbol_id="i" scope_id="2"/>
         </xaif:AssignmentLHS>
         <xaif:AssignmentRHS>
           <xaif:Constant vertex_id="1" type="integer" value="1"/>
         </xaif:AssignmentRHS>
       </xaif:Initialization>      

       <xaif:Condition>
         <xaif:BooleanOperation vertex_id="1" name="less_or_equal"/>
         <xaif:VariableReference vertex_id="2">
           <xaif:SymbolReference vertex_id="1" symbol_id="i" scope_id="2"/>
         </xaif:VariableReference>
         <xaif:Constant vertex_id="3" type="integer" value="11"/>
         <xaif:ExpressionEdge edge_id="1" source="2" target="1" position="1"/>
         <xaif:ExpressionEdge edge_id="2" source="3" target="1" position="2"/>
       </xaif:Condition>

       <xaif:Update statement_id="fu">
         <xaif:AssignmentLHS>
             <xaif:SymbolReference vertex_id="1" symbol_id="i" scope_id="2"/>
         </xaif:AssignmentLHS>
         <xaif:AssignmentRHS>
           <xaif:Intrinsic vertex_id="1" name="add_scal_scal"/>
           <xaif:VariableReference vertex_id="2">
             <xaif:SymbolReference vertex_id="1" symbol_id="i" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:Constant vertex_id="3" type="integer" value="1"/>
           <xaif:ExpressionEdge edge_id="1" source="2" target="1" position="1"/>
           <xaif:ExpressionEdge edge_id="2" source="3" target="1" position="2"/>
         </xaif:AssignmentRHS>
       </xaif:Update>      
     
     </xaif:ForLoop>

     <xaif:BasicBlock vertex_id="3" scope_id="2">

       <xaif:Assignment statement_id="sage_1">
         <xaif:AssignmentLHS>
           <xaif:SymbolReference vertex_id="1" symbol_id="t1" scope_id="2"/>
         </xaif:AssignmentLHS>
         <xaif:AssignmentRHS>
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="x" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:Intrinsic vertex_id="2" name="sin_scal"/>
           <xaif:VariableReference vertex_id="3">
             <xaif:SymbolReference vertex_id="1" symbol_id="y" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:Intrinsic vertex_id="4" name="mul_scal_scal"/>
           <xaif:ExpressionEdge edge_id="1" source="1" target="2" position="1"/>
           <xaif:ExpressionEdge edge_id="2" source="2" target="4" position="1"/>
           <xaif:ExpressionEdge edge_id="3" source="3" target="4" position="2"/>
         </xaif:AssignmentRHS>
       </xaif:Assignment>      

       <xaif:Assignment statement_id="sage_2">
         <xaif:AssignmentLHS>
           <xaif:SymbolReference vertex_id="1" symbol_id="t2" scope_id="2"/>
         </xaif:AssignmentLHS>
         <xaif:AssignmentRHS>
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="t1" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:VariableReference vertex_id="2">
             <xaif:SymbolReference vertex_id="1" symbol_id="x" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:Intrinsic vertex_id="3" name="mul_scal_scal"/>
           <xaif:VariableReference vertex_id="4">
             <xaif:SymbolReference vertex_id="1" symbol_id="i" scope_id="2"/>
           </xaif:VariableReference>
           <xaif:Intrinsic vertex_id="5" name="add_scal_scal"/>
           <xaif:ExpressionEdge edge_id="1" source="1" target="3" position="1"/>
           <xaif:ExpressionEdge edge_id="2" source="2" target="3" position="2"/>
           <xaif:ExpressionEdge edge_id="3" source="3" target="5" position="1"/>
           <xaif:ExpressionEdge edge_id="4" source="4" target="5" position="2"/>
         </xaif:AssignmentRHS>
       </xaif:Assignment>      

       <xaif:SubroutineCall statement_id="my_add_1"
                            symbol_id="my_add" scope_id="1" formalArgCount="3">
         <xaif:Argument position="1">
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="t1" scope_id="2"/>
           </xaif:VariableReference>
         </xaif:Argument>
         <xaif:Argument position="2">
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="t2" scope_id="2"/>
           </xaif:VariableReference>
         </xaif:Argument>
         <xaif:Argument position="3">
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="y" scope_id="2"/>
           </xaif:VariableReference>
         </xaif:Argument>
       </xaif:SubroutineCall>

     </xaif:BasicBlock>

     <xaif:EndLoop vertex_id="4"/>

     <xaif:Exit vertex_id="5"/>

     <xaif:ControlFlowEdge edge_id="1" source="1" target="2"/>
     <xaif:ControlFlowEdge edge_id="2" source="2" target="3"/>
     <xaif:ControlFlowEdge edge_id="3" source="3" target="4"/>
     <xaif:ControlFlowEdge edge_id="4" source="4" target="2"/>
     <xaif:ControlFlowEdge edge_id="5" source="2" target="5"/>

  </xaif:ControlFlowGraph>

  <xaif:ControlFlowGraph vertex_id="2" symbol_id="my_add" scope_id="1" controlflowgraph_scope_id="3">

     <xaif:ArgumentList>
       <xaif:ArgumentSymbolReference position="1" symbol_id="u1" scope_id="3"/>
       <xaif:ArgumentSymbolReference position="2" symbol_id="u2" scope_id="3"/>
       <xaif:ArgumentSymbolReference position="3" symbol_id="v" scope_id="3"/>
     </xaif:ArgumentList>

     <xaif:Entry vertex_id="1"/>

     <xaif:BasicBlock vertex_id="2" scope_id="3">

       <xaif:Assignment statement_id="whatever">
         <xaif:AssignmentLHS>
           <xaif:SymbolReference vertex_id="1" symbol_id="v" scope_id="3"/>
         </xaif:AssignmentLHS>
         <xaif:AssignmentRHS>
           <xaif:VariableReference vertex_id="1">
             <xaif:SymbolReference vertex_id="1" symbol_id="u1" scope_id="3"/>
           </xaif:VariableReference>
           <xaif:VariableReference vertex_id="2">
             <xaif:SymbolReference vertex_id="1" symbol_id="u2" scope_id="3"/>
           </xaif:VariableReference>
           <xaif:Intrinsic vertex_id="3" name="add_scal_scal"/>
           <xaif:ExpressionEdge edge_id="1" source="1" target="3" position="1"/>
           <xaif:ExpressionEdge edge_id="2" source="2" target="3" position="2"/>
         </xaif:AssignmentRHS>
       </xaif:Assignment>      

     </xaif:BasicBlock>

     <xaif:Exit vertex_id="3"/>

  </xaif:ControlFlowGraph>

  <xaif:CallGraphEdge edge_id="1" source="1" target="2"/>

</xaif:CallGraph>
