#version 400
out vec4 sk_FragColor;
in vec4 src;
in vec4 dst;
void main() {
    float _0_alpha = dst.w * src.w;
    vec3 _1_sda = src.xyz * dst.w;
    vec3 _2_dsa = dst.xyz * src.w;
    vec3 _3_blend_set_color_luminance;
    float _4_lum = dot(vec3(0.30000001192092896, 0.5899999737739563, 0.10999999940395355), _2_dsa);

    vec3 _5_result = (_4_lum - dot(vec3(0.30000001192092896, 0.5899999737739563, 0.10999999940395355), _1_sda)) + _1_sda;

    float _6_minComp = min(min(_5_result.x, _5_result.y), _5_result.z);
    float _7_maxComp = max(max(_5_result.x, _5_result.y), _5_result.z);
    if (_6_minComp < 0.0 && _4_lum != _6_minComp) {
        float _8_d = _4_lum - _6_minComp;
        _5_result = _4_lum + (_5_result - _4_lum) * (_4_lum / _8_d);

    }
    if (_7_maxComp > _0_alpha && _7_maxComp != _4_lum) {
        vec3 _9_n = (_5_result - _4_lum) * (_0_alpha - _4_lum);
        float _10_d = _7_maxComp - _4_lum;
        _3_blend_set_color_luminance = _4_lum + _9_n / _10_d;

    } else {
        _3_blend_set_color_luminance = _5_result;
    }
    sk_FragColor = vec4((((_3_blend_set_color_luminance + dst.xyz) - _2_dsa) + src.xyz) - _1_sda, (src.w + dst.w) - _0_alpha);


}
