1struct A
2{
3  long a1;
4  double *a2;
5};
6
7struct B
8{
9  void *b1;
10  double b2, b3;
11  struct
12  {
13    int d1;
14    double d2;
15  } b4;
16};
17
18struct C
19{
20  struct A *c1;
21  void *c2;
22};
23
24long fn1 (struct A *, double);
25void fn2 (void *, const char *);
26double fn3 (double);
27double fn4 (double);
28int fn5 (void *, double, double);
29
30int
31foo (struct B *x)
32{
33  struct C *e = x->b1;
34  struct A *f = e->c1;
35  long g, h, i;
36  double *j, k;
37  g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1;
38  j = f->a2, k = x->b4.d2;
39  fn2 (x, "something");
40  if (g <= 0)
41    {
42      double l = j[2] - j[1];
43      if (l > 0.0 && l <= 0.02)
44        k = (x->b4.d1 == 1
45             ? ((1.0 / l) < 25 ? 25 : (1.0 / l))
46             : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l)));
47    }
48  else
49    {
50      double m = j[h] - j[g], n = 0.0, l = 0.0;
51      if (g > 1)
52        n = j[g] - j[g - 1];
53      if (h < i)
54        l = j[h + 1] - j[h];
55      if (n > 0.02)
56        n = 0;
57      if (m > 0.02)
58        m = 0;
59      if (l > 0.02)
60        l = 0;
61      if (m < n)
62        {
63          double o = m;
64          m = n;
65          n = o;
66        }
67      if (l < n)
68        {
69          double o = l;
70          l = n;
71          n = o;
72        }
73      if (l < m)
74        {
75          double o = l;
76          l = m;
77          m = o;
78        }
79      if (n != 0.0)
80        k = (x->b4.d1 == 1
81             ? ((1 / m) < 25 ? 25 : (1 / m))
82             : fn3 ((1 / m) < 25 ? 25 : (1 / m)));
83      else if (m != 0.0)
84        k = (x->b4.d1 == 1
85             ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))
86             : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))));
87      else if (l != 0.0)
88        k = (x->b4.d1 == 1
89             ? ((1 / l) < 25 ? 25 : (1 / l))
90             : fn3 ((1 / l) < 25 ? 25 : (1 / l)));
91    }
92  fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k)));
93  return 1;
94}
95