//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Parameters:
//
//   float4x4 View;
//   float cameraFar;
//   float cameraFarMinusNear;
//   float cameraNearFar;
//   sampler2D g_GBufferDepth;
//   sampler2D g_GBufferNormal;
//   float g_RenderRatio;
//   float4 g_SSAOSettings;
//   float4 g_Screensize;
//   float4 g_screenXYProjFactor;
//
//
// Registers:
//
//   Name                 Reg   Size
//   -------------------- ----- ----
//   View                 c0       3
//   cameraFar            c3       1
//   cameraNearFar        c4       1
//   cameraFarMinusNear   c5       1
//   g_RenderRatio        c6       1
//   g_screenXYProjFactor c7       1
//   g_SSAOSettings       c8       1
//   g_Screensize         c9       1
//   g_GBufferDepth       s0       1
//   g_GBufferNormal      s1       1
//

    ps_3_0
    def c10, 4, 0, -4, 0.125
    def c11, 0, 1, -1, 0.5
    def c12, 2, 0, -2, -1
    def c13, -8, 8, -12, 12
    def c14, -24, 24, 0, 0
    def c15, 12, 0, -12, 0
    def c16, 6, 0, -6, 0
    dcl_texcoord_pp v0.xy  // IN<4,5>
    dcl_2d s0
    dcl_2d s1

#line 707 "pp_final.cgfx"
    mov r0.zw, c9  // ::g_Screensize<2,3>
    mad r1, r0.zwzw, c16.xyzy, v0.xyxy  // ::texcoords<0,1,2,3>

#line 479
    mul r2, r1, c6.x

#line 493
    mad r1, r1, c12.x, c12.w

#line 478
    texld r3, r2, s0  // getDepth::depthSample<0>
    texld r2, r2.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r3.y, r2.x

#line 707 "pp_final.cgfx"
    mad r2, r0.zwzw, c16.yxyz, v0.xyxy  // ::texcoords<4,5,6,7>

#line 481
    mul r4, r2, c6.x

#line 495
    mad r2, r2, c12.x, c12.w

#line 480
    texld r5, r4, s0  // getDepth::depthSample<0>
    texld r4, r4.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r3.w, r4.x
    mov r3.z, r5.x
    mov r0.x, c5.x  // ::cameraFarMinusNear<0>
    mad r3, r3, r0.x, -c3.x
    rcp r4.x, r3.x
    rcp r4.y, r3.y
    rcp r4.z, r3.z
    rcp r4.w, r3.w
    mul r3, r4.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r4.z, r3.y

#line 461
    mov r5.xyz, c11
    mad r5, c7.yyxx, r5.xyyx, r5.yxxz

#line 493
    mul r1, r1, r5.xyxy  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r1, r5.zwzw, r1
    mul r4.xy, -r3.y, r1.zwzw  // getPosition4SSAO::viewPos1<0,1>
    mul r1.xy, -r3.x, r1  // getPosition4SSAO::viewPos0<0,1>

#line 526
    mul r6.xy, c6.x, v0

#line 452
    texld r7, r6, s0  // getDepth::depthSample<0>

#line 526
    texld_pp r6, r6, s1  // ::n<0,1,2,3>

#line 233 "incCommon.cgfx"
    mad r0.y, r7.x, r0.x, -c3.x
    rcp r0.y, r0.y
    mul r7.z, r0.y, c4.x  // ::viewSpaceZ<0>

#line 458 "pp_final.cgfx"
    mad r8.xy, v0, c12.x, c12.w
    mul r8.xy, r5, r8  // ::screenXY<0>

#line 461
    mul r8.xy, r5.zwzw, r8
    mul r7.xy, -r7.z, r8  // ::viewPos<0,1>

#line 511
    add_pp r4.xyz, r4, -r7  // ::diff<0,1,2>
    dp3_pp r0.y, r4, r4
    mov r1.w, c12.w
    mad_pp r4.w, r0.y, c8.x, -r1.w
    rsq r0.y, r0.y
    mul_pp r4.xyz, r0.y, r4  // ::v<0,1,2>
    rcp_pp r0.y, r4.w

#line 531
    mad_pp r6.xyz, r6, c12.x, c12.w
    nrm_pp r8.xyz, r6  // ::worldNorm<0,1,2>

#line 534
    mul r6.xyz, r8.y, c1
    mad r6.xyz, c0, r8.x, r6
    mad_pp r6.xyz, c2, r8.z, r6  // ::viewNorm<0,1,2>

