let update_actions_return_func kf ki tr =
  let ret_ki = Kstmt (Kernel_function.find_return kf) in
  let auto = Data_for_aorai.getAutomata () in
  let treat_one_trans pre_state idx status =
    let trans = Data_for_aorai.getTransition idx in
    let map = Data_for_aorai.get_action_bindings kf ki pre_state trans.start in
    if status then begin
      Aorai_option.debug ~dkey:"action"
        "Return statement of %a: treating transition %s -> %s from initial state %s"
      Kernel_function.pretty kf
      trans.start.Promelaast.name trans.stop.Promelaast.name
      pre_state.Promelaast.name;
      Cil_datatype.Term.Map.iter
        (fun l _ -> Aorai_option.debug ~dkey:"action" 
          "Got binding for %a" Cil_datatype.Term.pretty l)
        map;
      let actions = actions_to_range_step kf ki pre_state trans in
      let map = 
        List.fold_left
          (fun map (l, (b,r)) ->
            Aorai_option.debug ~dkey:"action" "%a <- %a + %a"
              Cil_datatype.Term.pretty l Cil_datatype.Term.pretty b
              Data_for_aorai.Range.pretty r;
            let bindings =
              try Cil_datatype.Term.Map.find l map
              with Not_found -> Cil_datatype.Term.Map.empty
            in
            Cil_datatype.Term.Map.add 
              l (Cil_datatype.Term.Map.add b r bindings) map)
          map actions
      in
      Data_for_aorai.merge_action_bindings kf ret_ki pre_state trans.stop map
    end
  in
  let treat_one_pre_trans trans =
    Array.iteri (treat_one_trans trans.start) tr.(trans.stop.nums)
  in
  let treat_one_state pre_state =
    let my_trans = Path_analysis.get_transitions_of_state pre_state auto in
    List.iter treat_one_pre_trans my_trans
  in
  let pre_states = active_before_call kf in
  Data_for_aorai.Aorai_state.Set.iter treat_one_state pre_states