BEGIN { f(0, a) # nothing f(1, a) } function f(i, a) { if (i == 0) return g(a, a) pr(a) } function g(x, y) { h(y, x, y) } function h(b, c, d) { b[1] = 1 c[1] = 2 # rewrite print b[1], d[1] c[2] = 1 b[2] = 2 # should rewrite } function pr(x) { print x[1], x[2] }