rewrote compose, func_pushl, func_popr, etc. to work better