#line 515
    dp3_pp r4.x, r6, r4
    add_pp r4.x, r4.x, -c8.y
    max_pp r7.w, r4.x, c12.y
    mul_pp r0.y, r0.y, r7.w
    mul_pp r0.y, r0.y, c8.z  // ::doAmbientOcclusion<0>

#line 511
    mov r1.z, r3.x
    add_pp r1.xyz, r1, -r7  // ::diff<0,1,2>
    dp3_pp r4.x, r1, r1
    mad_pp r4.y, r4.x, c8.x, -r1.w
    rsq r4.x, r4.x
    mul_pp r1.xyz, r1, r4.x  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r4.x, r1.x, c12.y
    rcp_pp r1.x, r4.y
    mul_pp r1.x, r1.x, r4.x

#line 562
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 511
    mov r1.z, r3.w

#line 495
    mul r2, r2, r5.xyxy  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r2, r5.zwzw, r2
    mul r1.xy, -r3.w, r2  // getPosition4SSAO::viewPos2<0,1>
    mul r3.xy, -r3.z, r2.zwzw  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r2.xyz, -r7, r3  // ::diff<0,1,2>
    add_pp r1.xyz, -r7, r1  // ::diff<0,1,2>
    dp3_pp r2.w, r1, r1
    mad_pp r3.x, r2.w, c8.x, -r1.w
    rsq r2.w, r2.w
    mul_pp r1.xyz, r1, r2.w  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.w, r1.x, c12.y
    rcp_pp r1.x, r3.x
    mul_pp r1.x, r1.x, r2.w

#line 562
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 513
    dp3_pp r1.x, r2, r2
    mad_pp r1.y, r1.x, c8.x, -r1.w
    rsq r1.x, r1.x
    mul_pp r2.xyz, r1.x, r2  // ::v<0,1,2>
    dp3_pp r1.x, r6, r2
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.x, r1.x, c12.y
    rcp_pp r1.x, r1.y
    mul_pp r1.x, r1.x, r2.x

#line 562
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 707
    mad r2, r0.zwzw, c15.xyzy, v0.xyxy  // ::texcoords<8,9,10,11>

#line 479
    mul r3, r2, c6.x

#line 493
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.y, r3.x

#line 707 "pp_final.cgfx"
    mad r3, r0.zwzw, c15.yxyz, v0.xyxy  // ::texcoords<12,13,14,15>

#line 481
    mul r8, r3, c6.x

#line 495
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r3, r5.zwzw, r3

#line 480
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r8.x
    mov r4.z, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r1.z, r4.x

#line 498
    mul r1.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>
    mul r2.xy, r2.zwzw, -r4.y  // getPosition4SSAO::viewPos1<0,1>

#line 511
    add_pp r1.xyz, -r7, r1  // ::diff<0,1,2>
    dp3_pp r2.w, r1, r1
    mad_pp r7.w, r2.w, c8.x, -r1.w
    rsq r2.w, r2.w
    mul_pp r1.xyz, r1, r2.w  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.w, r1.x, c12.y
    rcp_pp r1.x, r7.w
    mul_pp r1.x, r1.x, r2.w

#line 577
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 511
    mov r2.z, r4.y
    add_pp r1.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r2.x, r1, r1
    mad_pp r2.y, r2.x, c8.x, -r1.w
    rsq r2.x, r2.x
    mul_pp r1.xyz, r1, r2.x  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.x, r1.x, c12.y
    rcp_pp r1.x, r2.y
    mul_pp r1.x, r1.x, r2.x

#line 577
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 511
    mov r1.z, r4.w

#line 500
    mul r1.xy, r3, -r4.w  // getPosition4SSAO::viewPos2<0,1>
    mul r4.xy, r3.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r2.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r1.xyz, -r7, r1  // ::diff<0,1,2>
    dp3_pp r2.w, r1, r1
    mad_pp r3.x, r2.w, c8.x, -r1.w
    rsq r2.w, r2.w
    mul_pp r1.xyz, r1, r2.w  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.w, r1.x, c12.y
    rcp_pp r1.x, r3.x
    mul_pp r1.x, r1.x, r2.w

