uniform half4 colorGreen;

noinline half4 multiplyByAlpha(half4 x) {
    return x * x.aaaa;
}

noinline half add(half a, half b) {
    half c = a + b;
    return c;
}

noinline half mul(half a, half b) {
    return a * b;
}

noinline half fma(half a, half b, half c) {
    return add(mul(a, b), c);
}

half4 main(float2 coords) {
    // Functions used multiple times:
    half4 result = fma(colorGreen.a, colorGreen.g, colorGreen.r).0x0x;
    // Functions used only once:
    result = multiplyByAlpha(result);

    return result;
}
