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