#line 577
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 513
    dp3_pp r1.x, r2, r2
    mad_pp r1.y, r1.x, c8.x, -r1.w
    rsq r1.x, r1.x
    mul_pp r2.xyz, r1.x, r2  // ::v<0,1,2>
    dp3_pp r1.x, r6, r2
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.x, r1.x, c12.y
    rcp_pp r1.x, r1.y
    mul_pp r1.x, r1.x, r2.x

#line 577
    mad_pp r0.y, r1.x, c8.z, r0.y  // ::ao<0>

#line 580
    mul_sat r0.y, r0.y, c10.w
    add_pp r0.y, -r0.y, r6.w

#line 651
    add_pp r0.y, r0.y, -c12.w  // ::rgb<0>

#line 723
    mad r2, r0.zwzw, c13.zzww, v0.xyxy  // ::texcoordsDiagonal<0,1,6,7>

#line 481
    mul r3, r2, c6.x

#line 495
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY3<0>

#line 501
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>

#line 481
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r3.x

#line 723 "pp_final.cgfx"
    mad r3, r0.zwzw, c13.zwwz, v0.xyxy  // ::texcoordsDiagonal<2,3,4,5>

#line 480
    mul r8, r3, c6.x

#line 494
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY1<0>, ::screenXY2<0>

#line 500
    mul r3, r5.zwzw, r3

#line 479
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.z, r8.x
    mov r4.y, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r1.z, r4.y

#line 499
    mul r1.xy, r3, -r4.y  // getPosition4SSAO::viewPos1<0,1>
    mul r3.xy, r3.zwzw, -r4.w  // getPosition4SSAO::viewPos2<0,1>

#line 511
    add_pp r1.xyz, -r7, r1  // ::diff<0,1,2>
    dp3_pp r3.w, r1, r1
    mad_pp r7.w, r3.w, c8.x, -r1.w
    rsq r3.w, r3.w
    mul_pp r1.xyz, r1, r3.w  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r3.w, r1.x, c12.y
    rcp_pp r1.x, r7.w
    mul_pp r1.x, r1.x, r3.w
    mul_pp r1.x, r1.x, c8.z  // ::doAmbientOcclusion<0>

#line 511
    mov r8.z, r4.x

#line 498
    mul r8.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>

#line 501
    mul r4.xy, r2.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r2.xyz, -r7, r8  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r3.z, r4.w
    add_pp r2.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r3.xyz, -r7, r3  // ::diff<0,1,2>
    dp3_pp r1.y, r3, r3
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r3.xyz, r1.y, r3  // ::v<0,1,2>
    dp3_pp r1.y, r6, r3
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.w, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.w

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 513
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 723
    mad r2, r0.zwzw, c14.xxxy, v0.xyxy  // ::texcoordsDiagonal<8,9,10,11>

#line 479
    mul r3, r2, c6.x

#line 493
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.y, r3.x

#line 723 "pp_final.cgfx"
    mad r3, r0.zwzw, c14.yxyy, v0.xyxy  // ::texcoordsDiagonal<12,13,14,15>

#line 481
    mul r8, r3, c6.x

#line 495
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r3, r5.zwzw, r3

#line 480
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r8.x
    mov r4.z, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r8.z, r4.x

#line 498
    mul r8.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>
    mul r2.xy, r2.zwzw, -r4.y  // getPosition4SSAO::viewPos1<0,1>

#line 511
    add_pp r8.xyz, -r7, r8  // ::diff<0,1,2>
    dp3_pp r1.y, r8, r8
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r8.xyz, r1.y, r8  // ::v<0,1,2>
    dp3_pp r1.y, r6, r8
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.w, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.w

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r2.z, r4.y
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r2.z, r4.w

#line 500
    mul r2.xy, r3, -r4.w  // getPosition4SSAO::viewPos2<0,1>
    mul r4.xy, r3.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r3.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 513
    dp3_pp r1.y, r3, r3
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r3  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 580
    mul_sat r1.x, r1.x, c10.w
    add_pp r1.x, -r1.x, r6.w

#line 651
    add_pp r0.y, r0.y, r1.x

#line 726
    add_pp r0.y, r0.y, -c12.w
    mul r0.y, r0.y, c11.w

#line 707
    mad r2, r0.zwzw, c12.xyzy, v0.xyxy  // ::texcoords<0,1,2,3>

#line 479
    mul r3, r2, c6.x

#line 493
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.y, r3.x

#line 707 "pp_final.cgfx"
    mad r3, r0.zwzw, c12.yxyz, v0.xyxy  // ::texcoords<4,5,6,7>

