//
// 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, -0.212114394, 1.57072878, -2, 3.14159274
    def c50, 0.5, -0.5, 8, 60
    def c51, 1, 273, 0.00400000019, 360
    def c52, 1, 4, -0.0187292993, 0.0742610022
    def c53, -9.96578407, 4.95061684, 0.346573591, 4.54688501
    def c54, 1.41421354, 0.0174532924, -9.99999975e-005, -0.0174532924
    def c55, 0.140012279, 1.27323949, 1, -0.00999999978
    def c56, 10000, 0.707106769, 1.44269502, 100
    def c57, 0.25, 0.5, 6.28318548, -3.14159274
    def c58, 0, -1, -2, 3
    def c59, 2, -1, -2, 1
    def c60, 1.89999998, 0.0500000007, 0, 0
    def c61, -9.99999975e-005, 0.995899975, 1, 0.999000013
    def c62, 1, 0, 2, 3
def c220, 1, 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, c59.x, c59.y
    nrm r5.xyz, r1
    mad r0.xy, r0, c59.xzzw, c59.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, c59.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, c59.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, c59.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, c59.w
    add r8.xyz, r0.z, c58
    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
    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, c59.w, r7.x
    lrp r6.z, r5.w, r0.z, r4.w
    cmp r0.z, -r5.w, r4.w, r6.z
    mov r7.xyw, c59
    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, c58.z, c58.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, c59.w
    dp3 r0.w, r8, r5
    add r0.w, r0.w, r0.w
    mad r9.xyz, r5, -r0.w, r8
    mov r11, c51
    cmp r6.yzw, -c44.x, r11.xxxy, r11.xzwx
    mul r9.w, r0.y, c50.z
    texldl r11, r9, s0
    dp3 r0.w, r9, r8
    max r4.w, r0.w, c62.y
    pow r0.w, r4.w, c50.w
    mad r0.y, r0.y, c57.x, c57.y
    frc r0.y, r0.y
    mad r0.y, r0.y, c57.z, c57.w
    sincos r12.xy, r0.y
    mul r0.y, r0.w, r12.x
    add r0.w, -r2.w, c59.w
    lrp r4.w, r0.y, c59.w, r2.w
    mul r10.xzw, r4.w, r11.xyyz
    mul r10.xzw, r3.xyyz, r10
    mul r11.xyz, r5, c52.xyxw
    nrm r13.xyz, r11
    mov r11.xyz, c28
    cmp r11.xyz, r13.x, r11, c29
    mov r14.xyz, c30
    cmp r14.xyz, r13.y, r14, c31
    mov r15.xyz, c32
    cmp r15.xyz, r13.z, r15, c33
    mul r13.xyz, r13, r13
    mul r14.xyz, r14, r13.y
    mad r11.xyz, r13.x, r11, r14
    mad r11.xyz, r13.z, r15, r11
    mul r11.xyz, r6.z, r11
    mul r11.xyz, r2, r11
    mul r11.xyz, r0.w, r11
    mad r10.xzw, r11.xyyz, r6.y, r10
    dp3 r0.y, r5, -c42
    max r4.w, r0.y, c62.y
    if_ge -r0.y, c62.y
      mov r5.xyz, c62.y
    else
      dp3 r0.y, -c42, r9
      max r5.w, c59.y, r0.y
      min r0.y, r5.w, c59.w
      add r0.w, -r0_abs.y, c59.w
      rsq r0.w, r0.w
      rcp r0.w, r0.w
      mad r5.w, r0_abs.y, c52.z, c52.w
      mad r5.w, r5.w, r0_abs.y, c49.x
      mad r5.w, r5.w, r0_abs.y, c49.y
      mul r0.w, r0.w, r5.w
      mad r5.w, r0.w, c49.z, c49.w
      cmp r0.y, r0.y, c62.y, c62.x
      mad r0.y, r5.w, r0.y, r0.w
      mul r0.w, r1.w, r1.w
      mov r9.x, c44.x
      cmp r1.w, -r9.x, c61.x, c61.y
      mad r0.w, r0.w, r1.w, r6.y
      mad r0.w, r0.w, c50.x, c50.x
      mad r0.w, r0.w, c59.x, c59.y
      mad r7.yz, r0.w, -r0.w, c61.xzww
      log r1.w, r7.y
      cmp r1.w, r7.z, r1.w, c53.x
      mul r5.w, r1.w, c53.y
      mad r1.w, r1.w, c53.z, c53.w
      cmp r6.z, -r0.w, c62.y, c62.x
      cmp r0.w, r0.w, -c62.y, -c62.x
      add r0.w, r0.w, r6.z
      mad r5.w, r1.w, r1.w, -r5.w
      rsq r5.w, r5.w
      rcp r5.w, r5.w
      add r1.w, -r1.w, r5.w
      max r5.w, r1.w, c62.y
      rsq r1.w, r5.w
      rcp r1.w, r1.w
      mul r0.w, r0.w, r1.w
      mul r0.w, r0.w, c54.x
      rcp r0.w, r0.w
      mul r1.w, r0.w, c54.y
      mad r0.w, r0.w, c54.y, c54.z
      add r7.yz, r0.y, c54.xwyw
      rcp r0.y, r1.w
      cmp r0.y, r0.w, r0.y, c56.x
      mul r0.yw, r0.y, r7.xyzz
      mul r7.yz, r0.xyww, c56.y
      mul r9.xy, r7.yzzw, r7.yzzw
      mad r11, r9.xxyy, c55.x, c55.yzyz
      rcp r0.w, r11.y
      mul r0.w, r0.w, r11.x
      mul r0.w, r0.w, -r9.x
      cmp r7.yz, -r7, c62.y, c62.x
      cmp r0.y, r0.y, -c62.y, -c62.x
      add r0.y, r0.y, r7.y
      mul r0.w, r0.w, c56.z
      exp r0.w, r0.w
      add r0.w, -r0.w, c59.w
      rsq r0.w, r0.w
      rcp r0.w, r0.w
      mad r0.y, r0.y, r0.w, c59.w
      mul r0.y, r0.y, c50.x
      rcp r0.w, r11.w
      mul r0.w, r0.w, r11.z
      mul r0.w, r0.w, -r9.y
      mul r0.w, r0.w, c56.z
      exp r0.w, r0.w
      add r0.w, -r0.w, c59.w
      rsq r0.w, r0.w
      rcp r0.w, r0.w
      mad r0.w, r7.z, r0.w, c59.w
      mad r0.y, r0.w, c50.x, -r0.y
      mov_sat r0.w, r4.w
      add r0.w, r0.w, c59.y
      mad r0.w, r12.y, r0.w, c59.w
      dp3 r1.w, -c42, r8
      max r5.w, r1.w, c62.y
      pow r1.w, r5.w, c50.w
      mul r1.w, r12.x, r1.w
      lrp r5.w, r1.w, c59.w, r2.w
      mul r0.y, r0.w, r0.y
      mul r5.xyz, r5.w, r0.y
    endif
    mul_sat r8.xyz, r6.w, r5
    mul r3.xyz, r3, r8
    max r8.xyz, r5, r2.w
    add r5.xyz, -r8, c59.w
    mul r2.xyz, r2, r4.w
    mul r2.xyz, r2, c43
    mul r2.xyz, r5, 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
	
//This part fixes the roads and rivers in campaign map
//Adjust r4 here and not r2, because r2 is adjusted from r4 before transforming
mov r20.xyz, r4.xyz
mov r20.w, c220.x

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 r4.xyz, r20.xyz

      mad r2.xyz, r4.y, -c62.yxyw, r4
      mov r2.w, c59.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, -c55.wzwz
        mul_sat r3, r3, c56.w
        mad r6, r3, c58.z, c58.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, c59.w
      endif
      add_sat r1.x, r1.x, c50.y
      mad r1.x, r1.x, c60.x, c60.y
      mul r3.xyz, r0.yzww, r2.w
      mad r1.xzw, r2.xyyz, r1.x, r3.xyyz
      cmp oC0.xyz, r4.y, r1.xzww, r0.yzww
    else
      mov oC0.xyz, r0.yzww
    endif
    mad r0.x, r1.y, -r0.x, c59.x
    mul_sat r0.y, -r4.y, c48.x
    cmp oC0.w, r0.x, r0.y, c59.w

// approximately 305 instruction slots used (17 texture, 288 arithmetic)
 