#include <metal_stdlib>
using namespace metal;
struct xlatMtlShaderInput {
  float4 _glesVertex [[attribute(0)]];
  half3 _glesNormal [[attribute(1)]];
  float4 _glesMultiTexCoord0 [[attribute(2)]];
};
struct xlatMtlShaderOutput {
  float4 gl_Position [[position]];
  half4 xlv_COLOR0;
  float2 xlv_TEXCOORD0;
};
struct xlatMtlShaderUniform {
  half4 unity_LightColor[8];
  float4 unity_LightPosition[8];
  half4 unity_LightAtten[8];
  float4x4 glstate_matrix_mvp;
  float4x4 glstate_matrix_modelview0;
  float4x4 glstate_matrix_invtrans_modelview0;
  float4 glstate_lightmodel_ambient;
  half4 _Color;
};
vertex xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]])
{
  xlatMtlShaderOutput _mtl_o;
  float3 tmpvar_1;
  tmpvar_1 = _mtl_i._glesVertex.xyz;
  float3 n_2;
  n_2 = float3(_mtl_i._glesNormal);
  half4 tmpvar_3;
  float4 tmpvar_4;
  tmpvar_4.w = 1.0;
  tmpvar_4.xyz = tmpvar_1;
  float3 lightColor_5;
  float3 viewN_6;
  float3 viewpos_7;
  float4 tmpvar_8;
  tmpvar_8.w = 1.0;
  tmpvar_8.xyz = tmpvar_1;
  viewpos_7 = (_mtl_u.glstate_matrix_modelview0 * tmpvar_8).xyz;
  float3x3 tmpvar_9;
  tmpvar_9[0] = _mtl_u.glstate_matrix_invtrans_modelview0[0].xyz;
  tmpvar_9[1] = _mtl_u.glstate_matrix_invtrans_modelview0[1].xyz;
  tmpvar_9[2] = _mtl_u.glstate_matrix_invtrans_modelview0[2].xyz;
  viewN_6 = (tmpvar_9 * n_2);
  float3 tmpvar_10;
  tmpvar_10 = (_mtl_u.unity_LightPosition[0].xyz - (viewpos_7 * _mtl_u.unity_LightPosition[0].w));
  lightColor_5 = (_mtl_u.glstate_lightmodel_ambient.xyz + ((float3)_mtl_u.unity_LightColor[0].xyz * (
    max (0.0, dot (viewN_6, normalize(tmpvar_10)))
   * 
    (1.0/((1.0 + (dot (tmpvar_10, tmpvar_10) * (float)_mtl_u.unity_LightAtten[0].z))))
  )));
  float3 tmpvar_11;
  tmpvar_11 = (_mtl_u.unity_LightPosition[1].xyz - (viewpos_7 * _mtl_u.unity_LightPosition[1].w));
  lightColor_5 = (lightColor_5 + ((float3)_mtl_u.unity_LightColor[1].xyz * (
    max (0.0, dot (viewN_6, normalize(tmpvar_11)))
   * 
    (1.0/((1.0 + (dot (tmpvar_11, tmpvar_11) * (float)_mtl_u.unity_LightAtten[1].z))))
  )));
  float3 tmpvar_12;
  tmpvar_12 = (_mtl_u.unity_LightPosition[2].xyz - (viewpos_7 * _mtl_u.unity_LightPosition[2].w));
  lightColor_5 = (lightColor_5 + ((float3)_mtl_u.unity_LightColor[2].xyz * (
    max (0.0, dot (viewN_6, normalize(tmpvar_12)))
   * 
    (1.0/((1.0 + (dot (tmpvar_12, tmpvar_12) * (float)_mtl_u.unity_LightAtten[2].z))))
  )));
  float3 tmpvar_13;
  tmpvar_13 = (_mtl_u.unity_LightPosition[3].xyz - (viewpos_7 * _mtl_u.unity_LightPosition[3].w));
  lightColor_5 = (lightColor_5 + ((float3)_mtl_u.unity_LightColor[3].xyz * (
    max (0.0, dot (viewN_6, normalize(tmpvar_13)))
   * 
    (1.0/((1.0 + (dot (tmpvar_13, tmpvar_13) * (float)_mtl_u.unity_LightAtten[3].z))))
  )));
  float4 tmpvar_14;
  tmpvar_14.w = 1.0;
  tmpvar_14.xyz = ((lightColor_5 * (float3)_mtl_u._Color.xyz) * 2.0);
  tmpvar_3 = half4(tmpvar_14);
  _mtl_o.gl_Position = (_mtl_u.glstate_matrix_mvp * tmpvar_4);
  _mtl_o.xlv_COLOR0 = tmpvar_3;
  _mtl_o.xlv_TEXCOORD0 = _mtl_i._glesMultiTexCoord0.xy;
  return _mtl_o;
}


// stats: 56 alu 0 tex 0 flow
// inputs: 3
//  #0: _glesVertex (high float) 4x1 [-1] loc 0
//  #1: _glesNormal (medium float) 3x1 [-1] loc 1
//  #2: _glesMultiTexCoord0 (high float) 4x1 [-1] loc 2
// uniforms: 8 (total size: 472)
//  #0: unity_LightColor (medium float) 4x1 [8] loc 0
//  #1: unity_LightPosition (high float) 4x1 [8] loc 64
//  #2: unity_LightAtten (medium float) 4x1 [8] loc 192
//  #3: glstate_matrix_mvp (high float) 4x4 [-1] loc 256
//  #4: glstate_matrix_modelview0 (high float) 4x4 [-1] loc 320
//  #5: glstate_matrix_invtrans_modelview0 (high float) 4x4 [-1] loc 384
//  #6: glstate_lightmodel_ambient (high float) 4x1 [-1] loc 448
//  #7: _Color (medium float) 4x1 [-1] loc 464