#line 481
    mul r8, r3, c6.x

#line 495
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r3, r5.zwzw, r3

#line 480
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r8.x
    mov r4.z, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r1.z, r4.y

#line 499
    mul r1.xy, r2.zwzw, -r4.y  // getPosition4SSAO::viewPos1<0,1>
    mul r2.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>

#line 511
    add_pp r1.xyz, -r7, r1  // ::diff<0,1,2>
    dp3_pp r2.w, r1, r1
    mad_pp r7.w, r2.w, c8.x, -r1.w
    rsq r2.w, r2.w
    mul_pp r1.xyz, r1, r2.w  // ::v<0,1,2>
    dp3_pp r1.x, r6, r1
    add_pp r1.x, r1.x, -c8.y
    max_pp r2.w, r1.x, c12.y
    rcp_pp r1.x, r7.w
    mul_pp r1.x, r1.x, r2.w
    mul_pp r1.x, r1.x, c8.z  // ::doAmbientOcclusion<0>

#line 511
    mov r2.z, r4.x
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r2.z, r4.w

#line 500
    mul r2.xy, r3, -r4.w  // getPosition4SSAO::viewPos2<0,1>
    mul r4.xy, r3.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r3.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 513
    dp3_pp r1.y, r3, r3
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r3  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 562
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 707
    mad r2, r0.zwzw, c10.xyzy, v0.xyxy  // ::texcoords<8,9,10,11>

#line 479
    mul r3, r2, c6.x

#line 493
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.y, r3.x

#line 707 "pp_final.cgfx"
    mad r3, r0.zwzw, c10.yxyz, v0.xyxy  // ::texcoords<12,13,14,15>

#line 481
    mul r8, r3, c6.x

#line 495
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r3, r5.zwzw, r3

#line 480
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r8.x
    mov r4.z, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r8.z, r4.x

#line 498
    mul r8.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>
    mul r2.xy, r2.zwzw, -r4.y  // getPosition4SSAO::viewPos1<0,1>

#line 511
    add_pp r8.xyz, -r7, r8  // ::diff<0,1,2>
    dp3_pp r1.y, r8, r8
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r8.xyz, r1.y, r8  // ::v<0,1,2>
    dp3_pp r1.y, r6, r8
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.w, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.w

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r2.z, r4.y
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 511
    mov r2.z, r4.w

#line 500
    mul r2.xy, r3, -r4.w  // getPosition4SSAO::viewPos2<0,1>
    mul r4.xy, r3.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r3.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r2.xyz, -r7, r2  // ::diff<0,1,2>
    dp3_pp r1.y, r2, r2
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r2  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 513
    dp3_pp r1.y, r3, r3
    mad_pp r1.z, r1.y, c8.x, -r1.w
    rsq r1.y, r1.y
    mul_pp r2.xyz, r1.y, r3  // ::v<0,1,2>
    dp3_pp r1.y, r6, r2
    add_pp r1.y, r1.y, -c8.y
    max_pp r2.x, r1.y, c12.y
    rcp_pp r1.y, r1.z
    mul_pp r1.y, r1.y, r2.x

#line 577
    mad_pp r1.x, r1.y, c8.z, r1.x  // ::ao<0>

#line 580
    mul_sat r1.x, r1.x, c10.w
    add_pp r1.x, -r1.x, r6.w

#line 651
    add_pp r1.x, r1.x, -c12.w  // ::rgb<0>

#line 723
    mad r2, r0.zwzw, c10.zzxx, v0.xyxy  // ::texcoordsDiagonal<0,1,6,7>

#line 481
    mul r3, r2, c6.x

#line 495
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY0<0>, ::screenXY3<0>

#line 501
    mul r2, r5.zwzw, r2

#line 478
    texld r4, r3, s0  // getDepth::depthSample<0>

#line 481
    texld r3, r3.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r3.x

#line 723 "pp_final.cgfx"
    mad r3, r0.zwzw, c10.zxxz, v0.xyxy  // ::texcoordsDiagonal<2,3,4,5>

#line 480
    mul r8, r3, c6.x

#line 494
    mad r3, r3, c12.x, c12.w
    mul r3, r5.xyxy, r3  // ::screenXY1<0>, ::screenXY2<0>

#line 500
    mul r3, r5.zwzw, r3

