
out vec4 sk_FragColor;
uniform vec4 colorRed;
uniform vec4 colorGreen;
bool do_side_effect_bb(out bool x) {
    x = true;
    return false;
}
vec4 main() {
    bool ok;
    ok = true;
    vec4 green = colorGreen;
    vec4 red = colorRed;
    bool param = false;
    bool call = (do_side_effect_bb(param), true);
    return (ok && param) && call ? green : red;
}
