/*#pragma settings RewriteSwitchStatements*/

uniform half4 colorGreen, colorRed;

bool switch_with_break_in_loop(int x) {
    int val = 0;
    switch (x) {
        case 1:  for (int i=0; i<10; ++i) { ++val; break; ++val; }
        default: ++val;
    }
    return val == 2;
}

bool switch_with_continue_in_loop(int x) {
    int val = 0;
    switch (x) {
        case 1:  for (int i=0; i<10; ++i) { ++val; continue; ++val; }
        default: ++val;
    }
    return val == 11;
}

bool loop_with_break_in_switch(int x) {
    int val = 0;
    for (int i=0; i<10; ++i) {
        switch (x) {
            case 1:  ++val; break;
            default: return false;
        }
        ++val;
    }
    return val == 20;
}

half4 main(float2 coords) {
    int x = int(colorGreen.g);
    return (switch_with_break_in_loop(x) &&
            switch_with_continue_in_loop(x) &&
            loop_with_break_in_switch(x)) ? colorGreen : colorRed;
}