#line 479
    texld r9, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.z, r8.x
    mov r4.y, r9.x
    mad r4, r4, r0.x, -c3.x
    rcp r8.x, r4.x
    rcp r8.y, r4.y
    rcp r8.z, r4.z
    rcp r8.w, r4.w
    mul r4, r8.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 511 "pp_final.cgfx"
    mov r8.z, r4.y

#line 499
    mul r8.xy, r3, -r4.y  // getPosition4SSAO::viewPos1<0,1>
    mul r3.xy, r3.zwzw, -r4.w  // getPosition4SSAO::viewPos2<0,1>

#line 511
    add_pp r8.xyz, -r7, r8  // ::diff<0,1,2>
    dp3_pp r1.y, r8, r8
    rsq r1.z, r1.y
    mad_pp r1.y, r1.y, c8.x, -r1.w
    rcp_pp r1.y, r1.y
    mul_pp r8.xyz, r1.z, r8  // ::v<0,1,2>
    dp3_pp r1.z, r6, r8
    add_pp r1.z, r1.z, -c8.y
    max_pp r3.w, r1.z, c12.y
    mul_pp r1.y, r1.y, r3.w
    mul_pp r1.y, r1.y, c8.z  // ::doAmbientOcclusion<0>

#line 511
    mov r8.z, r4.x

#line 498
    mul r8.xy, r2, -r4.x  // getPosition4SSAO::viewPos0<0,1>

#line 501
    mul r4.xy, r2.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    add_pp r2.xyz, -r7, r8  // ::diff<0,1,2>
    dp3_pp r1.z, r2, r2
    mad_pp r2.w, r1.z, c8.x, -r1.w
    rsq r1.z, r1.z
    mul_pp r2.xyz, r1.z, r2  // ::v<0,1,2>
    dp3_pp r1.z, r6, r2
    add_pp r1.z, r1.z, -c8.y
    max_pp r2.x, r1.z, c12.y
    rcp_pp r1.z, r2.w
    mul_pp r1.z, r1.z, r2.x

#line 562
    mad_pp r1.y, r1.z, c8.z, r1.y  // ::ao<0>

#line 511
    mov r3.z, r4.w
    add_pp r2.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r3.xyz, -r7, r3  // ::diff<0,1,2>
    dp3_pp r1.z, r3, r3
    mad_pp r2.w, r1.z, c8.x, -r1.w
    rsq r1.z, r1.z
    mul_pp r3.xyz, r1.z, r3  // ::v<0,1,2>
    dp3_pp r1.z, r6, r3
    add_pp r1.z, r1.z, -c8.y
    max_pp r3.x, r1.z, c12.y
    rcp_pp r1.z, r2.w
    mul_pp r1.z, r1.z, r3.x

#line 562
    mad_pp r1.y, r1.z, c8.z, r1.y  // ::ao<0>

#line 513
    dp3_pp r1.z, r2, r2
    rsq r2.w, r1.z
    mad_pp r1.z, r1.z, c8.x, -r1.w
    rcp_pp r1.z, r1.z
    mul_pp r2.xyz, r2.w, r2  // ::v<0,1,2>
    dp3_pp r2.x, r6, r2
    add_pp r2.x, r2.x, -c8.y
    max_pp r3.x, r2.x, c12.y
    mul_pp r1.z, r1.z, r3.x

#line 562
    mad_pp r1.y, r1.z, c8.z, r1.y  // ::ao<0>

#line 723
    mad r2, r0.zwzw, c13.xxxy, v0.xyxy  // ::texcoordsDiagonal<8,9,10,11>

#line 493
    mad r3, r2, c12.x, c12.w

#line 479
    mul r2, r2, c6.x

#line 493
    mul r3, r5.xyxy, r3  // ::screenXY0<0>, ::screenXY1<0>

#line 499
    mul r3, r5.zwzw, r3

#line 478
    texld r4, r2, s0  // getDepth::depthSample<0>
    texld r2, r2.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.y, r2.x

#line 723 "pp_final.cgfx"
    mad r2, r0.zwzw, c13.yxyy, v0.xyxy  // ::texcoordsDiagonal<12,13,14,15>

#line 481
    mul r8, r2, c6.x

#line 495
    mad r2, r2, c12.x, c12.w
    mul r2, r5.xyxy, r2  // ::screenXY2<0>, ::screenXY3<0>

#line 501
    mul r2, r5.zwzw, r2

#line 480
    texld r5, r8, s0  // getDepth::depthSample<0>
    texld r8, r8.zwzw, s0  // getDepth::depthSample<0>

