// halo in dust cloud generated by propeller
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4 CamPos;
//   float4 g_vDistortionDesc;
//   float4 g_vFogColor;
//   float4 g_vFogDistance;
//   float4 g_vFogLayerPlane;
//   float4 lightCount;
//
//
// Registers:
//
//   Name              Reg   Size
//   ----------------- ----- ----
//   lightCount        c0       1
//   CamPos            c1       1
//   g_vDistortionDesc c2       1
//   g_vFogLayerPlane  c3       1
//   g_vFogColor       c4       1
//   g_vFogDistance    c5       1
//
//
// Default values:
//
//   lightCount
//     c0   = { 0, 0, 0, 0 };
//
//   CamPos
//     c1   = { 0, 0, 0, 0 };
//
//   g_vDistortionDesc
//     c2   = { 0, 0, 0, 0 };
//
//   g_vFogLayerPlane
//     c3   = { 0, -1, 0, 0 };
//
//   g_vFogColor
//     c4   = { 1, 0, 0, 1 };
//
//   g_vFogDistance
//     c5   = { 0, 0, 0, 0 };
//

    // preshader
    // lt ob1.x, (1.001), c2.w
    // rcp c152.x, c2.w
    // mul r0.x, c2.w, c2.w
    // add c151.x, r0.x, (-1)
    // mov r0.xyz, c1.xyz
    // mov r0.w, (1)
    // dot r1, r0, c3
    // ge ob0.x, r1.x, (0)
    // mov c154.x, r1.x
    // dot r0.xyz, (1, 1, 1), c4.xyz
    // lt c155.x, (0.001), r0.x
    // add r0.x, c5.w, (-0.25)
    // add c156.x, r0.x, r0.x
    // neg r0.x, c0.x
    // lt r1.x, c0.x, r0.x
    // frc r0.x, c0.x
    // neg r1.y, r0.x
    // lt r2.x, r1.y, r0.x
    // add r0.x, r1.y, c0.x
    // mul r0.y, r1.x, r2.x
    // add c158.x, r0.y, r0.x

