//
// 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_fog_clear_distance;
//   float g_fog_colour_blend;
//   float g_fog_distance_scale;
//   float g_fog_distance_start;
//   float g_fog_distance_strength;
//   float g_fog_height_bottom;
//   float g_fog_height_strength;
//   float g_fog_height_top;
//   float g_hdr_on;
//   float g_iSplitCount;
//   float g_sample_bias;
//   float3 g_shadow_light_direction;
//   float g_shroud_enabled;
//   float2 g_uv_offset;
//   float4 g_vSplitDepth;
//   float3 g_volume_fog_colour;
//   float4 g_wp_normal_scales;
//   float2 g_wp_world_size;
//   sampler2D sHardShadowBuffer;
//   samplerCUBE s_environment;
//   sampler2D s_lf_colour;
//   sampler2D s_normal;
//   sampler2D s_overlay;
//   sampler2D s_shroud;
//   samplerCUBE s_sky;
//   float3 sun_colour;
//   float3 sun_direction;
//   float time_in_sec;
//   float4x4 view_projection;
//
//
// Registers:
//
//   Name                     Reg   Size
//   ------------------------ ----- ----
//   g_amHardSplit            c0      16
//   view_projection          c16      4
//   ambient_cube_lr          c20      2
//   ambient_cube_tb          c22      2
//   ambient_cube_fb          c24      2
//   camera_position          c26      1
//   time_in_sec              c27      1
//   g_iSplitCount            c28      1
//   g_vSplitDepth            c29      1
//   g_fFadeRange             c30      1
//   g_sample_bias            c31      1
//   g_shadow_light_direction c32      1
//   sun_direction            c33      1
//   sun_colour               c34      1
//   g_hdr_on                 c35      1
//   g_volume_fog_colour      c36      1
//   g_fog_distance_start     c37      1
//   g_fog_distance_strength  c38      1
//   g_fog_distance_scale     c39      1
//   g_fog_height_bottom      c40      1
//   g_fog_height_top         c41      1
//   g_fog_height_strength    c42      1
//   g_fog_colour_blend       c43      1
//   g_fog_clear_distance     c44      1
//   g_shroud_enabled         c45      1
//   g_campaign_world_bounds  c46      1
//   g_uv_offset              c47      1
//   g_wp_normal_scales       c48      1
//   g_wp_world_size          c49      1
//   s_sky                    s0       1
//   s_environment            s1       1
//   sHardShadowBuffer        s2       1
//   s_shroud                 s3       1
//   s_normal                 s4       1
//   s_overlay                s5       1
//   s_lf_colour              s6       1
//

    ps_3_0
    def c50, -0, -1, -2, -3
    def c51, -2, 3, 0.5, 3.20000005
    def c52, 250, 125, 7, 2.5
    def c53, 2, -1, 0, 0.100000001
    def c54, 2.20000005, -2.4000001, 6, 0.400000006
    def c55, 1, 273, 0.00400000019, 360
    def c56, 1, 4, 0.899999976, -0.212114394
    def c57, -0.0187292993, 0.0742610022, 1.57072878, -9.96578407
    def c58, -2, 3.14159274, -4.22500016e-005, 0.420767754
    def c59, 8, -4, 1000, 0.00100000005
    def c60, 0.346573591, 4.54688501, 0.0174532924, -9.99999975e-005
    def c61, 1, 0.999000013, 4.95061684, 1.41421354
    def c62, -0.0174532924, 0.0174532924, 10000, 0.707106769
    def c63, 0.140012279, 1.27323949, 1, 1.44269502
    def c64, 0.522498548, 1, 0.25, -0.00999999978
    def c65, 100, -0.100000001, -0.5, 0.200000003
    def c66, 1.5, 0.0090909088, 0.300000012, 0
    def c67, 2.79999995, 60, 0.767376125, 0.100000001
    def c68, 0.000349999988, 0.00499999989, 0.00800000038, 0.00159999996
    def c69, 1, 0, -0, 2
    def c70, 2, 1, -1, -0
    def c71, -2, 2, 1, -1
    def c72, 0.5, -0.5, 0, 0
