digraph G {
//    p [label=<x_in = a + b<br/>y_in = c<br/>f()<br/>c = y_out>,shape=rect];
    f_call [label="f()"]
    x_in [label="x_in = a + b"]
    y_in [label="y_in = c"]
    y_out [label="c = y_out"]
    f_call -> {x_in y_in y_out};
    f_start [label="enter f"];
    fx_in [label="x = x_in"];
    fy_in [label="y = y_in"];
    fy_out [label="y_out = y"];
    f_start -> {fx_in fy_in fy_out};
    f_call -> f_start [style=bold];
    y_in -> f_start [style=invis];
    x_in -> fx_in [style=dashed];
    y_in -> fy_in [style=dashed];
    fy_out -> y_out [constraint=false,style=dashed];
    invis [height=0.001,width=0.001,style=invis];
    invis2 [height=0.001,width=0.001,style=invis];
    {rank=same; x_in y_in y_out invis};
    {rank=same; fx_in fy_in invis2 fy_out};
    {edge [style=invis];
        x_in -> y_in -> invis -> y_out;
        fx_in -> fy_in -> invis2 -> fy_out;
    }
}