// approximately 21 instructions used
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4 CamPos;
//   float4 ExPos[4];
//   float4 ExRad[4];
//   float4x4 IView;
//   float4 PData[150];
//   float4x4 View;
//   float4x4 ViewProj;
//   float4x4 WM;
//   float4 g_avConeDir[4];
//   float4 g_avLightColor[4];
//   float4 g_avLightPos[4];
//   float4 g_vFogColor;
//   float4 g_vFogDistance;
//   float4 g_vFogLayerPlane;
//   float4 g_vFogLayerSettings;
//   float4 g_vScreenDepthRect;
//
//
// Registers:
//
//   Name                Reg   Size
//   ------------------- ----- ----
//   PData               c0     150
//   g_avLightPos        c159     4
//   g_avLightColor      c163     4
//   g_avConeDir         c167     4
//   ViewProj            c171     4
//   ExPos               c175     4
//   ExRad               c179     4
//   IView               c183     3
//   WM                  c186     3
//   View                c189     3
//   g_vScreenDepthRect  c192     1
//   CamPos              c193     1
//   g_vFogLayerPlane    c194     1
//   g_vFogLayerSettings c195     1
//   g_vFogColor         c196     1
//   g_vFogDistance      c197     1
//
//
// Default values:
//
//   PData
//     c0   = { 0, 0, 0, 0 };
//     c1   = { 0, 0, 0, 0 };
//     c2   = { 0, 0, 0, 0 };
//     c3   = { 0, 0, 0, 0 };
//     c4   = { 0, 0, 0, 0 };
//     c5   = { 0, 0, 0, 0 };
//     c6   = { 0, 0, 0, 0 };
//     c7   = { 0, 0, 0, 0 };
//     c8   = { 0, 0, 0, 0 };
//     c9   = { 0, 0, 0, 0 };
//     c10  = { 0, 0, 0, 0 };
//     c11  = { 0, 0, 0, 0 };
//     c12  = { 0, 0, 0, 0 };
//     c13  = { 0, 0, 0, 0 };
//     c14  = { 0, 0, 0, 0 };
//     c15  = { 0, 0, 0, 0 };
//     c16  = { 0, 0, 0, 0 };
//     c17  = { 0, 0, 0, 0 };
//     c18  = { 0, 0, 0, 0 };
//     c19  = { 0, 0, 0, 0 };
//     c20  = { 0, 0, 0, 0 };
//     c21  = { 0, 0, 0, 0 };
//     c22  = { 0, 0, 0, 0 };
//     c23  = { 0, 0, 0, 0 };
//     c24  = { 0, 0, 0, 0 };
//     c25  = { 0, 0, 0, 0 };
//     c26  = { 0, 0, 0, 0 };
//     c27  = { 0, 0, 0, 0 };
//     c28  = { 0, 0, 0, 0 };
//     c29  = { 0, 0, 0, 0 };
//     c30  = { 0, 0, 0, 0 };
//     c31  = { 0, 0, 0, 0 };
//     c32  = { 0, 0, 0, 0 };
//     c33  = { 0, 0, 0, 0 };
//     c34  = { 0, 0, 0, 0 };
//     c35  = { 0, 0, 0, 0 };
//     c36  = { 0, 0, 0, 0 };
//     c37  = { 0, 0, 0, 0 };
//     c38  = { 0, 0, 0, 0 };
//     c39  = { 0, 0, 0, 0 };
//     c40  = { 0, 0, 0, 0 };
//     c41  = { 0, 0, 0, 0 };
//     c42  = { 0, 0, 0, 0 };
//     c43  = { 0, 0, 0, 0 };
//     c44  = { 0, 0, 0, 0 };
//     c45  = { 0, 0, 0, 0 };
//     c46  = { 0, 0, 0, 0 };
//     c47  = { 0, 0, 0, 0 };
//     c48  = { 0, 0, 0, 0 };
//     c49  = { 0, 0, 0, 0 };
//     c50  = { 0, 0, 0, 0 };
//     c51  = { 0, 0, 0, 0 };
//     c52  = { 0, 0, 0, 0 };
//     c53  = { 0, 0, 0, 0 };
//     c54  = { 0, 0, 0, 0 };
//     c55  = { 0, 0, 0, 0 };
//     c56  = { 0, 0, 0, 0 };
//     c57  = { 0, 0, 0, 0 };
//     c58  = { 0, 0, 0, 0 };
//     c59  = { 0, 0, 0, 0 };
//     c60  = { 0, 0, 0, 0 };
//     c61  = { 0, 0, 0, 0 };
//     c62  = { 0, 0, 0, 0 };
//     c63  = { 0, 0, 0, 0 };
//     c64  = { 0, 0, 0, 0 };
//     c65  = { 0, 0, 0, 0 };
//     c66  = { 0, 0, 0, 0 };
//     c67  = { 0, 0, 0, 0 };
//     c68  = { 0, 0, 0, 0 };
//     c69  = { 0, 0, 0, 0 };
//     c70  = { 0, 0, 0, 0 };
//     c71  = { 0, 0, 0, 0 };
//     c72  = { 0, 0, 0, 0 };
//     c73  = { 0, 0, 0, 0 };
//     c74  = { 0, 0, 0, 0 };
//     c75  = { 0, 0, 0, 0 };
//     c76  = { 0, 0, 0, 0 };
//     c77  = { 0, 0, 0, 0 };
//     c78  = { 0, 0, 0, 0 };
//     c79  = { 0, 0, 0, 0 };
//     c80  = { 0, 0, 0, 0 };
//     c81  = { 0, 0, 0, 0 };
//     c82  = { 0, 0, 0, 0 };
//     c83  = { 0, 0, 0, 0 };
//     c84  = { 0, 0, 0, 0 };
//     c85  = { 0, 0, 0, 0 };
//     c86  = { 0, 0, 0, 0 };
//     c87  = { 0, 0, 0, 0 };
//     c88  = { 0, 0, 0, 0 };
//     c89  = { 0, 0, 0, 0 };
//     c90  = { 0, 0, 0, 0 };
//     c91  = { 0, 0, 0, 0 };
//     c92  = { 0, 0, 0, 0 };
//     c93  = { 0, 0, 0, 0 };
//     c94  = { 0, 0, 0, 0 };
//     c95  = { 0, 0, 0, 0 };
//     c96  = { 0, 0, 0, 0 };
//     c97  = { 0, 0, 0, 0 };
//     c98  = { 0, 0, 0, 0 };
//     c99  = { 0, 0, 0, 0 };
//     c100 = { 0, 0, 0, 0 };
//     c101 = { 0, 0, 0, 0 };
//     c102 = { 0, 0, 0, 0 };
//     c103 = { 0, 0, 0, 0 };
//     c104 = { 0, 0, 0, 0 };
//     c105 = { 0, 0, 0, 0 };
//     c106 = { 0, 0, 0, 0 };
//     c107 = { 0, 0, 0, 0 };
//     c108 = { 0, 0, 0, 0 };
//     c109 = { 0, 0, 0, 0 };
//     c110 = { 0, 0, 0, 0 };
//     c111 = { 0, 0, 0, 0 };
//     c112 = { 0, 0, 0, 0 };
//     c113 = { 0, 0, 0, 0 };
//     c114 = { 0, 0, 0, 0 };
//     c115 = { 0, 0, 0, 0 };
//     c116 = { 0, 0, 0, 0 };
//     c117 = { 0, 0, 0, 0 };
//     c118 = { 0, 0, 0, 0 };
//     c119 = { 0, 0, 0, 0 };
//     c120 = { 0, 0, 0, 0 };
//     c121 = { 0, 0, 0, 0 };
//     c122 = { 0, 0, 0, 0 };
//     c123 = { 0, 0, 0, 0 };
//     c124 = { 0, 0, 0, 0 };
//     c125 = { 0, 0, 0, 0 };
//     c126 = { 0, 0, 0, 0 };
//     c127 = { 0, 0, 0, 0 };
//     c128 = { 0, 0, 0, 0 };
//     c129 = { 0, 0, 0, 0 };
//     c130 = { 0, 0, 0, 0 };
//     c131 = { 0, 0, 0, 0 };
//     c132 = { 0, 0, 0, 0 };
//     c133 = { 0, 0, 0, 0 };
//     c134 = { 0, 0, 0, 0 };
//     c135 = { 0, 0, 0, 0 };
//     c136 = { 0, 0, 0, 0 };
//     c137 = { 0, 0, 0, 0 };
//     c138 = { 0, 0, 0, 0 };
//     c139 = { 0, 0, 0, 0 };
//     c140 = { 0, 0, 0, 0 };
//     c141 = { 0, 0, 0, 0 };
//     c142 = { 0, 0, 0, 0 };
//     c143 = { 0, 0, 0, 0 };
//     c144 = { 0, 0, 0, 0 };
//     c145 = { 0, 0, 0, 0 };
//     c146 = { 0, 0, 0, 0 };
//     c147 = { 0, 0, 0, 0 };
//     c148 = { 0, 0, 0, 0 };
//     c149 = { 0, 0, 0, 0 };
//
//   g_avLightPos
//     c159 = { 0, 0, 0, 0 };
//     c160 = { 0, 0, 0, 0 };
//     c161 = { 0, 0, 0, 0 };
//     c162 = { 0, 0, 0, 0 };
//
//   g_avLightColor
//     c163 = { 0, 0, 0, 0 };
//     c164 = { 0, 0, 0, 0 };
//     c165 = { 0, 0, 0, 0 };
//     c166 = { 0, 0, 0, 0 };
//
//   g_avConeDir
//     c167 = { 0, 0, 0, 0 };
//     c168 = { 0, 0, 0, 0 };
//     c169 = { 0, 0, 0, 0 };
//     c170 = { 0, 0, 0, 0 };
//
//   ViewProj
//     c171 = { 0, 0, 0, 0 };
//     c172 = { 0, 0, 0, 0 };
//     c173 = { 0, 0, 0, 0 };
//     c174 = { 0, 0, 0, 0 };
//
//   ExPos
//     c175 = { 0, 0, 0, 0 };
//     c176 = { 0, 0, 0, 0 };
//     c177 = { 0, 0, 0, 0 };
//     c178 = { 0, 0, 0, 0 };
//
//   ExRad
//     c179 = { 0, 0, 0, 0 };
//     c180 = { 0, 0, 0, 0 };
//     c181 = { 0, 0, 0, 0 };
//     c182 = { 0, 0, 0, 0 };
//
//   IView
//     c183 = { 0, 0, 0, 0 };
//     c184 = { 0, 0, 0, 0 };
//     c185 = { 0, 0, 0, 0 };
//
//   WM
//     c186 = { 0, 0, 0, 0 };
//     c187 = { 0, 0, 0, 0 };
//     c188 = { 0, 0, 0, 0 };
//
//   View
//     c189 = { 0, 0, 0, 0 };
//     c190 = { 0, 0, 0, 0 };
//     c191 = { 0, 0, 0, 0 };
//
//   g_vScreenDepthRect
//     c192 = { 0, 0, 0, 0 };
//
//   CamPos
//     c193 = { 0, 0, 0, 0 };
//
//   g_vFogLayerPlane
//     c194 = { 0, -1, 0, 0 };
//
//   g_vFogLayerSettings
//     c195 = { 0.0005, 300, 0.0125, 0 };
//
//   g_vFogColor
//     c196 = { 1, 0, 0, 1 };
//
//   g_vFogDistance
//     c197 = { 0, 0, 0, 0 };
//

    vs_3_0
    def c198, 1, 0, 0.5, -1
    def c199, 9.99999975e-005, 1.44254541, -1.44269502, 0.800000012
    def c200, 5, 0.333299994, -0.100000001, 1.11111116
    def c201, 0, 0, 0, 2
    def c202, -3, -0.0187292993, 0.0742610022, -0.212114394
    def c203, 1.57072878, -2, 3.14159274, 0.00499999989
    def c204, 0.5, -0.5, 0, 0
	// The required constant for txldl in c220.z
