let get_concrete_value_of_return (f:string) =
  let kf = Globals.Functions.find_by_name f in
  let rstmt =
    try Kernel_function.find_return kf
    with Kernel_function.No_Statement ->
      Aorai_option.fatal "Don't know what to do with a function declaration"
  in
  match rstmt.skind with
    | Cil_types.Return (Some (e),_) -> e.enode
    | Block (b) ->
        begin
          let s=(List.hd (List.rev b.bstmts)) in
          match s.skind with
            | Cil_types.Return (Some (e),_) -> e.enode
            | _ -> 
              Aorai_option.fatal 
                "The stmt %d have to be a return of the function %s, but it is not a well formed stmt." rstmt.sid f
        end
    | _ -> Aorai_option.fatal 
      "The stmt %d have to be a return of the function %s, but it is not a well formed stmt." rstmt.sid f