const empty_MT4 func Main [in 0, out 3, local 0] $a0 = :empty_MT4 $a1 = 1 $a2 = 2 $a3 = 3 out[0] = 4 out[1] = 5 out[2] = 6 call :MT4.Start $t0{t.0} = $v0 PrintIntS($t0{t.0}) ret func MT4.Start [in 3, out 3, local 0] $t0{this} = $a0 $t1{p1} = $a1 $t2{p2} = $a2 $t3{p3} = $a3 $t4{p4} = in[0] $t5{p5} = in[1] $t6{p6} = in[2] PrintIntS($t1{p1}) PrintIntS($t2{p2}) PrintIntS($t3{p3}) PrintIntS($t4{p4}) PrintIntS($t5{p5}) PrintIntS($t6{p6}) $a0 = $t0{this} $a1 = $t6{p6} $a2 = $t5{p5} $a3 = $t4{p4} out[0] = $t3{p3} out[1] = $t2{p2} out[2] = $t1{p1} call :MT4.Change $t6{aux} = $v0 $v0 = $t6{aux} ret func MT4.Change [in 3, out 0, local 0] $t0{p1} = $a1 $t1{p2} = $a2 $t2{p3} = $a3 $t3{p4} = in[0] $t4{p5} = in[1] $t5{p6} = in[2] PrintIntS($t0{p1}) PrintIntS($t1{p2}) PrintIntS($t2{p3}) PrintIntS($t3{p4}) PrintIntS($t4{p5}) PrintIntS($t5{p6}) $v0 = 0 ret