--- /dev/null
+struct goo gaa gee end;
+
+method s(x y)
+ var foobar := (this.gaa * x.goo) - (y * -2);
+ return foobar * foobar;
+end;
--- /dev/null
+extern long s(long *this, long*, long);
+
+long ar[] = {111, 222, 333};
+
+RET(s(ar, ar, 5) == ((ar[1] * ar[0]) - (5 * -2)) * ((ar[1] * ar[0]) - (5 * -2)));
--- /dev/null
+11
\ No newline at end of file
--- /dev/null
+method a()
+ var u := 3;
+ var v := this;
+ return u - (v - 10);
+end;
+
+method b()
+ var u := 10;
+ var v := u;
+ return (u - (-1 * v));
+end;
+
+
--- /dev/null
+extern long a(long long this);
+extern long b(long long this);
+
+
+RET(a(20) == -7 && b(0xDEAD) == 20);
--- /dev/null
+18
\ No newline at end of file
--- /dev/null
+struct x y z end;
+
+method a()
+ var u := this.x;
+ var v := 4711;
+ u := u * this.y;
+ v := u - (0 - v);
+ return u - v;
+end;
+
+method b(a)
+ var u := 10;
+ u := a.z;
+ return u * 2;
+end;
+
+
--- /dev/null
+extern long a(long long *this);
+extern long b(long long this, long long *a);
+
+long long ar[3] = { 2, 4, 8 };
+
+RET(a(ar) == -4711 && b(0xDEAD, ar) == 16);
--- /dev/null
+21
\ No newline at end of file
--- /dev/null
+struct x y z end;
+
+method a()
+ this.x := /*0*/815;
+ /*z := y * this.x;*/
+ return this.x;
+end;
+
--- /dev/null
+extern long a(long long *this);
+
+
+long long ar[3] = { 2, 4, 8 };
+
+RET(a(ar) == 815 && ar[0] == 815);
--- /dev/null
+5
\ No newline at end of file
--- /dev/null
+struct x y z end;
+
+method a()
+ this.x := /*0*/815;
+ z := y * this.x;
+ return this.z;
+end;
+
+
+
+
--- /dev/null
+extern long a(long long *this);
+
+
+long long ar[3] = { 2, 4, 8 };
+
+RET(a(ar) == 3260 && ar[2] == 3260 && ar[0] == 815);
\ No newline at end of file
--- /dev/null
+10
\ No newline at end of file
--- /dev/null
+struct x y z end;
+
+method b(a)
+ a.x := 3;
+ a.y := 2;
+ a.z := (a.x * a.y) - 10;
+ return a;
+end;
--- /dev/null
+extern long long* b(long long this, long long *a);
+
+long long ar[3] = { 2, 4, 8 };
+
+RET(b(0xDEAD, ar) == ar && ar[0] == 3 && ar[1] == 2 && ar[2] == -4);
--- /dev/null
+12
\ No newline at end of file
--- /dev/null
+struct x y z end;
+
+method m(x)
+ var a := x;
+ this.x := (this.y or this.z) = a;
+ x := 47;
+ return this.y * x;
+end;
--- /dev/null
+extern long long m(long long *this, long long x);
+
+long long ar[3] = { 2, 4, 8 };
+
+RET(m(ar, 12) == 188 && ar[0] == 1 && ar[1] == 4 && ar[2] == 8);
--- /dev/null
+15
\ No newline at end of file