#version 300 es

// This was produced at one point from Unity's Reflect/VertexLit
// shader's "Vertex Lit, emulated in shaders" pass by hlslcc.
// Loop analysis was not detecting that Temp_int[0] is used as
// both a loop induction variable (.w component) and for other uses
// outside the loop.

precision highp float;

uniform     vec4 unity_LightColor[8];
uniform     vec4 unity_LightPosition[8];
uniform     vec4 unity_LightAtten[8];
uniform     vec4 unity_SpotDirection[8];
uniform     mat4 glstate_matrix_mvp;
uniform     mat4 glstate_matrix_modelview0;
uniform     mat4 glstate_matrix_invtrans_modelview0;
uniform     mat4 _Object2World;
uniform     mat4 _World2Object;
uniform     vec4 glstate_lightmodel_ambient;
uniform     vec4 _MainTex_ST;
uniform     vec4 _Color;
uniform     vec4 _ReflectColor;
 in highp vec4 in_POSITION0;
vec4 Input0;
 in highp vec4 in_NORMAL0;
vec4 Input1;
 in highp vec4 in_TEXCOORD0;
vec4 Input2;
 out highp vec4 TEXCOORD0;
#define Output0 TEXCOORD0
 out highp vec4 COLOR0;
#define Output1 COLOR0
#undef Output2
#define Output2 phase0_Output2
vec4 phase0_Output2;
vec4 Temp[4];
ivec4 Temp_int[4];
void main()
{
    Input0 = in_POSITION0;
    Input1 = in_NORMAL0;
    Input2 = in_TEXCOORD0;
    Temp_int[0] = floatBitsToInt(Input0.yyyy * glstate_matrix_mvp[1]);
    Temp_int[0] = floatBitsToInt(glstate_matrix_mvp[0] * Input0.xxxx + intBitsToFloat(Temp_int[0]));
    Temp_int[0] = floatBitsToInt(glstate_matrix_mvp[2] * Input0.zzzz + intBitsToFloat(Temp_int[0]));
    Output2 = glstate_matrix_mvp[3] * Input0.wwww + intBitsToFloat(Temp_int[0]);
    Output0.xy = Input2.xy * _MainTex_ST.xy + _MainTex_ST.zw;
    Temp_int[0].xyz = floatBitsToInt(Input0.yyy * glstate_matrix_modelview0[1].xyz);
    Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[0].xyz * Input0.xxx + intBitsToFloat(Temp_int[0]).xyz);
    Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[2].xyz * Input0.zzz + intBitsToFloat(Temp_int[0]).xyz);
    Temp_int[0].xyz = floatBitsToInt(glstate_matrix_modelview0[3].xyz * Input0.www + intBitsToFloat(Temp_int[0]).xyz);
    Temp_int[1].xyz = floatBitsToInt(Input1.yyy * glstate_matrix_invtrans_modelview0[1].xyz);
    Temp_int[1].xyz = floatBitsToInt(glstate_matrix_invtrans_modelview0[0].xyz * Input1.xxx + intBitsToFloat(Temp_int[1]).xyz);
    Temp_int[1].xyz = floatBitsToInt(glstate_matrix_invtrans_modelview0[2].xyz * Input1.zzz + intBitsToFloat(Temp_int[1]).xyz);
    Temp_int[0].w = floatBitsToInt(dot(intBitsToFloat(Temp_int[1]).xyz, intBitsToFloat(Temp_int[1]).xyz));
    Temp_int[0].w = floatBitsToInt(inversesqrt(intBitsToFloat(Temp_int[0]).w));
    Temp_int[1].xyz = floatBitsToInt(intBitsToFloat(Temp_int[0]).www * intBitsToFloat(Temp_int[1]).xyz);
    Temp[2].xyz = glstate_lightmodel_ambient.xyz;
    Temp_int[0].w = 0x0;
    while(true){
        if ((Temp_int[0].w>= 0x4)) { break; }
        Temp_int[1].w = int((Temp_int[0].w>=0x4) ? 0xFFFFFFFFu : 0u);
        Temp[3].xyz = (-intBitsToFloat(Temp_int[0]).xyz) * unity_LightPosition[Temp_int[0].w + 0].www + unity_LightPosition[Temp_int[0].w + 0].xyz;
        Temp_int[1].w = floatBitsToInt(dot(Temp[3].xyz, Temp[3].xyz));
        Temp[2].w = inversesqrt(intBitsToFloat(Temp_int[1]).w);
        Temp[3].xyz = Temp[2].www * Temp[3].xyz;
        Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * unity_LightAtten[Temp_int[0].w + 0].z + intBitsToFloat(0x3F800000));
        Temp_int[1].w = floatBitsToInt(float(intBitsToFloat(0x3F800000)) / intBitsToFloat(Temp_int[1]).w);
        Temp[2].w = dot(Temp[3].xyz, unity_SpotDirection[Temp_int[0].w + 0].xyz);
        Temp[2].w = max(Temp[2].w, intBitsToFloat(0x0));
        Temp[2].w = Temp[2].w + (-unity_LightAtten[Temp_int[0].w + 0].x);
        Temp[2].w = Temp[2].w * unity_LightAtten[Temp_int[0].w + 0].y;
        Temp[2].w = clamp(Temp[2].w, 0.0, 1.0);
        Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * Temp[2].w);
        Temp[2].w = dot(intBitsToFloat(Temp_int[1]).xyz, Temp[3].xyz);
        Temp[2].w = max(Temp[2].w, intBitsToFloat(0x0));
        Temp_int[1].w = floatBitsToInt(intBitsToFloat(Temp_int[1]).w * Temp[2].w);
        Temp[2].xyz = unity_LightColor[Temp_int[0].w + 0].xyz * intBitsToFloat(Temp_int[1]).www + Temp[2].xyz;
        Temp_int[0].w = Temp_int[0].w + 0x1;
    }
    Output1.xyz = Temp[2].xyz * _Color.xyz;
    Output1.w = _Color.w * _ReflectColor.w;
    gl_Position = vec4(phase0_Output2);
    return;
}