def c220, 1.0, 600, 0.0625, 0
    defi i0, 3, 0, 1, 0
    defi i1, 4, 0, 1, 0
    dcl_position v0
// Sampler used to fetch stereo params, 
// s0 sampler is default for VS
dcl_2d s0	
    dcl_position o0
    dcl_texcoord o1
    dcl_texcoord1 o2
    dcl_texcoord2 o3
    dcl_texcoord3 o4
    dcl_texcoord4 o5.xy
    dcl_color o6
    dcl_color1 o7
    dcl_color2 o8
    dcl_color3 o9
    frc r0.x, v0.w
    add r0.y, -r0.x, v0.w
    mova a0.x, r0.y
    mov o3.xyz, c2[a0.x]
    mov r1.xyz, c198
    mad r2, c0[a0.x].xyzx, r1.xxxy, r1.yyyx
    dp4 r3.z, r2, c188
    dp4 r3.x, r2, c186
    dp4 r3.y, r2, c187
    mov r0.y, c198.x
    loop aL, i0
      add r2.xyz, r3, -c176[aL]
      rcp r0.z, c180[aL].x
      mul r4.x, r0.z, r2.x
      rcp r0.z, c180[aL].y
      mul r4.y, r0.z, r2.y
      rcp r0.z, c180[aL].z
      mul r4.z, r0.z, r2.z
      dp3 r0.z, r4, r4
      min r0.z, r0.z, c198.x
      mul r0.y, r0.z, r0.y
    endloop
    add r0.z, r3.y, -c175.y
    mad_sat r0.z, r0.z, -c175.x, r1.x
    mad r0.y, r0.y, r0.z, c198.w
    add r0.z, c198.x, v0.w
    add r0.x, r0.z, -r0.x
    add r2.xyz, -r3, c193
    dp3 r0.z, r2, r2
    rsq r0.z, r0.z
    rcp r0.z, r0.z
    mul r0.z, r0.z, c203.w
    min r0.z, r0.z, c198.x
    mad r0.y, r0.z, r0.y, c198.x
    mova a0.y, r0.x
    mul r0.x, r0.y, c0[a0.y].z
    mul r0.yzw, v0.xxyz, c0[a0.x].w
    mul r2.xyz, r0.zyzw, c0[a0.y].xxyw
    mad r0.y, r0.y, c0[a0.y].y, -r2.x
    add r0.z, r2.z, r2.y
    dp3 r2.z, r0.yzww, c185
    dp3 r2.x, r0.yzww, c183
    dp3 r2.y, r0.yzww, c184
    add r2.xyz, r3, r2
    add r0.yzw, r2.xxyz, -c193.xxyz
    dp3 r0.y, r0.yzww, r0.yzww
    rsq r0.y, r0.y
    rcp r0.y, r0.y
    mul r0.y, r0.y, c197.x
    min r0.y, r0.y, c198.x
    mul r4.xyz, r0.y, c196
    pow r0.z, r4.x, c196.w
    mul r0.z, r0.z, c199.z
    exp r0.z, r0.z
    add r5.x, -r0.z, c198.x
    pow r0.z, r4.y, c196.w
    mul r0.z, r0.z, c199.z
    exp r0.z, r0.z
    add r5.y, -r0.z, c198.x
    pow r0.z, r4.z, c196.w
    mul r0.z, r0.z, c199.z
    exp r0.z, r0.z
    add r5.z, -r0.z, c198.x
    slt r0.z, c199.w, r0.y
    mul r0.z, r0.z, c155.x
    if_ne r0.z, -r0.z
      add r0.y, r0.y, -c199.w
      mul r0.y, r0.y, c200.x
      lrp r4.xyz, r0.y, c198.x, r5
      mov r5.xyz, r4
    endif
    dp3 r0.y, r5, c200.y
    add r0.yzw, -r5.xxyz, r0.y
    mad o2.xyz, c156.x, r0.yzww, r5
    mov r2.w, c198.x
    dp4 r0.y, r2, c194
    add r4.xyz, -r2, c193
    if b0
      if_lt r0.y, -c195.y
        mov r0.y, -c195.y
      endif
      if_ge r0.y, c198.y
        mov r0.zw, c198.xyyx
      else
        nrm r5.xyz, r4
        dp3 r1.w, c194, r5
        if_lt c199.x, r1_abs.w
          rcp r1.w, r1.w
          add r3.w, -r0.y, c154.x
          mul r4.w, r1.w, c154.x
          mad r0.z, r3.w, r1.w, -r4.w
        else
          mov r0.z, c198.y
        endif
        slt r0.w, r0.z, c199.x
      endif
      if_ne r0.w, -r0.w
        mov o2.w, c198.y
      else
        mul r0.z, r0.z, c195.x
        mul r0.z, r0.z, c199.y
        exp r0.z, r0.z
        rcp r0.z, r0.z
        add o2.w, -r0.z, c198.x
      endif
    else
      if_ge r0.y, c198.y
        nrm r5.xyz, r4
        dp3 r0.y, c194, r5
        if_lt c199.x, r0_abs.y
          rcp r0.z, r0.y
          mul r0.y, r0.z, c154.x
        endif
        slt r0.z, r0.y, c199.x
      else
        dp3 r0.w, r4, r4
        rsq r0.w, r0.w
        rcp r0.y, r0.w
        mov r0.z, c198.y
      endif
      if_ne r0.z, -r0.z
        mov o2.w, c198.y
      else
        mul r0.y, r0.y, c195.x
        mul r0.y, r0.y, c199.y
        exp r0.y, r0.y
        rcp r0.y, r0.y
        add o2.w, r0.y, c198.w
      endif
    endif
    dp4 r4.x, r2, c171
    dp4 r4.y, r2, c172
    dp4 r4.w, r2, c174
    mov o0.xyw, r4
    mul r0.y, r1.z, c0[a0.x].w
    rcp r0.y, r0.y
    mul_sat r0.z, r0.y, r4.w
    mul o3.w, r0.z, r0.x
    // mov o4.z, r4.w