def c220, 0, 0, 0.0625, 0
dcl_2d s13
    dcl_texcoord3 v0.xyz
    dcl_texcoord4 v1.xyw
    dcl_cube s0
    dcl_cube s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4
    dcl_2d s5
    dcl_2d s6
    mad r0, v0.xyzx, c69.xxxy, c69.zzzx
    dp4 r0.x, r0, c19
    mov r1.xyz, c32
    mad r1.xyz, r1, -c31.x, v0
    add r2, r0.x, -c29
    cmp r2, r2, c69.x, c69.y
    dp4 r0.y, r2, r2
    add r0.z, r0.y, -c28.x
    add r2, r0.y, c50
    cmp r3, -r2_abs, c69.x, c69.y
    mov r4.xyw, c69
    cmp r5, -r2_abs.x, c0, r4.y
    cmp r6, -r2_abs.x, c1, r4.y
    cmp r7, -r2_abs.x, c2, r4.y
    cmp r8, -r2_abs.x, c3, r4.y
    cmp r5, -r2_abs.y, c4, r5
    cmp r6, -r2_abs.y, c5, r6
    cmp r7, -r2_abs.y, c6, r7
    cmp r8, -r2_abs.y, c7, r8
    cmp r5, -r2_abs.z, c8, r5
    cmp r6, -r2_abs.z, c9, r6
    cmp r7, -r2_abs.z, c10, r7
    cmp r8, -r2_abs.z, c11, r8
    cmp r5, -r2_abs.w, c12, r5
    cmp r6, -r2_abs.w, c13, r6
    cmp r7, -r2_abs.w, c14, r7
    cmp r2, -r2_abs.w, c15, r8
    mov r1.w, c69.x
	
mov r20, r1

dp4 r21.x, r20, c204
dp4 r21.y, r20, c205
dp4 r21.z, r20, c206
dp4 r21.w, r20, c207

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, c200
dp4 r20.y, r21, c201
dp4 r20.z, r21, c202
dp4 r20.w, r21, c203

