//smoke - ULTRA PRESET
//CANNOT USE s13 AS ALL SAMPLERS RE USED UP
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
// Parameters:
//
//   float3 ambient_cube_tb[2];
//   float3 camera_position;
//   float3 g_camera_aligned_x_axis;
//   float3 g_camera_aligned_y_axis;
//   float3 g_camera_aligned_z_axis;
//   float g_hdr_on;
//   float4 g_viewport_offset_scale;
//   sampler2D gbuffer_channel_4_sampler;
//   float4x4 inv_projection;
//   sampler2D s_diffuse1;
//   sampler2D s_diffuse2;
//   sampler2D s_diffuse3;
//   sampler2D s_diffuse4;
//   sampler2D s_diffuse5;
//   sampler2D s_diffuse6;
//   sampler2D s_diffuse7;
//   samplerCUBE s_environment;
//   sampler2D s_normal1;
//   sampler2D s_normal2;
//   sampler2D s_normal3;
//   sampler2D s_normal4;
//   sampler2D s_normal5;
//   sampler2D s_normal6;
//   sampler2D s_normal7;
//   float3 sun_colour;
//   float3 sun_direction;
//   float4x4 view;
//   float4x4 view_projection;
//
//
// Registers:
//
//   Name                      Reg   Size
//   ------------------------- ----- ----
//   view_projection           c0       4
//   inv_projection            c4       4
//   view                      c8       3
//   camera_position           c11      1
//   sun_direction             c12      1
//   sun_colour                c13      1
//   ambient_cube_tb           c14      1
//   g_hdr_on                  c15      1
//   g_camera_aligned_x_axis   c16      1
//   g_camera_aligned_y_axis   c17      1
//   g_camera_aligned_z_axis   c18      1
//   g_viewport_offset_scale   c19      1
//   s_environment             s0       1
//   gbuffer_channel_4_sampler s1       1
//   s_diffuse1                s2       1
//   s_diffuse2                s3       1
//   s_diffuse3                s4       1
//   s_diffuse4                s5       1
//   s_diffuse5                s6       1
//   s_diffuse6                s7       1
//   s_diffuse7                s8       1
//   s_normal1                 s9       1
//   s_normal2                 s10      1
//   s_normal3                 s11      1
//   s_normal4                 s12      1
//   s_normal5                 s13      1
//   s_normal6                 s14      1
//   s_normal7                 s15      1
//

    ps_3_0
    def c20, 0.100000001, 1, 0.25, 0
    def c21, 1000, 1.00100005, -6, 0
    def c22, -5, -4, -3, -2
    def c23, 2, -1, -0.0187292993, 0.0742610022
    def c24, -0.212114394, 1.57072878, -2, 3.14159274
    def c25, 0.99984771, 1.00015235, 0.979900002, 0.0199999996
    def c26, 4.95061684, 0.346573591, 4.54688501, 1.41421354
    def c27, 0.707106769, 0.140012279, 1.27323949, 1
    def c28, 1.44269502, 60, 8, 4099
    def c29, 0.0174532924, -9.99999975e-005, -0.0174532924, 10000
    def c30, 1, 0.00400000019, 360, -0.00100000005
    def c31, 0.5, 0, 1.5, -0.5
    def c32, 0.5, 1, 0.999000013, -9.96578407
    def c33, -0.0123413419, 0.0123413419, 0, -0
    def c34, 0.0941179991, 0.00499999989, 0.25, 0
    def c35, 1, 0.25, 0.75, 0
    def c36, 0.75, 1, 0.25, -0.25
    def c37, 2, -2, -1, 1
    dcl_color v0
    dcl_texcoord v1.xy
    dcl_texcoord1 v2.xyz
    dcl_texcoord2 v3.zw
    dcl_texcoord3 v4
    dcl_texcoord4 v5.xyz
    dcl_texcoord5 v6.x
    dcl_texcoord6 v7.x