#line 239 "incCommon.cgfx"
    mov r4.w, r8.x
    mov r4.z, r5.x
    mad r4, r4, r0.x, -c3.x
    rcp r5.x, r4.x
    rcp r5.y, r4.y
    rcp r5.z, r4.z
    rcp r5.w, r4.w
    mul r4, r5.xywz, c4.x  // ::viewSpaceZ<0,1,3,2>

#line 498 "pp_final.cgfx"
    mul r5.xy, r3, -r4.x  // getPosition4SSAO::viewPos0<0,1>
    mul r3.xy, r3.zwzw, -r4.y  // getPosition4SSAO::viewPos1<0,1>

#line 511
    mov r5.z, r4.x
    add_pp r0.xzw, -r7.xyyz, r5.xyyz  // ::diff<0,1,2>
    dp3_pp r1.z, r0.xzww, r0.xzww
    rsq r3.w, r1.z
    mad_pp r1.z, r1.z, c8.x, -r1.w
    rcp_pp r1.z, r1.z
    mul_pp r0.xzw, r0, r3.w  // ::v<0,1,2>
    dp3_pp r0.x, r6, r0.xzww
    add_pp r0.x, r0.x, -c8.y
    max_pp r3.w, r0.x, c12.y
    mul_pp r0.x, r1.z, r3.w

#line 577
    mad_pp r0.x, r0.x, c8.z, r1.y  // ::ao<0>

#line 511
    mov r3.z, r4.y
    add_pp r3.xyz, -r7, r3  // ::diff<0,1,2>
    dp3_pp r0.z, r3, r3
    rsq r0.w, r0.z
    mad_pp r0.z, r0.z, c8.x, -r1.w
    rcp_pp r0.z, r0.z
    mul_pp r3.xyz, r0.w, r3  // ::v<0,1,2>
    dp3_pp r0.w, r6, r3
    add_pp r0.w, r0.w, -c8.y
    max_pp r1.y, r0.w, c12.y
    mul_pp r0.z, r0.z, r1.y

#line 577
    mad_pp r0.x, r0.z, c8.z, r0.x  // ::ao<0>

#line 500
    mul r3.xy, r2, -r4.w  // getPosition4SSAO::viewPos2<0,1>
    mul r4.xy, r2.zwzw, -r4.z  // getPosition4SSAO::viewPos3<0,1>

#line 511
    mov r3.z, r4.w
    add_pp r2.xyz, -r7, r4  // ::diff<0,1,2>
    add_pp r3.xyz, -r7, r3  // ::diff<0,1,2>
    dp3_pp r0.z, r3, r3
    rsq r0.w, r0.z
    mad_pp r0.z, r0.z, c8.x, -r1.w
    rcp_pp r0.z, r0.z
    mul_pp r3.xyz, r0.w, r3  // ::v<0,1,2>
    dp3_pp r0.w, r6, r3
    add_pp r0.w, r0.w, -c8.y
    max_pp r1.y, r0.w, c12.y
    mul_pp r0.z, r0.z, r1.y

#line 577
    mad_pp r0.x, r0.z, c8.z, r0.x  // ::ao<0>

#line 513
    dp3_pp r0.z, r2, r2
    rsq r0.w, r0.z
    mad_pp r0.z, r0.z, c8.x, -r1.w
    rcp_pp r0.z, r0.z
    mul_pp r1.yzw, r0.w, r2.xxyz  // ::v<0,1,2>
    dp3_pp r0.w, r6, r1.yzww
    add_pp r0.w, r0.w, -c8.y
    max_pp r1.y, r0.w, c12.y
    mul_pp r0.z, r0.z, r1.y

#line 577
    mad_pp r0.x, r0.z, c8.z, r0.x  // ::ao<0>

#line 580
    mul_sat r0.x, r0.x, c10.w
    add_pp r0.x, -r0.x, r6.w

#line 651
    add_pp r0.x, r1.x, r0.x

#line 726
    add_pp r0.x, r0.x, -c12.w
    mad_pp r0.x, r0.x, c11.w, r0.y  // ::result<0>

#line 732
    mul_pp oC0.xyz, r0.x, c11.w  // ::mainFPSSAOUltra<0,1,2>
    mov_pp oC0.w, -c12.w  // ::mainFPSSAOUltra<3>

// approximately 632 instruction slots used (34 texture, 598 arithmetic)
 