let copy_var =
  let counter = ref (-1) in
  fun () ->
    decr counter;
    fun vi ->
      let vi' = Cil_const.copy_with_new_vid vi in
      vi'.vname <- vi.vname ^ "_unroll_" ^ (string_of_int (- !counter));
      (match vi'.vlogic_var_assoc with
           None -> ();
         | Some lv -> lv.lv_name <- vi'.vname);
      vi'