//
// Generated by Microsoft (R) HLSL Shader Compiler 9.27.952.3022
//
// Parameters:
//
//   float3 ambient_cube_fb[2];
//   float3 ambient_cube_lr[2];
//   float3 ambient_cube_tb[2];
//   float3 camera_position;
//   float4x4 g_amHardSplit[4];
//   float4 g_campaign_world_bounds;
//   float2 g_fFadeRange;
//   float g_hdr_on;
//   float g_iSplitCount;
//   float4x4 g_overlay_view_projection;
//   float g_refraction_depth;
//   float g_sample_bias;
//   float4 g_screen_size;
//   float3 g_shadow_light_direction;
//   float g_shroud_enabled;
//   float2 g_uv_offset;
//   float4 g_vSplitDepth;
//   float g_vpos_texel_offset;
//   sampler2D gbuffer_channel_1_sampler;
//   sampler2D gbuffer_channel_2_sampler;
//   sampler2D gbuffer_channel_3_sampler;
//   sampler2D gbuffer_channel_4_sampler;
//   float4x4 inv_view_projection;
//   sampler2D sHardShadowBuffer;
//   samplerCUBE s_environment;
//   sampler2D s_overlay;
//   sampler2D s_shroud;
//   sampler2D s_ssao;
//   float3 sun_colour;
//   float3 sun_direction;
//   float4x4 view_projection;
//
//
// Registers:
//
//   Name                      Reg   Size
//   ------------------------- ----- ----
//   g_amHardSplit             c0      16
//   view_projection           c16      4
//   inv_view_projection       c20      4
//   g_overlay_view_projection c24      4
//   ambient_cube_lr           c28      2
//   ambient_cube_tb           c30      2
//   ambient_cube_fb           c32      2
//   g_iSplitCount             c34      1
//   g_vSplitDepth             c35      1
//   g_fFadeRange              c36      1
//   g_sample_bias             c37      1
//   g_shadow_light_direction  c38      1
//   camera_position           c39      1
//   g_screen_size             c40      1
//   g_vpos_texel_offset       c41      1
//   sun_direction             c42      1
//   sun_colour                c43      1
//   g_hdr_on                  c44      1
//   g_shroud_enabled          c45      1
//   g_campaign_world_bounds   c46      1
//   g_uv_offset               c47      1
//   g_refraction_depth        c48      1
//   s_environment             s0       1
//   sHardShadowBuffer         s1       1
//   s_ssao                    s2       1
//   gbuffer_channel_1_sampler s3       1
//   gbuffer_channel_2_sampler s4       1
//   gbuffer_channel_3_sampler s5       1
//   gbuffer_channel_4_sampler s6       1
//   s_shroud                  s7       1
//   s_overlay                 s8       1
//

    ps_3_0
    def c49, 1, 273, 0.00400000019, 360
    def c50, 0.5, -0.5, 8, -9.96578407
    def c51, 4.95061684, 0.346573591, 4.54688501, 1.41421354
    def c52, 0.140012279, 1.27323949, 1, 4
    def c53, -0.0123413419, 0.0123413419, 60, 2.5
    def c54, -0.0187292993, 0.0742610022, -0.212114394, 1.57072878
    def c55, 2, -1, -2, 1
    def c56, -2, 3.14159274, 0.99984771, 1.00015235
    def c57, 0.979900002, 0.0199999996, 1, 0.999000013
    def c58, -0.0174532924, 0.0174532924, 0.707106769, 100
    def c59, 0.0174532924, -9.99999975e-005, 10000, 1.44269502
    def c60, 0.00999999978, -1, 1.89999998, 0.0500000007
    def c61, 0, -1, -2, 3
    def c62, 1, 0, 2, 3
