// a * b
Call(*, [a, b], x1)

// f(g(x + 1))
Call(+, [x, 1], x1)
Call(g, [x2], x2)
Call(f, [x3], x3)

// { f(x); f(y); }
Call(f, [x], x1)
Call(f, [y], x2)

// while a < b do f()
L0
Call(<, [a, b], x1)
CondJump(x1, L1, L2)

L1
Call(f, [], x2)
Jump(L0)

L2
