struct A { long a1; double *a2; }; struct B { void *b1; double b2, b3; struct { int d1; double d2; } b4; }; struct C { struct A *c1; void *c2; }; long fn1 (struct A *, double); void fn2 (void *, const char *); double fn3 (double); double fn4 (double); int fn5 (void *, double, double); int foo (struct B *x) { struct C *e = x->b1; struct A *f = e->c1; long g, h, i; double *j, k; g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1; j = f->a2, k = x->b4.d2; fn2 (x, "something"); if (g <= 0) { double l = j[2] - j[1]; if (l > 0.0 && l <= 0.02) k = (x->b4.d1 == 1 ? ((1.0 / l) < 25 ? 25 : (1.0 / l)) : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l))); } else { double m = j[h] - j[g], n = 0.0, l = 0.0; if (g > 1) n = j[g] - j[g - 1]; if (h < i) l = j[h + 1] - j[h]; if (n > 0.02) n = 0; if (m > 0.02) m = 0; if (l > 0.02) l = 0; if (m < n) { double o = m; m = n; n = o; } if (l < n) { double o = l; l = n; n = o; } if (l < m) { double o = l; l = m; m = o; } if (n != 0.0) k = (x->b4.d1 == 1 ? ((1 / m) < 25 ? 25 : (1 / m)) : fn3 ((1 / m) < 25 ? 25 : (1 / m))); else if (m != 0.0) k = (x->b4.d1 == 1 ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))) : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))); else if (l != 0.0) k = (x->b4.d1 == 1 ? ((1 / l) < 25 ? 25 : (1 / l)) : fn3 ((1 / l) < 25 ? 25 : (1 / l))); } fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k))); return 1; }