def c220, 0, 0, 0.0625, 0
dcl_2d s13
    dcl vPos.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
    add r0.xy, c41.x, vPos
    mul r0.xy, r0, c40.zwzw
    texldl r1, r0.xyyy, s3
    texldl r2, r0.xyyy, s4
    texldl r3, r0.xyyy, s5
    texldl r4, r0.xyyy, s6
    mul r2.xyz, r2, r2
    mad r1.xyz, r1, c55.x, c55.y
    nrm r5.xyz, r1
    mad r0.xy, r0, c55.xzzw, c55.ywzw
    mad r0.zw, r4.x, c62.xyxy, c62.xyyx
    dp4 r1.x, r0, c20
    dp4 r1.y, r0, c21
    dp4 r1.z, r0, c22
    dp4 r0.x, r0, c23
    rcp r0.x, r0.x
    mul r4.xyz, r0.x, r1
    mov r4.w, c55.w
	
	
	
	
    dp4 r6.x, r4, c16
    dp4 r6.y, r4, c17
    dp4 r0.y, r4, c19
    mov r7.xyz, c38
    mad r7.xyz, r7, -c37.x, r4
    add r8, r0.y, -c35
    cmp r8, r8, c62.x, c62.y
    dp4 r0.z, r8, r8
    add r0.w, r0.z, -c34.x
    add r8, r0.z, -c62.yxzw
    cmp r9, -r8_abs, c62.x, c62.y
    mov r10.y, c62.y
    cmp r11, -r8_abs.x, c0, r10.y
    cmp r12, -r8_abs.x, c1, r10.y
    cmp r13, -r8_abs.x, c2, r10.y
    cmp r14, -r8_abs.x, c3, r10.y
    cmp r11, -r8_abs.y, c4, r11
    cmp r12, -r8_abs.y, c5, r12
    cmp r13, -r8_abs.y, c6, r13
    cmp r14, -r8_abs.y, c7, r14
    cmp r11, -r8_abs.z, c8, r11
    cmp r12, -r8_abs.z, c9, r12
    cmp r13, -r8_abs.z, c10, r13
    cmp r14, -r8_abs.z, c11, r14
    cmp r11, -r8_abs.w, c12, r11
    cmp r12, -r8_abs.w, c13, r12
    cmp r13, -r8_abs.w, c14, r13
    cmp r8, -r8_abs.w, c15, r14
    mov r7.w, c55.w
	
mov r20, r7

dp4 r21.x, r20, c16
dp4 r21.y, r20, c17
dp4 r21.z, r20, c18
dp4 r21.w, r20, c19

texldl r24, c220.z, s13
add r24.y, r21.w, -r24.y
mul r24.x, r24.x, r24.y
add r21.x, r21.x, -r24.x

dp4 r20.x, r21, c20
dp4 r20.y, r21, c21
dp4 r20.z, r21, c22
dp4 r20.w, r21, c23

mov r7, r20

    dp4 r11.x, r7, r11
    dp4 r11.y, r7, r12
    dp4 r11.z, r7, r13
    dp4 r11.w, r7, r8
    texldp r8, r11, s1
    cmp r4.w, r0.w, c55.w, r8.x
    dp4 r5.w, c35, r9
    add r5.w, r5.w, -c36.x
    add r5.w, r0.y, -r5.w
    rcp r6.z, c36.x
    mul_sat r5.w, r5.w, r6.z
    add r0.w, r0.w, c55.w
    add r8.xyz, r0.z, c61
    cmp r9, -r8_abs.x, c4, r10.y
    cmp r11, -r8_abs.x, c5, r10.y
    cmp r12, -r8_abs.x, c6, r10.y
    cmp r13, -r8_abs.x, c7, r10.y
    cmp r9, -r8_abs.y, c8, r9
    cmp r11, -r8_abs.y, c9, r11
    cmp r12, -r8_abs.y, c10, r12
    cmp r13, -r8_abs.y, c11, r13
    cmp r9, -r8_abs.z, c12, r9
    cmp r11, -r8_abs.z, c13, r11
    cmp r12, -r8_abs.z, c14, r12
    cmp r8, -r8_abs.z, c15, r13
	
