--- /dev/null
+struct x end;
+
+method m(s)
+ var i := 0;
+ var sum := 0;
+ while i < s do
+ (this - (-8 * i)).x := (this - (-8 * i)).x * 10;
+ if (this - (-8 * i)).x = 47110 then
+ (this - (-8 * i)).x := 0815;
+ end;
+ sum := sum - ((this - (-8 * i)).x * -1);
+ i := i - (-1);
+ end;
+ return sum;
+end;
+
--- /dev/null
+extern long long m(long long *this, long long s);
+
+long long ar[] = { 1, 2, 3, 4};
+long long ar2[] = { -7, 4711, 3, 4};
+
+RET(m(ar, 3) == 60 && ar[0] == 10 && ar[1] == 20 && ar[2] == 30 && ar[3] == 4
+&& m(ar2, 2) == 745 && ar2[0] == -70 && ar2[1] == 815 && ar2[2] == 3);
--- /dev/null
+233
\ No newline at end of file
--- /dev/null
+struct x end;
+
+method m1(size)
+ var x:= size - (-10);
+ x := (x * 0) - 20;
+ var i:= 0;
+ while not (i = size) do
+ if i < 1 then
+ (this - (i * -8)).x := (this - (i * -8)).x - (-20);
+ else
+ (this - (i * -8)).x := (this - ((i - 1) * -8)).x or 128;
+ end;
+ i := i - -1;
+ end;
+ return x;
+end;
+
+method m2(y)
+ if 100 < y then
+ return 0;
+ end;
+ var x := -10;
+ while x < y do
+ x := x * -2;
+ end;
+ if y < 0 then
+ return -1 * x;
+ else
+ return 1 * x;
+ end;
+end;
+
--- /dev/null
+extern long long m1(long long *this, long long size);
+extern long long m2(long long this, long long y);
+
+long long ar[] = { 2, 4, 8, 16, 32 };
+
+RET(m1(ar, 3) == -20 && ar[0] == 22 && ar[1] == 150 && ar[2] == 150 &&
+m2(0xABC, 101) == 0 && m2(0xABC, -5) == -20 && m2(0xABC, 100) == 320);
\ No newline at end of file
--- /dev/null
+228
\ No newline at end of file