struct v2f {
  vec4 pos;
  float fog;
  vec4 uv;
  vec4 color;
};
struct appdata_tree {
  vec4 vertex;
  vec4 tangent;
  vec3 normal;
  vec4 color;
  vec4 texcoord;
};
varying vec4 xlv_FOG;
attribute vec4 TANGENT;
uniform vec3 _TerrainTreeLightDirections[4];
uniform vec4 _TerrainTreeLightColors[4];
uniform mat4 _TerrainEngineBendTree;
uniform vec4 _SquashPlaneNormal;
uniform float _SquashAmount;
uniform vec4 _Scale;
uniform vec4 _Color;
uniform float _AO;
vec4 Squash (
  in vec4 pos
)
{
  vec3 planeNormal;
  vec3 planePoint;
  vec3 projectedVertex;
  vec3 tmpvar_1;
  tmpvar_1 = pos.xyz;
  projectedVertex = tmpvar_1;
  vec3 tmpvar_2;
  tmpvar_2.xz = vec2(0.0, 0.0);
  tmpvar_2.y = _SquashPlaneNormal.w;
  vec3 tmpvar_3;
  tmpvar_3 = tmpvar_2;
  planePoint = tmpvar_3;
  vec3 tmpvar_4;
  tmpvar_4 = _SquashPlaneNormal.xyz;
  planeNormal = tmpvar_4;
  vec3 tmpvar_5;
  tmpvar_5 = pos.xyz;
  float tmpvar_6;
  tmpvar_6 = dot (planeNormal, (planePoint - tmpvar_5));
  vec3 tmpvar_7;
  tmpvar_7 = (projectedVertex + (tmpvar_6 * planeNormal));
  projectedVertex = tmpvar_7;
  vec3 tmpvar_8;
  tmpvar_8 = vec3(_SquashAmount);
  vec3 tmpvar_9;
  tmpvar_9 = mix (projectedVertex, pos.xyz, tmpvar_8);
  vec4 tmpvar_10;
  tmpvar_10.w = 1.0;
  tmpvar_10.xyz = tmpvar_9.xyz;
  vec4 tmpvar_11;
  tmpvar_11 = tmpvar_10;
  pos = tmpvar_11;
  return pos;
}

void TerrainAnimateTree (
  inout vec4 pos,
  in float alpha
)
{
  vec3 bent;
  vec3 tmpvar_1;
  tmpvar_1 = (pos.xyz * _Scale.xyz);
  pos.xyz = tmpvar_1.xyz.xyz;
  vec4 tmpvar_2;
  tmpvar_2.w = 0.0;
  tmpvar_2.xyz = pos.xyz.xyz;
  vec3 tmpvar_3;
  tmpvar_3 = (_TerrainEngineBendTree * tmpvar_2).xyz;
  bent = tmpvar_3;
  vec3 tmpvar_4;
  tmpvar_4 = vec3(alpha);
  vec3 tmpvar_5;
  tmpvar_5 = mix (pos.xyz, bent, tmpvar_4);
  vec3 tmpvar_6;
  tmpvar_6 = tmpvar_5;
  pos.xyz = tmpvar_6.xyz.xyz;
  vec4 tmpvar_7;
  tmpvar_7 = Squash (pos);
  vec4 tmpvar_8;
  tmpvar_8 = tmpvar_7;
  pos = tmpvar_8;
}

