/*#pragma settings NoInline*/

uniform half4 colorGreen, colorRed;

half4 dead_fn(half4 a, half4 b) {
    return a * b;
}

half4 live_fn(half4 a, half4 b) {
    return a + b;
}

half4 main(float2 coords) {
    const bool TRUE = true, FALSE = false;
    half4 a, b;

    if (FALSE) {
        // Dead stripping a user function.
        half4 unused = dead_fn(half4(0.5), half4(2));
    } else {
        // A live user function.
        a = live_fn(half4(3), half4(-5));
    }

    if (TRUE) {
        // A live built-in function.
        b = unpremul(half4(1));
    } else {
        // Dead stripping a built-in function. (This is a separate overload of `unpremul`.)
        float4 unused = unpremul(float4(-1));
    }

    return (a != half4(0) && b != half4(0)) ? colorGreen : colorRed;
}