mov r11.z, r4.w
    // mov o4.w, r0.y
mov r11.w, r0.y	
    dp4 o0.z, r2, c173
    rcp r0.x, r4.w
    mul r0.xy, r0.x, r4
    mul r0.xy, r0, c198.z
    mad r0.zw, r0.xyxy, c198.xyxw, c198.z
    // mad o4.xy, r0.zwzw, c192.zwzw, c192
mad r11.xy, r0.zwzw, c192.zwzw, c192
    mov_sat r2.xy, v0
    if b1
      max r0.y, r1.y, c0[a0.y].w
      min r0.y, r0.y, c151.x
      frc r0.z, r0.y
      add r0.y, r0.y, -r0.z
      mov r4.x, c199.x
      mad r0.z, r0.y, c152.x, r4.x
      frc r1.y, r0.z
      add r4.y, r0.z, -r1.y
      mad r4.x, r4.y, -r0.y, r0.y
      add r2.z, -r2.y, c198.x
      add r0.yz, r2.xxzw, r4.xxyw
      mul r4.xy, r0.yzzw, c152.x
    else
      add r2.w, -r2.y, c198.x
      mov r4.xy, r2.xwzw
    endif
    mov r5, c198.y
    mov r6, c198.y
    mov r7, c198.y
    mov r8, c198.y
    mov r0.y, c198.y
    loop aL, i1
      break_ge r0.y, c158.x
      slt r0.z, r1.x, c159[aL].w
      if_ne r0.z, -r0.z
        add r1.yzw, -r3.xxyz, c159[aL].xxyz
        dp3 r0.z, r1.yzww, r1.yzww
        rsq r0.z, r0.z
        mul r1.yzw, r0.z, r1
        rcp r0.z, r0.z
        mul r0.z, r0.z, r0.z
        mul r0.z, r0.z, c163[aL].w
        add r0.z, r0.z, c198.x
        rcp r0.z, r0.z
        add r0.z, r0.z, c200.z
        mul_sat r9.w, r0.z, c200.w
        mov r2.w, c159[aL].w
        if_lt c201.w, r2.w
          dp3 r0.z, r1.yzww, c167[aL]
          add r2.z, -r0_abs.z, c198.x
          rsq r2.z, r2.z
          rcp r2.z, r2.z
          mad r3.w, r0_abs.z, c202.y, c202.z
          mad r3.w, r3.w, r0_abs.z, c202.w
          mad r3.w, r3.w, r0_abs.z, c203.x
          mul r2.z, r2.z, r3.w
          slt r0.z, r0.z, -r0.z
          mad r3.w, r2.z, c203.y, c203.z
          mad r0.z, r3.w, r0.z, r2.z
          add r2.z, r2.w, c202.x
          if_lt r0.z, r2.z
            rcp r2.z, r2.z
            frc r2.w, c167[aL].w
            mad r0.z, r0.z, r2.z, -r2.w
            add r2.z, -r2.w, c198.x
            rcp r2.z, r2.z
            mul_sat r0.z, r0.z, r2.z
            add r0.z, -r0.z, c198.x
          else
            mov r0.z, c198.y
          endif
          mul r9.w, r0.z, r9.w
        endif
      else
        mov r1.yzw, -c159[aL].xxyz
        mov r9.w, c198.x
      endif
      dp3 r10.z, r1.yzww, c191
      dp3 r0.z, r1.yzww, c189
      dp3 r1.y, r1.yzww, c190
      mul r1.yz, r1.y, c0[a0.y].xxyw
      mad r10.y, -r0.z, c0[a0.y].x, r1.z
      mad r10.x, r0.z, c0[a0.y].y, r1.y
      mad r9.xyz, r10, c204.xxyw, c204.x
      if_lt -r0.y, r0.y
        add r0.z, r0.y, c198.w
        if_ge -r0_abs.z, r0_abs.z
          mov r6, r9
        else
          add r0.z, r0.y, -c201.w
          if_ge -r0_abs.z, r0_abs.z
            mov r7, r9
          else
            mov r8, r9
          endif
        endif
      else
        mov r5, r9
      endif
      add r0.y, r0.y, c198.x
    endloop
    mov o6, r5
    mov o7, r6
    mov o8, r7
    mov o9, r8
    add r4.zw, r0.xyxw, c198.xyzy
    mov o1, r4
    mad o5.xy, r2, c198.xwzw, c198.yxzw

// At this point r11 is the output position, correctly
// placed, but without stereo.
texldl r30, c220.z, s0
add r30.w, r11.w, -r30.y
mul r30.z, r30.x, r30.w
add r11.x, r11.x, r30.z
mov o4, r11
// approximately 296 instruction slots used
