static double get_volume(CompandContext *s, double in_lin)

{

    CompandSegment *cs;

    double in_log, out_log;

    int i;



    if (in_lin < s->in_min_lin)

        return s->out_min_lin;



    in_log = log(in_lin);



    for (i = 1;; i++)

        if (in_log <= s->segments[i + 1].x)

            break;



    cs = &s->segments[i];

    in_log -= cs->x;

    out_log = cs->y + in_log * (cs->a * in_log + cs->b);



    return exp(out_log);

}

static double get_volume(CompandContext *s, double in_lin)

{

    CompandSegment *cs;

    double in_log, out_log;

    int i;



    if (in_lin < s->in_min_lin)

        return s->out_min_lin;



    in_log = log(in_lin);



    for (i = 1;; i++)

        if (in_log <= s->segments[i + 1].x)

            break;



    cs = &s->segments[i];

    in_log -= cs->x;

    out_log = cs->y + in_log * (cs->a * in_log + cs->b);



    return exp(out_log);

}

    for (i = 1;; i++)         if (in_log <= s->segments[i + 1].x)     cs = &s->segments[i];
static double FUNC_0(CompandContext *VAR_0, double VAR_1)

{

    CompandSegment *cs;

    double VAR_2, VAR_3;

    int VAR_4;



    if (VAR_1 < VAR_0->in_min_lin)

        return VAR_0->out_min_lin;



    VAR_2 = log(VAR_1);



    for (VAR_4 = 1;; VAR_4++)

        if (VAR_2 <= VAR_0->segments[VAR_4 + 1].x)

            break;



    cs = &VAR_0->segments[VAR_4];

    VAR_2 -= cs->x;

    VAR_3 = cs->y + VAR_2 * (cs->a * VAR_2 + cs->b);



    return exp(VAR_3);

}

static double FUNC_0(CompandContext *VAR_0, double VAR_1)
{ CompandSegment *cs; double VAR_2, VAR_3; int VAR_4; if (VAR_1 < VAR_0->in_min_lin)
return VAR_0->out_min_lin; VAR_2 = log(VAR_1); for (VAR_4 = 1;; VAR_4++) if (VAR_2 <= VAR_0->segments[VAR_4 + 1].x)
break; cs = &VAR_0->segments[VAR_4]; VAR_2 -= cs->x; VAR_3 = cs->y + VAR_2 * (cs->a * VAR_2 + cs->b); return exp(VAR_3); }