v2f vert (
  in appdata_tree v
)
{
  float occ;
  float atten;
  int i;
  vec4 lightColor;
  vec4 lightDir;
  v2f o;
  vec3 viewpos;
  int tmpvar_1;
  tmpvar_1 = 0;
  i = tmpvar_1;
  float tmpvar_2;
  tmpvar_2 = 1.0;
  atten = tmpvar_2;
  TerrainAnimateTree (v.vertex, v.color.w);
  vec3 tmpvar_3;
  tmpvar_3 = (gl_ModelViewMatrix * v.vertex).xyz;
  vec3 tmpvar_4;
  tmpvar_4 = tmpvar_3;
  viewpos = tmpvar_4;
  vec4 tmpvar_5;
  tmpvar_5 = (gl_ModelViewProjectionMatrix * v.vertex);
  o.pos = tmpvar_5;
  float tmpvar_6;
  tmpvar_6 = o.pos.z;
  o.fog = tmpvar_6;
  vec4 tmpvar_7;
  tmpvar_7 = v.texcoord;
  o.uv = tmpvar_7;
  float tmpvar_8;
  tmpvar_8 = _AO;
  lightDir.w = vec4(tmpvar_8).w;
  vec4 tmpvar_9;
  tmpvar_9 = gl_LightModel.ambient;
  lightColor = tmpvar_9;
  while (true) {
    if (!((i < 4))) {
      break;
    };
    vec3 tmpvar_10;
    tmpvar_10 = _TerrainTreeLightDirections[i];
    lightDir.xyz = tmpvar_10.xyz.xyz;
    float tmpvar_11;
    tmpvar_11 = dot (lightDir.xyz, v.normal);
    float tmpvar_12;
    tmpvar_12 = tmpvar_11;
    occ = tmpvar_12;
    float tmpvar_13;
    tmpvar_13 = max (0.0, occ);
    float tmpvar_14;
    tmpvar_14 = tmpvar_13;
    occ = tmpvar_14;
    float tmpvar_15;
    tmpvar_15 = (occ * atten);
    occ = tmpvar_15;
    vec4 tmpvar_16;
    tmpvar_16 = (lightColor + (_TerrainTreeLightColors[i] * occ));
    lightColor = tmpvar_16;
    int _post_incdec_tmp;
    _post_incdec_tmp = i;
    int tmpvar_17;
    tmpvar_17 = (i + 1);
    i = tmpvar_17;
  };
  float tmpvar_18;
  tmpvar_18 = 1.0;
  lightColor.w = vec4(tmpvar_18).w;
  vec4 tmpvar_19;
  tmpvar_19 = (lightColor * _Color);
  o.color = tmpvar_19;
  float tmpvar_20;
  tmpvar_20 = 1.0;
  o.color.w = vec4(tmpvar_20).w;
  return o;
}

void main ()
{
  appdata_tree xlt_v;
  v2f xl_retval;
  vec4 tmpvar_1;
  tmpvar_1 = gl_Vertex.xyzw;
  vec4 tmpvar_2;
  tmpvar_2 = tmpvar_1;
  xlt_v.vertex = tmpvar_2;
  vec4 tmpvar_3;
  tmpvar_3 = TANGENT.xyzw;
  vec4 tmpvar_4;
  tmpvar_4 = tmpvar_3;
  xlt_v.tangent = tmpvar_4;
  vec3 tmpvar_5;
  tmpvar_5 = gl_Normal.xyz;
  vec3 tmpvar_6;
  tmpvar_6 = tmpvar_5;
  xlt_v.normal = tmpvar_6;
  vec4 tmpvar_7;
  tmpvar_7 = gl_Color.xyzw;
  vec4 tmpvar_8;
  tmpvar_8 = tmpvar_7;
  xlt_v.color = tmpvar_8;
  vec4 tmpvar_9;
  tmpvar_9 = gl_MultiTexCoord0.xyzw;
  vec4 tmpvar_10;
  tmpvar_10 = tmpvar_9;
  xlt_v.texcoord = tmpvar_10;
  v2f tmpvar_11;
  tmpvar_11 = vert (xlt_v);
  v2f tmpvar_12;
  tmpvar_12 = tmpvar_11;
  xl_retval = tmpvar_12;
  vec4 tmpvar_13;
  tmpvar_13 = xl_retval.pos.xyzw;
  vec4 tmpvar_14;
  tmpvar_14 = tmpvar_13;
  gl_Position = tmpvar_14;
  vec4 tmpvar_15;
  tmpvar_15.yzw = vec3(0.0, 0.0, 0.0);
  tmpvar_15.x = xl_retval.fog;
  vec4 tmpvar_16;
  tmpvar_16 = tmpvar_15;
  xlv_FOG = tmpvar_16;
  vec4 tmpvar_17;
  tmpvar_17 = xl_retval.uv.xyzw;
  vec4 tmpvar_18;
  tmpvar_18 = tmpvar_17;
  gl_TexCoord[0] = tmpvar_18;
  vec4 tmpvar_19;
  tmpvar_19 = xl_retval.color.xyzw;
  vec4 tmpvar_20;
  tmpvar_20 = tmpvar_19;
  gl_FrontColor = tmpvar_20;
}