dcl_texcoord8 v8.xy
    dcl_cube s0
    dcl_2d s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4
    dcl_2d s5
    dcl_2d s6
    dcl_2d s7
    dcl_2d s8
    dcl_2d s9
    dcl_2d s10
    dcl_2d s11
    dcl_2d s12
    dcl_2d s13
    dcl_2d s14
    dcl_2d s15
    add r0.xyz, c20.x, v5
    frc r1.xyz, r0
    add r2.xyz, r0, -r1
    add r3, r2.x, c22
    cmp r4, -r3_abs.yzww, c20.yyyz, c20.w
    add r0.x, r2.x, -c20.y
    cmp r5.xyz, -r0_abs.x, c35, c35.w
    cmp r6.xyz, -r2_abs.x, c20.yzyw, c20.w
    add r5.yzw, r5.xxyz, r6.xxyz
    cmp r0.w, -r5.y, c20.w, c20.y
    add r0.w, r4.z, r0.w
    cmp r0.w, -r0.w, c20.w, c20.y
    add r0.w, r4.y, r0.w
    cmp r0.w, -r0.w, c20.w, c20.y
    add r0.w, r4.x, r0.w
    if_lt -r0.w, c20.w
      if_eq r0.y, r1.y
        texld r7, v1, s2
      else
        if_eq r2.y, c20.y
          texld r7, v1, s3
        else
          if_eq r2.y, -c22.w
            texld r7, v1, s4
          else
            if_eq r2.y, -c22.z
              texld r7, v1, s5
            else
              if_eq r2.y, -c22.y
                texld r7, v1, s6
              else
                if_eq r2.y, -c22.x
                  texld r7, v1, s7
                else
                  texld r7, v1, s8
                endif
              endif
            endif
          endif
        endif
      endif
      mul r7, r7, v0
      mul r7.xyz, r7, v0.w
    else
      mov r7, v0
    endif
    add r0.y, r4.z, r5.x
    cmp r0.y, -r0.y, c20.w, c20.y
    add r0.y, r4.y, r0.y
    cmp r0.y, -r0.y, c20.w, c20.y
    add r0.y, r4.x, r0.y
    if_lt -r0.y, c20.w
      if_eq r0.z, r1.z
        texld r1, v1, s9
      else
        if_eq r2.z, c20.y
          texld r1, v1, s10
        else
          if_eq r2.z, -c22.w
            texld r1, v1, s11
          else
            if_eq r2.z, -c22.z
              texld r1, v1, s12
            else
              if_eq r2.z, -c22.y
                texld r1, v1, s13
              else
                if_eq r2.z, -c22.x
                  texld r1, v1, s14
                else
                  texld r1, v1, s15
                endif
              endif
            endif
          endif
        endif
      endif
      mad r1.xyz, r1, c23.x, c23.y
    else
      mov r1.xyz, c20.wwyw
    endif
    if_lt -r0.y, c20.w
      cmp r0.xyz, -r0_abs.x, c34, c34.w
      cmp r8, -r3_abs.wzyw, c34.xxxy, c34.w
      add r0.xy, r0, r8.xwzw
      add r0.x, r8.y, r0.x
      add r0.x, r8.z, r0.x
      cmp r8, -r3_abs.zywz, c34.yyzz, c34.w
      add r0.y, r0.y, r8.x
      add r0.yz, r0, r8
      add r0.z, r8.w, r0.z
      cmp r1.w, -r3_abs.y, c20.z, c20.w
      add r0.z, r0.z, r1.w
      add r1.w, -r0.y, c20.y
      add r2.yzw, -c11.xxyz, v2.xxyz
      nrm r8.xyz, r2.yzww
      dp3 r2.y, -r8, r1
      add r2.y, r2.y, r2.y
      mad r9.xyz, r1, -r2.y, -r8
      add r2.y, -r0.z, c20.y
      dp3 r2.z, -c12, r9
      max r5.x, -c20.y, r2.z
      min r2.z, r5.x, c20.y
      add r2.w, -r2_abs.z, c20.y
      rsq r2.w, r2.w
      rcp r2.w, r2.w
      mad r5.x, r2_abs.z, c23.z, c23.w
      mad r5.x, r5.x, r2_abs.z, c24.x
      mad r5.x, r5.x, r2_abs.z, c24.y
      mul r2.w, r2.w, r5.x
      mad r5.x, r2.w, c24.z, c24.w
      cmp r2.z, r2.z, c20.w, c20.y
      mad r2.z, r5.x, r2.z, r2.w
      dp3 r2.w, -c12, r1
      add r2.w, r2.w, c25.x
      mul_sat r2.w, r2.w, c25.y
      mul r0.z, r0.z, r0.z
      mad r0.z, r0.z, c25.z, c25.w
      mad r0.z, r0.z, c32.x, c32.x
      mad r0.z, r0.z, c23.x, c23.y
      mad r5.xy, r0.z, -r0.z, c32.yzzw
      log r0.z, r5.x
      cmp r0.z, r5.y, r0.z, c32.w
      mul r5.x, r0.z, c26.x
      mad r0.z, r0.z, c26.y, c26.z
      mad r5.x, r0.z, r0.z, -r5.x
      rsq r5.x, r5.x
      rcp r5.x, r5.x
      add r0.z, -r0.z, r5.x
      max r5.x, r0.z, c20.w
      rsq r0.z, r5.x
      rcp r0.z, r0.z
      mul r0.z, r0.z, c26.w
      rcp r0.z, r0.z
      mul r5.x, r0.z, c29.x
      mad r0.z, r0.z, c29.x, c29.y
      add r6.xy, r2.z, c29.zxzw
      rcp r2.z, r5.x
      cmp r0.z, r0.z, r2.z, c29.w
      mul r5.xy, r0.z, r6
      mul r6.xy, r5, c27.x
      mul r10.xy, r6, r6
      mad r11, r10.xxyy, c27.y, c27.zwzw
      rcp r2.z, r11.y
      mul r2.z, r2.z, r11.x
      mul r2.z, r2.z, -r10.x
      cmp r6.xy, -r6, c20.w, c20.y
      cmp r5.x, r5.x, -c20.w, -c20.y
      add r5.x, r5.x, r6.x
      mul r2.z, r2.z, c28.x
      exp r2.z, r2.z
      add r2.z, -r2.z, c20.y
      rsq r2.z, r2.z
      rcp r2.z, r2.z
      mad r2.z, r5.x, r2.z, c20.y
      mul r2.z, r2.z, c32.x
      rcp r5.x, r11.w
      mul r5.x, r5.x, r11.z
      mul r5.x, r5.x, -r10.y
      mul r5.x, r5.x, c28.x
      exp r5.x, r5.x
      add r5.x, -r5.x, c20.y
      rsq r5.x, r5.x
      rcp r5.x, r5.x
      mad r5.x, r6.y, r5.x, c20.y
      mad r2.z, r5.x, c32.x, -r2.z
      mul r2.z, r2.z, r2.w
      dp3 r2.w, -c12, -c12
      add r5.x, -r2.w, -c29.y
      pow r5.y, r2.w, c28.y
      mul r2.w, r1.w, r5.y
      cmp r2.w, r5.x, c20.w, r2.w
      add r2.w, r0.y, r2.w
      mul r2.z, r2.w, r2.z
      cmp r2.w, -r0.y, c20.w, c20.y
      mul r2.z, r2.w, r2.z
      mul r2.z, r0.x, r2.z
      mul r6.xyw, r2.z, c13.xyzz
      mul r6.xyw, r0.y, r6
      mul r6.xyw, r7.w, r6
      mad r6.xyw, r7.xyzz, r1.w, r6
      mul r9.w, r2.y, c28.z
      texldl r10, r9, s0
      mul r2.yz, r0.z, c33.xxyw
      mul r2.yw, r2.xyzz, r2.xyzz
      mad r11, r2.yyww, c27.y, c27.zwzw
      rcp r5.x, r11.y
      mul r5.x, r5.x, r11.x
      mul r2.y, -r2.y, r5.x
      cmp r0.z, -r0.z, -c20.w, -c20.y
      mul r2.y, r2.y, c28.x
      exp r2.y, r2.y
      add r2.y, -r2.y, c20.y
      rsq r2.y, r2.y
      rcp r2.y, r2.y
      mad r0.z, r0.z, r2.y, c20.y
      mul r0.z, r0.z, c32.x
      rcp r2.y, r11.w
      mul r2.y, r2.y, r11.z
      mul r2.y, r2.y, -r2.w
      cmp r2.z, -r2.z, c20.w, c20.y
      mul r2.y, r2.y, c28.x
      exp r2.y, r2.y
      add r2.y, -r2.y, c20.y
      rsq r2.y, r2.y
      rcp r2.y, r2.y
      mad r2.y, r2.z, r2.y, c20.y
      mad r0.z, r2.y, c32.x, -r0.z
      dp3 r2.y, r9, -r8
      add r2.z, -r2.y, -c29.y
      pow r5.x, r2.y, c28.y
      mul r1.w, r1.w, r5.x
      cmp r1.w, r2.z, c20.w, r1.w
      add r1.w, r0.y, r1.w
      lrp r2.y, r1.w, r0.z, r0.y
      max r1.w, r0.y, r2.y
      mul r2.yzw, r1.w, r10.xxyz
      mul r0.xyz, r0.x, r2.yzww
      mad r7.xyz, r0, r7.w, r6.xyww
    endif
    add r0.x, r4.w, r5.z
    cmp r8, -r3_abs.zywz, c35.yyzz, c35.w
    add r0.x, r0.x, r8.x
    add r0.y, r5.w, r8.z
    add r0.xy, r8.ywzw, r0
    mov r2.zw, c33
    cmp r5, -r3_abs.yxxx, c36, r2.zzzw
    add r0.y, r0.y, r5.x
    mul r1.yw, -r1.y, v4.xzzw
    mad r1.xy, r1.x, v4, r1.ywzw
    mul r2.yzw, r1.y, c17.xxyz
    mad r1.xyw, -r1.x, c16.xyzz, r2.yzzw
    mad r1.xyz, r1.z, -c18, r1.xyww
    nrm r8.xyz, -c12
    dp3 r0.z, r8, r1
    add r1.x, r0.z, -c20.y
    cmp r0.z, r0.z, r1.x, -c20.y
    mul r0.x, r0.z, r0.x
    mad r0.x, v3.w, r0.x, c20.y
    mul r1.xyz, r0.y, r7
    mul r0.xyz, r0.x, r1
    mul r0.xyz, r0, c13
    mov r8.xyz, c30
    cmp r2.yz, -c15.x, r8.x, r8
    mul r6.xyw, r2.z, c14.xyzz
    mul r1.xyz, r1, r6.xyww
    mul r1.xyz, r2.y, r1
    mad r0.xyz, r0, r2.y, r1
    mul r1.xyz, r0, v3.z
    mov r1.w, r7.w
    cmp r0, -r0.w, r7, r1
    add r1.x, r4.x, r4.y
    add r1.y, r5.w, r5.y
    cmp r1.z, -r3_abs.x, -c20.y, -c20.w
    add r1.w, r1.z, r5.z
    cmp r1.w, r1.w, r5.z, r5.y
    mul r2.y, c28.w, v7.x
    frc r2.y, r2.y
    add r1.z, r1.z, r1.w
    mad r1.z, r2.y, r1.z, r5.y
    cmp r1.y, -r1_abs.y, c20.y, r1.z
    add r1.y, r5.w, r1.y
    add r1.z, r1.y, c30.w
    add r1.w, r5.w, v6.x
    rcp r1.y, r1.y
    cmp r1.y, r1.z, r1.y, c21.x
    mul_sat r1.y, r1.y, r1.w
    add_sat r1.z, r0.w, -r1.y
    add r1.y, -r1.y, c21.y
    rcp r1.y, r1.y
    mul r5.w, r1.y, r1.z
    rcp r1.y, r0.w
    mul r1.y, r1.y, r5.w
    cmp r1.y, -r0_abs.w, c20.y, r1.y
    mul r5.xyz, r0, r1.y
    cmp r0, -r1.x, r0, r5
    add r1.x, r4.z, r6.z
    cmp r1.x, -r1.x, c20.w, c20.y
    add r1.x, r4.y, r1.x
    cmp r1.x, -r1.x, c20.w, c20.y
    add r1.x, r4.x, r1.x
    if_lt -r1.x, c20.w
      add r1.x, r2.x, c21.z
      cmp r1.y, -r2_abs.x, c31.x, c31.y
      add r1.y, r4.z, r1.y
      add r1.y, r4.y, r1.y
      cmp r1.z, -r3_abs.y, c31.z, c31.y
      add r1.y, r1.z, r1.y
      cmp r1.x, -r1_abs.x, c31.z, c31.y
      add r1.x, r1.x, r1.y
      mad r2, v2.xyzx, c20.yyyw, c20.wwwy
      dp4 r3.x, r2, c0
      dp4 r3.y, r2, c1
      dp4 r1.y, r2, c3
	  
add r24.y, r1.y, -v8.y
mul r24.x, v8.x, r24.y
add r3.x, r3.x, r24.x	

      rcp r1.y, r1.y
      mul r1.yz, r1.y, r3.xxyw
      mad r1.yz, r1, c31.xxww, c31.x
      mad r3.xy, r1.yzzw, c19.zwzw, c19
      mov r3.zw, c20.w
      texldl r4, r3, s1
      mad r3.xy, r3, c37, c37.zwzw
      mad r3.zw, r4.x, c20.xyyw, c20.xywy
      dp4 r1.y, r3, c6
      dp4 r1.z, r3, c7
      rcp r1.z, r1.z
      dp4 r1.w, r2, c10
      mad r1.y, r1.y, r1.z, -r1.w
      rcp r1.x, r1.x
      mul_sat r1.x, r1.x, r1.y
      mul oC0, r0, r1.x
    else
      mov oC0, r0
    endif

// approximately 355 instruction slots used (18 texture, 337 arithmetic)
 