mov r1, r20

    dp4 r5.x, r1, r5
    dp4 r5.y, r1, r6
    dp4 r5.z, r1, r7
    dp4 r5.w, r1, r2
    texldp r2, r5, s2
    cmp r0.w, r0.z, c69.x, r2.x
    dp4 r2.x, c29, r3
    add r2.x, r2.x, -c30.x
    add r2.x, r0.x, -r2.x
    rcp r2.y, c30.x
    mul_sat r2.x, r2.y, r2.x
    add r0.z, r0.z, c69.x
    add r2.yzw, r0.y, -c69.xzxw
    cmp r3, -r2_abs.y, c4, r4.y
    cmp r5, -r2_abs.y, c5, r4.y
    cmp r6, -r2_abs.y, c6, r4.y
    cmp r7, -r2_abs.y, c7, r4.y
    cmp r3, -r2_abs.z, c8, r3
    cmp r5, -r2_abs.z, c9, r5
    cmp r6, -r2_abs.z, c10, r6
    cmp r7, -r2_abs.z, c11, r7
    cmp r3, -r2_abs.w, c12, r3
    cmp r5, -r2_abs.w, c13, r5
    cmp r6, -r2_abs.w, c14, r6
    cmp r7, -r2_abs.w, c15, r7
    dp4 r3.x, r1, r3
    dp4 r3.y, r1, r5
    dp4 r3.z, r1, r6
    dp4 r3.w, r1, r7
    texldp r1, r3, s2
    cmp r0.y, r0.z, c69.x, r1.x
    lrp r1.x, r2.x, r0.y, r0.w
    cmp r0.y, -r2.x, r0.w, r1.x
    add r0.z, -r4.x, c28.x
    frc r0.w, c28.x
    add r0.z, r0.z, -r0.w
    add r1, r0.z, c50
    cmp r1, -r1_abs, c69.x, c69.y
    dp4 r0.z, c29, r1
    add r0.w, r0.z, -c30.y
    add r0.xz, -r0.w, r0
    rcp r0.z, r0.z
    mul_sat r0.x, r0.z, r0.x
    mad r0.z, r0.x, c51.x, c51.y
    mul r0.x, r0.x, r0.x
    mad_sat r0.x, r0.z, r0.x, r0.y
    rcp r0.y, c48.x
    mov r1.x, c27.x
    mul r1, r1.x, c68
    mad r0.yz, v0.xxzw, r0.y, r1.xxyw
    texld r2, r0.yzzw, s4
    rcp r0.y, c48.y
    mad r0.yz, v0.xxzw, r0.y, -r1.xzww
    texld r1, r0.yzzw, s4
    mad r0.yzw, r2.xxzy, c70.xxyx, c70.xzwz
    mad r0.yzw, r0, c51.z, c51.z
    mad r1.xyz, r1.xzyw, c70.xyxw, c70.zwzw
    mad r1.xyz, r1, c51.z, c51.z
    mad r0.yzw, r0, c53.x, c53.xyzy
    mad r1.xyz, r1, c71.xyxw, c71.zwzw
    dp3 r1.w, r0.yzww, r1
    mul r1.xyz, r0.z, r1
    mad r0.yzw, r0, r1.w, -r1.xxyz
    dp3 r1.x, r0.yzww, r0.yzww
    rsq r1.x, r1.x
    mul r1.yzw, r0, r1.x
    add r2.xyz, -c26, v0
    dp3 r3.x, r2, r2
    rsq r3.x, r3.x
    mul r3.yzw, r2.xxyz, r3.x
    dp3 r4.z, r3.yzww, r1.yzww
    add r4.z, r4.z, r4.z
    mad r5.xyz, r1.yzww, -r4.z, r3.yzww
    abs r5.w, r5.y
    texld r5, r5.xwzw, s1
    mul r1.yzw, r0.x, r5.xxyz
    mul r5.xyz, r1.yzww, c51.z
    rcp r4.z, c49.x
    rcp r5.w, c49.y
    mul r6.x, r4.z, v0.x
    mad r6.z, v0.z, -r5.w, c69.x
    texld r6, r6.xzzw, s6
    pow r4.z, r6.w, c51.w
    mul r7.xy, r4.z, c52
    mad r0.yzw, r0, r1.x, r7.y
    pow r1.x, r0.z, c53.w
    add r1.x, -r1.x, c69.x
    mul r5.w, r1.x, c52.z
    cmp r1.x, r1.x, r5.w, c69.y
    pow r5.w, r1.x, c52.w
    log r8.x, r6.x
    log r8.y, r6.y
    log r8.z, r6.z
    mul r6.xyz, r8, c54.x
    exp r8.x, r6.x
    exp r8.y, r6.y
    exp r8.z, r6.z
    mul r1.x, r7.x, r5.w
    mul r1.x, r1.x, c54.y
    mad r1.x, r5.w, c54.z, r1.x
    add r6.xyz, r1.x, r8
    mad r6.xyz, r4.z, c52.x, r6
    nrm r7.xyz, r0.yzww
    mov r0.w, c54.w
    mul r0.yzw, r0.w, c34.xxyz
    dp3 r1.x, r3.yzww, r7
    add r1.x, r1.x, r1.x
    mad r8.xyz, r7, -r1.x, r3.yzww
    mov r9, c55
    cmp r9.xyz, -c35.x, r9.xxyw, r9.zwxw
    mov r8.w, c67.x
    texldl r10, r8, s1
    dp3 r1.x, r8, r3.yzww
    max r4.z, r1.x, c69.y
    pow r1.x, r4.z, c67.y
    mad r1.x, r1.x, c67.z, c67.w
    mul r10.xyz, r1.x, r10
    mul r11.xyz, r7, c56.xyxw
    nrm r12.xyz, r11
    mov r11.xyz, c20
    cmp r11.xyz, r12.x, r11, c21
    mov r13.xyz, c22
    cmp r13.xyz, r12.y, r13, c23
    mov r14.xyz, c24
    cmp r14.xyz, r12.z, r14, c25
    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, r9.y, r11
    mul r11.xyz, r6, r11
    mul r11.xyz, r9.x, r11
    mad r10.xyz, r11, c56.z, r10
    dp3 r1.x, r7, -c33
    max r4.z, r1.x, c69.y
    if_ge -r1.x, c69.y
      mov r7.xyz, c69.y
    else
      dp3 r1.x, -c33, r8
      max r5.w, -c69.x, r1.x
      min r1.x, r5.w, c69.x
      add r5.w, -r1_abs.x, c69.x
      rsq r5.w, r5.w
      rcp r5.w, r5.w
      mad r6.w, r1_abs.x, c57.x, c57.y
      mad r6.w, r6.w, r1_abs.x, c56.w
      mad r6.w, r6.w, r1_abs.x, c57.z
      mul r5.w, r5.w, r6.w
      mad r6.w, r5.w, c58.x, c58.y
      cmp r1.x, r1.x, c69.y, c69.x
      mad r1.x, r6.w, r1.x, r5.w
      mov r8.x, c35.x
      cmp r5.w, -r8.x, c58.z, c58.w
      add r5.w, r5.w, r9.x
      mad r5.w, r5.w, c51.z, c51.z
      mad r5.w, r5.w, c70.x, c70.z
      mad r8.xy, r5.w, -r5.w, c61
      log r5.w, r8.x
      cmp r5.w, r8.y, r5.w, c57.w
      mul r6.w, r5.w, c61.z
      mad r5.w, r5.w, c60.x, c60.y
      mad r6.w, r5.w, r5.w, -r6.w
      rsq r6.w, r6.w
      rcp r6.w, r6.w
      add r5.w, -r5.w, r6.w
      max r6.w, r5.w, c69.y
      rsq r5.w, r6.w
      rcp r5.w, r5.w
      mul r5.w, r5.w, c61.w
      rcp r5.w, r5.w
      mul r6.w, r5.w, c60.z
      mad r5.w, r5.w, c60.z, c60.w
      add r8.xy, r1.x, c62
      rcp r1.x, r6.w
      cmp r1.x, r5.w, r1.x, c62.z
      mul r8.xy, r1.x, r8
      mul r8.yz, r8.xxyw, c62.w
      mul r9.yw, r8.xyzz, r8.xyzz
      mad r11, r9.yyww, c63.x, c63.yzyz
      rcp r1.x, r11.y
      mul r1.x, r1.x, r11.x
      mul r1.x, r1.x, -r9.y
      cmp r8.yz, -r8, c69.y, c69.x
      cmp r5.w, r8.x, -c69.y, -c69.x
      add r5.w, r5.w, r8.y
      mul r1.x, r1.x, c63.w
      exp r1.x, r1.x
      add r1.x, -r1.x, c69.x
      rsq r1.x, r1.x
      rcp r1.x, r1.x
      mad r1.x, r5.w, r1.x, c69.x
      mul r1.x, r1.x, c51.z
      rcp r5.w, r11.w
      mul r5.w, r5.w, r11.z
      mul r5.w, r5.w, -r9.w
      mul r5.w, r5.w, c63.w
      exp r5.w, r5.w
      add r5.w, -r5.w, c69.x
      rsq r5.w, r5.w
      rcp r5.w, r5.w
      mad r5.w, r8.z, r5.w, c69.x
      mad r1.x, r5.w, c51.z, -r1.x
      mov_sat r5.w, r4.z
      add r5.w, r5.w, -c69.x
      mad r5.w, r5.w, c64.x, c64.y
      dp3 r3.y, -c33, r3.yzww
      max r6.w, r3.y, c69.y
      pow r3.y, r6.w, c67.y
      mad r3.y, r3.y, c67.z, c67.w
      mul r1.x, r1.x, r5.w
      mul r7.xyz, r3.y, r1.x
    endif
    mul_sat r3.yzw, r9.z, r7.xxyz
    add r8.xyz, r7, -c53.w
    add r7.xyz, -r7, c69.x
    cmp r7.xyz, r8, r7, c56.z
    mul r6.xyz, r4.z, r6
    mul r6.xyz, r0.yzww, r6
    mul r6.xyz, r7, r6
    mul r6.xyz, r9.x, r6
    mad r0.yzw, r3, r0, r6.xxyz
    add r0.yzw, r0, r10.xxyz
    add_sat r0.x, r0.x, c64.z
    mul r3.yzw, r0.x, r0
    if_lt -c45.x, r4.y
      add r6.xy, -c46, v0.xzzw
      add r6.zw, -c46.xyxy, c46
      rcp r7.x, r6.z
      rcp r7.y, r6.w
      mul r6.xy, r6, r7
      mad r4.zw, c47.xyxy, -r4.w, r4.x
      mad r6, r6.xyyy, r4.zwww, c47.xyyy
      texldl r7, r6, s3
      add r6, r6.xxww, -c64.wywy
      mul_sat r6, r6, c65.x
      mad r8, r6, c51.x, c51.y
      mul r6, r6, r6
      mul r6, r6, r8
      mul r1.x, r7.w, r6.x
      mul r1.x, r1.x, r6.z
      mad r1.x, r6.y, -r1.x, r1.x
      mad r1.x, r6.w, -r1.x, r1.x
    else
      mov r1.x, c69.x
    endif
    add r4.zw, r1.x, c65.xyyz
    mul_sat r1.x, r4.z, c52.w
    mad r4.z, r1.x, c51.x, c51.y
    mul r1.x, r1.x, r1.x
    mul r1.x, r1.x, r4.z
    add_sat r4.z, r4.w, r4.w
    mad r4.w, r4.z, c51.x, c51.y
    mul r4.z, r4.z, r4.z
    mul_sat r4.z, r4.z, r4.w
    mul r1.x, r1.x, c65.w
    mul r3.yzw, r1.x, r3
    mad r0.xyz, r0.yzww, r0.x, -r3.yzww
    mad r0.xyz, r4.z, r0, r3.yzww
    mul r3.yzw, r1.x, r5.xxyz
    mad r1.xyz, r1.yzww, c51.z, -r3.yzww
    mad r1.xyz, r4.z, r1, r3.yzww
    rcp r0.w, r3.x
    add r1.w, r4.x, -c37.x
    mad r1.w, r1.w, c59.x, c59.y
    add r3.x, r4.x, -c38.x
    mul r3.x, r3.x, c59.z
    rcp r3.x, r3.x
    mad r1.w, r0.w, r3.x, r1.w
    mul r1.w, r1.w, c63.w
    exp r1.w, r1.w
    rcp r1.w, r1.w
    mad_sat r1.w, c39.x, -r1.w, c39.x
    add r3.x, c41.x, -v0.y
    mov r4.x, c41.x
    add r3.y, r4.x, -c40.x
    add r3.x, r3.x, -c40.x
    rcp r3.y, r3.y
    mul_sat r3.x, r3.y, r3.x
    mad r3.y, r3.x, c51.x, c51.y
    mul r3.x, r3.x, r3.x
    mul r3.x, r3.x, r3.y
    mov r3.w, c59.w
    add r3.y, r3.w, -c44.x
    rcp r3.z, c44.x
    cmp r3.y, r3.y, c59.z, r3.z
    mul_sat r0.w, r0.w, r3.y
    mad r3.y, r0.w, c51.x, c51.y
    mul r0.w, r0.w, r0.w
    mul r0.w, r0.w, r3.y
    mov r5.xyz, c34
    mul r3.yzw, r5.xxyz, c36.xxyz
    mul r3.yzw, r3, c66.x
    abs r4.x, c33.y
    mul r3.yzw, r3, r4.x
    mul r4.xzw, r9.x, r3.yyzw
    max r2.w, r2.y, c69.y
    texld r5, r2.xwzw, s0
    dp2add_sat r2.y, r1.w, c43.x, r4.y
    mad r3.yzw, r3, -r9.x, r5.xxyz
    mad r3.yzw, r2.y, r3, r4.xxzw
    mad r1.w, c42.x, r3.x, r1.w
    mul_sat r0.w, r0.w, r1.w
    lrp r4.xyz, r0.w, r3.yzww, r0
    dp2add r0.x, r2.xzzw, r2.xzzw, c69.y
    rsq r0.x, r0.x
    rcp r0.x, r0.x
    mul_sat r0.x, r0.x, c66.y
    add r0.x, -r0.x, c69.x
    mul r0.xyz, r0.x, r1
    mad r0.xyz, r0, c66.z, r4
    rcp r0.w, v1.w
    mul r1, r0.w, v1.xyyy
    mad r1, r1, c72.xyyy, c72.x
    texldl r1, r1, s5
    mad oC0.xyz, r0, r1.w, r1
    mov oC0.w, c69.x

// approximately 367 instruction slots used (13 texture, 354 arithmetic)
 