//NEED TO CHECK THAT CORRECTION MIGHT NEED TO GO HERE	
	
    dp4 r9.x, r7, r9
    dp4 r9.y, r7, r11
    dp4 r9.z, r7, r12
    dp4 r9.w, r7, r8
    texldp r7, r9, s1
    cmp r0.z, r0.w, c55.w, r7.x
    lrp r6.z, r5.w, r0.z, r4.w
    cmp r0.z, -r5.w, r4.w, r6.z
    mov r7.xyw, c55
    add r0.w, r7.y, c34.x
    frc r4.w, c34.x
    add r0.w, r0.w, -r4.w
    add r8, r0.w, -c62.yxzw
    cmp r8, -r8_abs, c62.x, c62.y
    dp4 r0.w, c35, r8
    add r4.w, r0.w, -c36.y
    add r0.w, r0.w, -r4.w
    add r4.w, r0.y, -r4.w
    rcp r0.w, r0.w
    mul_sat r0.w, r0.w, r4.w
    mad r4.w, r0.w, c61.z, c61.w
    mul r0.w, r0.w, r0.w
    mad_sat r0.z, r4.w, r0.w, r0.z
    rcp r0.y, r0.y
    mul r0.yw, r0.y, r6.xxzy
    mad r0.yw, r0, c50.xxzy, c50.x
    texld r6, r0.ywzw, s2
    mad r6.yzw, r1.xxyz, r0.x, -c39.xxyz
    nrm r8.xyz, r6.yzww
    add r0.y, -r1.w, c55.w
    dp3 r0.w, r8, r5
    add r0.w, r0.w, r0.w
    mad r9.xyz, r5, -r0.w, r8
    mov r11, c49
    cmp r6.yzw, -c44.x, r11.xxxy, r11.xzwx
    mul r9.w, r0.y, c50.z
    texldl r11, r9, s0
    mul r0.y, r1.w, r1.w
    mad r0.y, r0.y, c57.x, c57.y
    mad r0.y, r0.y, c50.x, c50.x
    mad r0.y, r0.y, c55.x, c55.y
    mad r0.yw, r0.y, -r0.y, c57.xzzw
    log r0.y, r0.y
    cmp r0.y, r0.w, r0.y, c50.w
    mul r0.w, r0.y, c51.x
    mad r0.y, r0.y, c51.y, c51.z
    mad r0.w, r0.y, r0.y, -r0.w
    rsq r0.w, r0.w
    rcp r0.w, r0.w
    add r0.y, -r0.y, r0.w
    max r1.w, r0.y, c62.y
    rsq r0.y, r1.w
    rcp r0.y, r0.y
    mul r0.y, r0.y, c51.w
    rcp r0.y, r0.y
    mul r0.w, r0.y, c59.x
    mad r0.y, r0.y, c59.x, c59.y
    rcp r0.w, r0.w
    cmp r0.y, r0.y, r0.w, c59.z
    mul r7.yz, r0.y, c53.xxyw
    mul r10.xz, r7.yyzw, r7.yyzw
    mad r12, r10.xxzz, c52.x, c52.yzyz
    rcp r0.w, r12.y
    mul r0.w, r0.w, r12.x
    mul r0.w, r0.w, -r10.x
    cmp r1.w, -r0.y, -c62.y, -c62.x
    mul r0.w, r0.w, c59.w
    exp r0.w, r0.w
    add r0.w, -r0.w, c55.w
    rsq r0.w, r0.w
    rcp r0.w, r0.w
    mad r0.w, r1.w, r0.w, c55.w
    mul r0.w, r0.w, c50.x
    rcp r1.w, r12.w
    mul r1.w, r1.w, r12.z
    mul r1.w, r1.w, -r10.z
    cmp r4.w, -r7.z, c62.y, c62.x
    mul r1.w, r1.w, c59.w
    exp r1.w, r1.w
    add r1.w, -r1.w, c55.w
    rsq r1.w, r1.w
    rcp r1.w, r1.w
    mad r1.w, r4.w, r1.w, c55.w
    mad r0.w, r1.w, c50.x, -r0.w
    dp3 r1.w, r9, r8
    add r4.w, -r1.w, -c59.y
    pow r5.w, r1.w, c53.z
    add r1.w, -r2.w, c55.w
    mul r5.w, r1.w, r5.w
    cmp r4.w, r4.w, c62.y, r5.w
    add r4.w, r2.w, r4.w
    lrp r5.w, r4.w, r0.w, r2.w
    max r0.w, r2.w, r5.w
    mul r10.xzw, r0.w, r11.xyyz
    mul r10.xzw, r3.xyyz, r10
    mul r10.xzw, r10, c53.w
    mul r11.xyz, r5, c52.zwzw
    nrm r12.xyz, r11
    mov r11.xyz, c28
    cmp r11.xyz, r12.x, r11, c29
    mov r13.xyz, c30
    cmp r13.xyz, r12.y, r13, c31
    mov r14.xyz, c32
    cmp r14.xyz, r12.z, r14, c33
    mul r12.xyz, r12, r12
    mul r13.xyz, r13, r12.y
    mad r11.xyz, r12.x, r11, r13
    mad r11.xyz, r12.z, r14, r11
    mul r11.xyz, r6.z, r11
    mul r11.xyz, r2, r11
    mul r11.xyz, r1.w, r11
    mad r10.xzw, r11.xyyz, r6.y, r10
    dp3 r0.w, r5, -c42
    dp3 r4.w, -c42, r9
    max r5.x, c55.y, r4.w
    min r4.w, r5.x, c55.w
    add r5.x, -r4_abs.w, c55.w
    rsq r5.x, r5.x
    rcp r5.x, r5.x
    mad r5.y, r4_abs.w, c54.x, c54.y
    mad r5.y, r5.y, r4_abs.w, c54.z
    mad r5.y, r5.y, r4_abs.w, c54.w
    mul r5.x, r5.x, r5.y
    mad r5.y, r5.x, c56.x, c56.y
    cmp r4.w, r4.w, c62.y, c62.x
    mad r4.w, r5.y, r4.w, r5.x
    add r5.x, r0.w, c56.z
    mul_sat r5.x, r5.x, c56.w
    add r5.yz, r4.w, c58.xxyw
    mul r5.yz, r0.y, r5
    mul r5.zw, r5.xyyz, c58.z
    mul r7.yz, r5.xzww, r5.xzww
    mad r9, r7.yyzz, c52.x, c52.yzyz
    rcp r0.y, r9.y
    mul r0.y, r0.y, r9.x
    mul r0.y, r0.y, -r7.y
    cmp r5.zw, -r5, c62.y, c62.x
    cmp r4.w, r5.y, -c62.y, -c62.x
    add r4.w, r4.w, r5.z
    mul r0.y, r0.y, c59.w
    exp r0.y, r0.y
    add r0.y, -r0.y, c55.w
    rsq r0.y, r0.y
    rcp r0.y, r0.y
    mad r0.y, r4.w, r0.y, c55.w
    mul r0.y, r0.y, c50.x
    rcp r4.w, r9.w
    mul r4.w, r4.w, r9.z
    mul r4.w, r4.w, -r7.z
    mul r4.w, r4.w, c59.w
    exp r4.w, r4.w
    add r4.w, -r4.w, c55.w
    rsq r4.w, r4.w
    rcp r4.w, r4.w
    mad r4.w, r5.w, r4.w, c55.w
    mad r0.y, r4.w, c50.x, -r0.y
    mul r0.y, r0.y, r5.x
    dp3 r4.w, -c42, r8
    add r5.x, -r4.w, -c59.y
    pow r5.y, r4.w, c53.z
    mul r1.w, r1.w, r5.y
    cmp r1.w, r5.x, c62.y, r1.w
    add r1.w, r1.w, r2.w
    mul r0.y, r0.y, r1.w
    cmp r1.w, -r2.w, c62.y, c62.x
    mul r0.y, r0.y, r1.w
    mul_sat r1.w, r6.w, r0.y
    mul r3.xyz, r3, r1.w
    max r1.w, r0.y, r2.w
    add r0.y, -r1.w, c55.w
    mul r2.xyz, r0.w, r2
    mul r2.xyz, r2, c43
    cmp r2.xyz, r0.w, r2, c62.y
    mul r2.xyz, r0.y, r2
    mul r2.xyz, r6.y, r2
    mad r2.xyz, r3, c43, r2
    mul r0.yzw, r0.z, r2.xxyz
    mad r0.yzw, r6.x, r10.xxzw, r0
    if_lt -r3.w, c62.y
      mad r2.xyz, r4.y, -c62.yxyw, r4
      mov r2.w, c55.w
      dp4 r3.x, r2, c24
      dp4 r3.y, r2, c25
      dp4 r1.w, r2, c27
      rcp r1.w, r1.w
      mul r2, r1.w, r3.xyyy
      mad r2, r2, c50.xyyy, c50.x
      texldl r2, r2, s8
      if_lt -c45.x, r10.y
        mad r1.xz, r1, r0.x, -c46.xyyw
        add r3.xy, -c46, c46.zwzw
        rcp r5.x, r3.x
        rcp r5.y, r3.y
        mul r1.xz, r1, r5.xyyw
        mad r3.xy, c47, -r7.x, r7.w
        mad r3, r1.xzzz, r3.xyyy, c47.xyyy
        texldl r5, r3, s7
        add r3, r3.xxww, c60.xyxy
        mul_sat r3, r3, c58.w
        mad r6, r3, c61.z, c61.w
        mul r3, r3, r3
        mul r3, r3, r6
        mul r1.x, r5.w, r3.x
        mul r1.x, r1.x, r3.z
        mad r1.x, r3.y, -r1.x, r1.x
        mad r1.x, r3.w, -r1.x, r1.x
      else
        mov r1.x, c55.w
      endif
      add_sat r1.x, r1.x, c50.y
      mad r1.x, r1.x, c60.z, c60.w
      mul r3.xyz, r0.yzww, r2.w
      mad r1.xzw, r2.xyyz, r1.x, r3.xyyz
      cmp r1.xzw, r4.y, r1, r0.yyzw
      mov_sat oC0.xyz, r1.xzww
    else
      mov_sat oC0.xyz, r0.yzww
    endif
    mad r0.x, r1.y, -r0.x, c55.x
    mul_sat r0.y, -r4.y, c48.x
    cmp_sat oC0.w, r0.x, r0.y, c55.w

// approximately 314 instruction slots used (17 texture, 297 arithmetic)
 