1 int a = 0;
2 int d = 1;
3 int f = 1;
4 
fn1()5 int fn1() {
6   return a || 1 >> a;
7 }
8 
fn2(int p1,int p2)9 int fn2(int p1, int p2) {
10   return p2 >= 2 ? p1 : p1 >> 1;
11 }
12 
fn3(int p1)13 int fn3(int p1) {
14   return d ^ p1;
15 }
16 
fn4(int p1,int p2)17 int fn4(int p1, int p2) {
18   return fn3(!d > fn2((f = fn1() - 1000) || p2, p1));
19 }
20 
main()21 int main() {
22   if (fn4(0, 0) != 1)
23     __builtin_abort ();
24   return 0;
25 }
26