//Global illumination, related to TAA. Also shadows fix.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Sun Jan 16 18:31:35 2022
//
//
// Note: shader requires additional functionality:
//       64 UAV slots
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__passData
// {
//
//   struct SSAOData
//   {
//
//       float4 g_ReprojectInfoFromUV;  // Index:    0
//       float4 g_ReprojectInfoHalfResFromInt;// Index:    1
//       float4 g_ReprojectPosToPrevDepth;// Index:    2
//       float4 g_ScreenSize;           // Index:    3
//       float4x4 g_ViewMatrix;         // Index:    4
//       float4x4 g_InvViewMatrix;      // Index:    8
//       float4x4 g_InvProjNoZReproj;   // Index:   12
//       float4x4 g_DirectionProjectionMatrix;// Index:   16
//       float g_ssaoTemporalSharpness; // Index:   20
//       float g_ssaoTemporalConvergence;// Index:   20.y
//       uint g_SSAOPhase;              // Index:   20.z
//       float g_SSAOStrength;          // Index:   20.w
//       float g_SSAOExponent;          // Index:   21
//       float g_CapsuleStrength;       // Index:   21.y
//       float2 g_MVDecompress;         // Index:   21.z
//       float g_CapsuleDistanceAttenuationAmbientInv;// Index:   22
//       float g_CapsuleDistanceAttenuationShadowsInv;// Index:   22.y
//       uint g_EnableSSAO;             // Index:   22.z
//       uint g_EnableSSDO;             // Index:   22.w
//       uint g_EnableSSGI;             // Index:   23
//       uint g_EnableCapsuleAO;        // Index:   23.y
//       uint g_EnableCapsuleDir;       // Index:   23.z
//       uint g_TilesHorz;              // Index:   23.w
//       uint g_EnableSSR;              // Index:   24
//       uint g_ssrNumSamples;          // Index:   24.y
//       float g_MinGloss;              // Index:   24.z
//       uint g_NumSteps;               // Index:   24.w
//       float g_RayAcceleration;       // Index:   25
//       uint g_KillFrontFacingRays;    // Index:   25.y
//       float g_Thickness;             // Index:   25.z
//       uint g_StochasticSampleCount;  // Index:   25.w
//       uint g_StochasticSampleCountMinusOne;// Index:   26
//       uint g_NumCapsuleShadows;      // Index:   26.y
//       float4 g_CapsuleShadowsPositions[4];// Index:   27
//
//       struct CapsuleAOParameters
//       {
//
//           float3 g_SkySHDirection;   // Index:   31
//           float g_SkySHDirectionality;// Index:   31.w
//           float4 g_AOCapsules[128];  // Index:   32
//           int g_numAOSpheres;        // Index:  160
//
//       } g_capsuleAOParameters;       // Index:   31
//
//       struct GtaoConfig
//       {
//
//           float maxDepth;            // Index:  161
//           float radius;              // Index:  161.y
//           float radiusMin;           // Index:  161.z
//           float radiusMax;           // Index:  161.w
//           float mipFactor;           // Index:  162
//           float bendStrength;        // Index:  162.y
//           float falloff;             // Index:  162.z
//           float intensity;           // Index:  162.w
//           float ssgiBackfaceFactor;  // Index:  163
//           float ssgiIntensity;       // Index:  163.y
//           float rotationalJitter;    // Index:  163.z
//           float offsetJitter;        // Index:  163.w
//           float projectionScale;     // Index:  164
//           float aspectRatio;         // Index:  164.y
//           float deghostStrength;     // Index:  164.z
//           float deghostFadeStrength; // Index:  164.w
//           float rotationStepsRcp;    // Index:  165
//           float offsetStepsRcp;      // Index:  165.y
//
//       } g_gtaoConfig;                // Index:  161
//
//   } resourceTables__passData;        // Index:    0-165.y          Components:   662
                                        // Textures:  t0-t12
//
// }
//
// cbuffer ConstBuf__tileConstants
// {
//
//   struct SSAOTileConstants
//   {
//
//       uint firstGroupOffset;         // Index:    0
//       uint pad0;                     // Index:    0.y
//       uint pad1;                     // Index:    0.z
//       uint pad2;                     // Index:    0.w
//
//   } resourceTables__tileConstants;   // Index:    0.xyzw           Components:     4
//
// }
//
// Resource bind info for resourceTables__passData.texLights
// {
//
//   uint $Element;                     // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__passData.stochasticSamples
// {
//
//   float4 $Element;                   // Index:    0.xyzw           Components:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__passData__smpLinearClamp    sampler      NA          NA    0        1
// resourceTables__passData__smpPointClamp    sampler      NA          NA    1        1
// resourceTables__passData.InputTextureLinearDepth    texture   float          2d    0        1
// resourceTables__passData.InputTextureNormals    texture  float4          2d    1        1
// resourceTables__passData.InputTextureSSAO    texture   uint2          2d    2        1
// resourceTables__passData.InputTextureSSGI    texture  float3          2d    3        1
// resourceTables__passData.InputTextureMotion    texture  float2          2d    4        1
// resourceTables__passData.InputColorPrevFrame    texture  float4          2d    5        1
// resourceTables__passData.InputRadiancePrevFrame    texture  float4          2d    6        1
// resourceTables__passData.texLights    texture  struct         r/o    8        1
// resourceTables__passData.stochasticSamples    texture  struct         r/o   10        1
// resourceTables__passData.SphereAOLUT    texture   float          2d   11        1
// resourceTables__passData.BlueNoiseTexture    texture   float     2darray   12        1
// resourceTables__passData.OutSSAO        UAV   uint2          2d    8        1
// resourceTables__passData.OutSSGI        UAV  float3          2d    9        1
// resourceTables__passData.OutSSRColor        UAV  float3          2d   10        1
// resourceTables__passData.OutSSRRayInfo        UAV  float4          2d   11        1
// resourceTables__passData.OutCapsuleShadows        UAV   float     2darray   12        1
// ConstBuf__passData                cbuffer      NA          NA    0        1
// ConstBuf__tileConstants           cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[166], dynamicIndexed
dcl_constantbuffer cb1[1], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (uint,uint,uint,uint) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_structured t8, 4
dcl_resource_structured t10, 16
dcl_resource_texture2d (float,float,float,float) t11
dcl_resource_texture2darray (float,float,float,float) t12
dcl_uav_typed_texture2d (uint,uint,uint,uint) u8
dcl_uav_typed_texture2d (float,float,float,float) u9
dcl_uav_typed_texture2d (float,float,float,float) u10
dcl_uav_typed_texture2d (float,float,float,float) u11
dcl_uav_typed_texture2darray (float,float,float,float) u12
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.x
dcl_temps 50
dcl_indexableTemp x0[4], 4
dcl_thread_group 64, 1, 1
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
iadd r0.x, vThreadGroupID.x, cb1[0].x
udiv r1.x, r2.x, r0.x, cb0[23].w
imul null, r0.y, r0.x, l(3)
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.y, r0.y, l(0), t8.xxxx
and r0.z, r0.y, l(0x00100000)
ushr r1.yz, vThreadIDInGroupFlattened.xxxx, l(0, 2, 3, 0)
and r1.yz, r1.yyzy, l(0, 4, 4, 0)
xor r0.w, r1.y, r1.z
ishl r1.z, vThreadIDInGroupFlattened.x, l(1)
ushr r1.zw, l(0, 0, 0xebfa5014, 0xfa4141af), r1.zzzz
bfi r3.x, l(2), l(0), r1.z, r0.w
bfi r3.y, l(2), l(0), r1.w, r1.y
mov r2.y, r1.x
bfi r1.xy, l(29, 29, 0, 0), l(3, 3, 0, 0), r2.xyxx, r3.xyxx
if_nz r0.z
  store_uav_typed u10.xyzw, r1.xyyy, l(0,0,0,0)
  store_uav_typed u11.xyzw, r1.xyyy, l(0,0,0,0)
  store_uav_typed u8.xyzw, r1.xyyy, l(0xffff0000,0x007fff7f,0xffff0000,0xffff0000)
  if_nz cb0[23].x
    store_uav_typed u9.xyzw, r1.xyyy, l(0,0,0,0)
  endif
endif
if_z r0.z
  and r0.y, r0.y, l(0x01000000)
  ine r0.y, r0.y, l(0)
  itof r0.zw, r1.xxxy
  
  mov r30.zw, r0.zzzw
  mul r40.w, cb0[3].x, l(-0.5)
  mad r30.z, r40.x, r40.w, r30.z
  
  //ftoi r31.xy, r30.zwzz
  //ftoi r1.xy, r30.zwzz
  
  add r30.zw, r30.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
  
  add r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
  
  mul r32.xy, r0.zwzz, cb0[3].zwzz
  
  mul r2.xy, r30.zwzz, cb0[3].zwzz
  
  
  
  sample_l_indexable(texture2d)(float,float,float,float) r2.z, r32.xyxx, t0.yzxw, s1, l(0.000000)
  
  //mad r2.x, r40.x, r2.z, r2.x
  
  //mad r2.x, r40.x, l(1.0), r2.x
  mad r3.xy, r2.xyxx, cb0[0].xyxx, cb0[0].zwzz
  mul r3.xy, r2.zzzz, r3.xyxx
  mov r3.z, -r2.z
  
  
  mad r33.xy, r32.xyxx, cb0[0].xyxx, cb0[0].zwzz
  mul r33.xy, r2.zzzz, r33.xyxx
  mov r33.z, -r2.z
  
  
  //SSR part 1.
  //mad r2.x, r40.x, l(-0.5), r2.x
  //mad r3.x, -r40.x, l(1.0), r3.x
  
  
  
  mov r43.xyz, r3.xyzx
  mov r43.w, l(1.000000)
  //r43.z originally instead of 0, for full depth.
  add r40.w, l(0.0), r40.y
  mul r40.w, r40.w, cb0[0].x
  mul r40.w, r40.w, l(0.5)
  mad r43.x, r40.x, r40.w, r43.x
  
  mov r1.z, l(0)
  ld_indexable(texture2d)(float,float,float,float) r4.xyzw, r1.xyzz, t1.xyzw
  mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  mov x0[3].x, l(1.000000)
  mov x0[2].x, l(1.000000)
  mov x0[1].x, l(1.000000)
  mov x0[0].x, l(1.000000)
  if_nz cb0[23].y
    imad r5.xy, r0.xxxx, l(3, 3, 0, 0), l(1, 2, 0, 0)
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.x, r5.x, l(0), t8.xxxx
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r5.x, r5.y, l(0), t8.xxxx
    mov r3.w, l(1.000000)
    dp4 r6.x, r43.xyzw, cb0[8].xyzw
    dp4 r6.y, r43.xyzw, cb0[9].xyzw
    dp4 r6.z, r43.xyzw, cb0[10].xyzw
    mov r5.yzw, l(0,1.000000,1.000000,0)
    loop
      uge r6.w, r5.w, l(2)
      breakc_nz r6.w
      movc r6.w, r5.w, r5.x, r0.x
      ishl r7.x, r5.w, l(5)
      mov r7.yz, r5.yyzy
      mov r7.w, r6.w
      loop
        breakc_z r7.w
        firstbit_lo r8.x, r7.w
        ishl r8.y, l(1), r8.x
        not r8.y, r8.y
        and r7.w, r7.w, r8.y
        iadd r8.x, r7.x, r8.x
        ishl r8.y, r8.x, l(1)
        bfi r8.x, l(31), l(1), r8.x, l(1)
        add r9.xyz, -r6.xyzx, cb0[r8.y + 32].xyzx
		
		//mad r9.x, r40.x, r9.z, r9.x
		
        dp3 r8.z, r9.xyzx, cb0[r8.x + 32].xyzx
        mul r8.w, cb0[r8.x + 32].w, cb0[r8.x + 32].w
        mov r9.w, l(0)
        loop
          uge r10.x, r9.w, cb0[26].y
          breakc_nz r10.x
          add r10.xyz, -r6.xyzx, cb0[r9.w + 27].xyzx
          dp3 r10.w, r10.xyzx, r10.xyzx
          rsq r10.w, r10.w
          mul r10.xyz, r10.wwww, r10.xyzx
          dp3 r10.w, r10.xyzx, r9.xyzx
          dp3 r11.x, r10.xyzx, cb0[r8.x + 32].xyzx
          mad r10.w, r10.w, r11.x, -r8.z
          mad r11.x, -r11.x, r11.x, r8.w
          div_sat r10.w, r10.w, r11.x
          mad r11.xyz, cb0[r8.x + 32].xyzx, r10.wwww, r9.xyzx
          dp3 r10.w, r11.xyzx, r11.xyzx
          rsq r11.w, r10.w
          mul r11.xyz, r11.wwww, r11.xyzx
          dp3 r10.x, r11.xyzx, r10.xyzx
          mad r10.x, r10.x, l(0.500000), l(0.500000)
          mul r10.y, r11.w, cb0[r8.y + 32].w
          mad r10.xy, r10.xyxx, l(0.996093750, 0.992187500, 0.000000, 0.000000), l(0.00195312500, 0.00390625000, 0.000000, 0.000000)
          sample_l_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t11.xyzw, s0, l(0.000000)
          mul_sat r10.y, r10.w, cb0[22].y
          add r10.x, r10.x, l(-1.000000)
          mad r10.x, r10.y, r10.x, l(1.000000)
          mov r10.y, x0[r9.w + 0].x
          mul r10.x, r10.x, r10.y
          mov x0[r9.w + 0].x, r10.x
          iadd r9.w, r9.w, l(1)
        endloop
        dp3 r9.w, cb0[31].xyzx, r9.xyzx
        dp3 r10.x, cb0[31].xyzx, cb0[r8.x + 32].xyzx
        mad r9.w, r9.w, r10.x, -r8.z
        mad r10.x, -r10.x, r10.x, r8.w
        div_sat r9.w, r9.w, r10.x
        mad r10.xyz, cb0[r8.x + 32].xyzx, r9.wwww, r9.xyzx
        dp3 r9.w, r10.xyzx, r10.xyzx
        rsq r10.w, r9.w
        mul r10.xyz, r10.wwww, r10.xyzx
        dp3 r10.x, r10.xyzx, cb0[31].xyzx
        mad r10.x, r10.x, l(0.500000), l(0.500000)
        mul r10.y, r10.w, cb0[r8.y + 32].w
        mad r10.xy, r10.xyxx, l(0.996093750, 0.992187500, 0.000000, 0.000000), l(0.00195312500, 0.00390625000, 0.000000, 0.000000)
        sample_l_indexable(texture2d)(float,float,float,float) r10.x, r10.xyxx, t11.xyzw, s0, l(0.000000)
        mul_sat r9.w, r9.w, cb0[22].x
        add r10.x, r10.x, l(-1.000000)
        mad r10.x, r9.w, r10.x, l(1.000000)
        mul r7.z, r7.z, r10.x
        dp3 r10.x, r4.xyzx, r9.xyzx
        dp3 r10.y, r4.xyzx, cb0[r8.x + 32].xyzx
        mad r8.z, r10.x, r10.y, -r8.z
        mad r8.w, -r10.y, r10.y, r8.w
        div_sat r8.z, r8.z, r8.w
        mad r8.xzw, cb0[r8.x + 32].xxyz, r8.zzzz, r9.xxyz
        dp3 r9.x, r8.xzwx, r8.xzwx
        sqrt r9.x, r9.x
        div r8.xzw, r8.xxzw, r9.xxxx
        dp3 r8.x, r4.xyzx, r8.xzwx
        div r8.y, r9.x, cb0[r8.y + 32].w
        mul r8.y, r8.y, r8.y
        div_sat r8.x, r8.x, r8.y
        mad r8.x, -r8.x, r9.w, l(1.000000)
        mul r7.y, r7.y, r8.x
      endloop
      mov r5.yz, r7.yyzy
      iadd r5.w, r5.w, l(1)
    endloop
    dp3_sat r0.x, r4.xyzx, cb0[31].xyzx
    mul r0.x, r0.x, cb0[31].w
    add r5.x, -r5.y, r5.z
    mad r0.x, r0.x, r5.x, r5.y
    add r0.x, r0.x, l(-1.000000)
    mad r0.x, cb0[21].y, r0.x, l(1.000000)
  else
    mov r0.x, l(1.000000)
  endif
  mov r1.w, l(0)
  loop
    uge r5.x, r1.w, cb0[26].y
    breakc_nz r5.x
    mov r5.x, x0[r1.w + 0].x
    add r5.x, r5.x, cb0[r1.w + 27].w
    store_uav_typed u12.xyzw, r1.xyww, r5.xxxx
    iadd r1.w, r1.w, l(1)
  endloop
  if_nz cb0[22].z
    ld_indexable(texture2d)(float,float,float,float) r1.zw, r1.xyzz, t4.zwxy
	
	//Disabled with new TAA fix.
	//mad r1.z, r40.x, l(0.5), r1.z
	
    mul r5.xy, r1.zwzz, cb0[21].zwzz
    ge r5.z, cb0[161].x, r2.z
    if_nz r5.z
	  
	  //mad r4.z, r40.x, l(0.5), r4.z
	  
      dp3 r6.x, r4.xyzx, cb0[4].xyzx
      dp3 r6.y, r4.xyzx, cb0[5].xyzx
      dp3 r6.z, r4.xyzx, cb0[6].xyzx
	  
	  //add r40.w, r3.z, -r40.y
	  //mad r3.x, -r40.x, r40.w, r3.x
	  
	  //mad r3.x, r40.x, r3.z, r3.x
	  
      dp3 r5.z, -r3.xyzx, -r3.xyzx
      rsq r5.z, r5.z
      mul r7.xyz, -r3.xyzx, r5.zzzz
      mul r5.z, cb0[161].y, cb0[164].x
      div r5.z, r5.z, r2.z
      min r5.w, r5.z, cb0[161].z
      max r5.z, r5.z, cb0[161].z
      min r5.z, r5.z, cb0[161].w
      max r5.z, r5.z, r5.w
      mul r5.w, r2.z, r5.z
      div r5.w, cb0[164].x, r5.w
      mul r8.z, r2.z, l(-0.998000)
      iadd r6.w, r1.y, r1.x
      bfi r6.w, l(2), l(2), r6.w, l(0)
      bfi r6.w, l(2), l(0), r1.x, r6.w
      utof r6.w, r6.w
      mad r6.w, r6.w, l(0.062500), cb0[163].z
      iadd r7.w, -r1.x, r1.y
      and r7.w, r7.w, l(3)
      utof r7.w, r7.w
      mad r7.w, r7.w, l(0.250000), cb0[163].w
      frc r6.w, r6.w
      frc r7.w, r7.w
      mul r8.w, r6.w, cb0[165].x
      mov r9.x, cb0[164].y
      mov r9.yw, l(0,1.000000,0,0)
      mul r10.xy, r5.zzzz, r9.xyxx
      mul r5.z, r5.z, cb0[162].x
      mad r6.w, r6.w, cb0[165].x, l(1.000000)
      mov r8.xy, r33.xyxx
	  
	  //mad r2.x, r40.x, l(-0.5), r2.x
	  
      mul r10.zw, r2.xxxy, cb0[3].xxxy
      ftou r10.zw, r10.zzzw
      xor r10.z, r10.w, r10.z
      xor r10.z, r10.z, cb0[20].z
      and r10.z, r10.z, l(1)
      ine r10.z, r10.z, l(0)
      mov r11.y, l(0)
      mov r12.xw, l(0,0,0,0)
      mov r13.z, l(0)
      mov r14.xyz, l(0,0,0,0)
      mov r15.xyz, l(0,0,0,0)
      mov r10.w, r8.w
      mov r11.w, l(0)
      mov r13.x, l(0)
      loop
        ge r13.y, r10.w, r6.w
        breakc_nz r13.y
        mul r13.y, r10.w, l(3.14159274)
        sincos r11.x, r16.x, r13.y
        mov r11.z, r16.x
        mul r16.xyz, r7.zxyz, r11.xyzx
        mad r16.xyz, r7.yzxy, r11.yzxy, -r16.xyzx
        dp3 r11.x, r16.xyzx, r16.xyzx
        rsq r11.x, r11.x
        mul r16.xyz, r11.xxxx, r16.xyzx
        mul r17.xyz, r7.yzxy, r16.zxyz
        mad r17.xyz, r16.yzxy, r7.zxyz, -r17.xyzx
        dp3 r11.x, r16.xyzx, r6.xyzx
        mul r18.xyz, r11.xxxx, r16.xyzx
        mad r16.xyz, -r16.xyzx, r11.xxxx, r6.xyzx
        dp3 r11.x, r16.xyzx, r16.xyzx
        sqrt r11.x, r11.x
        rcp r11.z, r11.x
        mul r16.xyz, r11.zzzz, r16.xyzx
        dp3 r11.z, r7.xyzx, r16.xyzx
        mad r13.y, |r11.z|, l(-0.156583), l(1.57079637)
        add r14.w, -|r11.z|, l(1.000000)
        sqrt r14.w, r14.w
        mul r15.w, r13.y, r14.w
        ge r11.z, r11.z, l(0.000000)
        mad r13.y, -r13.y, r14.w, l(3.14159274)
        movc r11.z, r11.z, r15.w, r13.y
        dp3 r13.y, r17.xyzx, r6.xyzx
        lt r13.y, r13.y, l(0.000000)
        movc r13.y, r13.y, l(-1.000000), l(1.000000)
        mul r14.w, r11.z, r13.y
        mad r16.xy, r11.zzzz, r13.yyyy, l(1.57079637, -1.57079637, 0.000000, 0.000000)
        sincos null, r16.xy, r16.xyxx
        mul r16.zw, r10.xxxy, r17.xxxy
        mul r16.zw, r16.zzzw, l(0.000000, 0.000000, 1.000000, -1.000000)
        mov r19.xyz, r15.xyzx
        mov r20.xy, r16.xyxx
		
		//SSR part 1 here too.
		//mad r2.x, r40.x, l(-0.5), r2.x
		
        mov r21.xyzw, r2.xyxy
        mov r20.zw, l(0,0,0,0)
        mov r15.w, l(0)
        loop
          ge r17.w, r15.w, l(1.000000)
          breakc_nz r17.w
          mad r17.w, r7.w, cb0[165].y, r15.w
          log r17.w, r17.w
          mul r17.w, r17.w, l(1.500000)
          exp r17.w, r17.w
          add r17.w, r17.w, l(0.005000)
          mul r18.w, r5.z, r17.w
          mul r22.xy, r16.zwzz, r17.wwww
          mad r23.xy, r0.zwzz, cb0[3].zwzz, r22.xyxx
          mad r23.zw, r0.zzzw, cb0[3].zzzw, -r22.xxxy
          lt r17.w, r18.w, l(1.000000)
          if_nz r17.w
		    
			//mad r23.x, r40.x, l(-0.5), r23.x
			
            mul r22.xy, r23.xyxx, cb0[3].xyxx
            ftou r22.zw, r22.xxxy
            xor r17.w, r22.w, r22.z
            xor r17.w, r17.w, cb0[20].z
            and r17.w, r17.w, l(1)
            ine r17.w, r17.w, l(0)
            ine r17.w, r10.z, r17.w
            frc r22.zw, r22.xxxy
            add r22.zw, r22.zzzw, l(0.000000, 0.000000, -0.500000, -0.500000)
            lt r19.w, |r22.w|, |r22.z|
            lt r24.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r22.zwzz
            lt r22.zw, r22.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
            iadd r22.zw, -r24.xxxy, r22.zzzw
            itof r9.z, r22.z
            itof r12.y, r22.w
            movc r22.zw, r19.wwww, r9.zzzw, r12.xxxy
            mad r22.zw, r23.xxxy, cb0[3].xxxy, r22.zzzw
            movc r22.xy, r17.wwww, r22.zwzz, r22.xyxx
            ftou r22.xy, r22.xyxx
            utof r22.xy, r22.xyxx
            mul r23.xy, r22.xyxx, cb0[3].zwzz
			
			//mad r23.z, r40.x, l(-0.5), r23.z
			
            mul r22.xy, r23.zwzz, cb0[3].xyxx
            ftou r22.zw, r22.xxxy
            xor r9.z, r22.w, r22.z
            xor r9.z, r9.z, cb0[20].z
            and r9.z, r9.z, l(1)
            ine r9.z, r9.z, l(0)
            ine r9.z, r10.z, r9.z
            frc r22.zw, r22.xxxy
            add r22.zw, r22.zzzw, l(0.000000, 0.000000, -0.500000, -0.500000)
            lt r12.y, |r22.w|, |r22.z|
            lt r24.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r22.zwzz
            lt r22.zw, r22.zzzw, l(0.000000, 0.000000, 0.000000, 0.000000)
            iadd r22.zw, -r24.xxxy, r22.zzzw
            itof r12.z, r22.z
            itof r13.w, r22.w
            movc r12.yz, r12.yyyy, r12.zzwz, r13.zzwz
            mad r12.yz, r23.zzwz, cb0[3].xxyx, r12.yyzy
            movc r12.yz, r9.zzzz, r12.yyzy, r22.xxyx
            ftou r12.yz, r12.yyzy
            utof r12.yz, r12.yyzy
            mul r23.zw, r12.yyyz, cb0[3].zzzw
          endif
          sample_l_indexable(texture2d)(float,float,float,float) r9.z, r23.xyxx, t0.yzxw, s1, r18.w
          mad r22.xyzw, r23.xyzw, cb0[0].xyxy, cb0[0].zwzw
          mul r24.xy, r9.zzzz, r22.xyxx
          mov r24.z, -r9.z
          sample_l_indexable(texture2d)(float,float,float,float) r9.z, r23.zwzz, t0.yzxw, s1, r18.w
          mul r22.xy, r9.zzzz, r22.zwzz
          mov r22.z, -r9.z
          add r24.xyz, -r8.xyzx, r24.xyzx
          add r22.xyz, -r8.xyzx, r22.xyzx
          dp3 r9.z, r24.xyzx, r24.xyzx
          sqrt r25.x, r9.z
          dp3 r9.z, r22.xyzx, r22.xyzx
          sqrt r25.y, r9.z
          dp3 r26.x, r7.xyzx, r24.xyzx
          dp3 r26.y, r7.xyzx, r22.xyzx
          div r12.yz, r26.xxyx, r25.xxyx
          max r12.yz, r16.xxyx, r12.yyzy
          mul_sat r25.zw, r5.wwww, r25.xxxy
          mad r25.zw, -r25.zzzw, r25.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000)
          ge r26.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000), r23.xyzw
          ge r27.xyzw, r23.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
          or r26.xyzw, r26.xyzw, r27.xyzw
          or r26.xy, r26.ywyy, r26.xzxx
          movc r25.zw, r26.xxxy, l(0,0,0,0), r25.zzzw
          add r12.yz, -r16.xxyx, r12.yyzy
          mad r12.yz, r25.zzwz, r12.yyzy, r16.xxyx
          add r12.yz, -r20.xxyx, r12.yyzy
          lt r26.xy, r12.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
          mul r25.zw, r25.zzzw, r12.yyyz
          mul r25.zw, r25.zzzw, l(0.000000, 0.000000, 0.010000, 0.010000)
          movc r12.yz, r26.xxyx, r25.zzwz, r12.yyzy
          add r20.xy, r12.yzyy, r20.xyxx
          ge r25.zw, r20.zzzw, r12.yyyz
          movc r21.xyzw, r25.zzww, r21.xyzw, r23.xyzw
          movc r20.zw, r25.zzzw, r20.zzzw, r12.yyyz
          mov_sat r12.yz, r12.yyzy
          lt r25.zw, l(0.000000, 0.000000, 0.010000, 0.010000), r12.yyyz
          if_nz r25.z
            div r24.xyz, r24.xyzx, r25.xxxx
            sample_l_indexable(texture2d)(float,float,float,float) r26.xyz, r23.xyxx, t1.xyzw, s1, l(0.000000)
            mad r26.xyz, r26.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
            dp3 r27.x, r24.xyzx, cb0[8].xyzx
            dp3 r27.y, r24.xyzx, cb0[9].xyzx
            dp3 r27.z, r24.xyzx, cb0[10].xyzx
            dp3 r9.z, r26.xyzx, r27.xyzx
            mad_sat r9.z, r9.z, cb0[163].x, l(1.000000)
            mul r9.z, r9.z, r12.y
			
			//mad r1.z, r40.x, l(0.5), r1.z
			
            mad r23.xy, r1.zwzz, cb0[21].zwzz, r23.xyxx
            sample_l_indexable(texture2d)(float,float,float,float) r24.xyz, r23.xyxx, t6.xyzw, s0, r18.w
            mul r24.xyz, r9.zzzz, r24.xyzx
          else
            mov r24.xyz, l(0,0,0,0)
          endif
          add r24.xyz, r19.xyzx, r24.xyzx
          if_nz r25.w
            div r22.xyz, r22.xyzx, r25.yyyy
            sample_l_indexable(texture2d)(float,float,float,float) r25.xyz, r23.zwzz, t1.xyzw, s1, l(0.000000)
            mad r25.xyz, r25.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
            dp3 r26.x, r22.xyzx, cb0[8].xyzx
            dp3 r26.y, r22.xyzx, cb0[9].xyzx
            dp3 r26.z, r22.xyzx, cb0[10].xyzx
            dp3 r9.z, r25.xyzx, r26.xyzx
            mad_sat r9.z, r9.z, cb0[163].x, l(1.000000)
            mul r9.z, r9.z, r12.z
			
			//mad r1.z, r40.x, l(0.5), r1.z
			
            mad r12.yz, r1.zzwz, cb0[21].zzwz, r23.zzwz
            sample_l_indexable(texture2d)(float,float,float,float) r22.xyz, r12.yzyy, t6.xyzw, s0, r18.w
            mul r22.xyz, r9.zzzz, r22.xyzx
          else
            mov r22.xyz, l(0,0,0,0)
          endif
          add r19.xyz, r22.xyzx, r24.xyzx
          add r15.w, r15.w, cb0[165].y
        endloop
        mov r15.xyz, r19.xyzx
        mad r12.yz, |r20.xxyx|, l(0.000000, -0.156583, -0.156583, 0.000000), l(0.000000, 1.57079637, 1.57079637, 0.000000)
        add r16.xy, -|r20.xyxx|, l(1.000000, 1.000000, 0.000000, 0.000000)
        sqrt r16.xy, r16.xyxx
        mul r16.zw, r12.yyyz, r16.xxxy
        ge r22.xy, r20.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
        mad r12.yz, -r12.yyzy, r16.xxyx, l(0.000000, 3.14159274, 3.14159274, 0.000000)
        movc r12.yz, r22.xxyx, r16.zzwz, r12.yyzy
        add r9.z, -r20.x, -r20.y
        add r9.z, r11.w, r9.z
        add r11.w, r9.z, l(2.000000)
        add r9.z, -r12.z, r12.y
        mad r9.z, r9.z, l(0.500000), -r14.w
        mul r9.z, r9.z, cb0[162].y
        max r9.z, r9.z, l(-1.57079637)
        min r9.z, r9.z, l(1.57079637)
        mad r9.z, r11.z, r13.y, r9.z
        sincos r16.x, r22.x, r9.z
        mul r16.yzw, r7.xxyz, r22.xxxx
        mad r16.xyz, r17.xyzx, r16.xxxx, r16.yzwy
        mad r16.xyz, r16.xyzx, r11.xxxx, r18.xyzx
        add r14.xyz, r14.xyzx, r16.xyzx
        sample_l_indexable(texture2d)(float,float,float,float) r11.xz, r21.xyxx, t4.xzyw, s0, l(0.000000)
		
		//mad r11.x, r40.x, l(0.5), r11.x
		
        mad r11.xz, r11.xxzx, cb0[21].zzwz, -r5.xxyx
        sample_l_indexable(texture2d)(float,float,float,float) r12.yz, r21.zwzz, t4.zxyw, s0, l(0.000000)
		
		//mad r12.y, r40.x, l(0.5), r12.y
		
        mad r12.yz, r12.yyzy, cb0[21].zzwz, -r5.xxyx
        mul r11.xz, r9.xxyx, r11.xxzx
        dp2 r9.z, r11.xzxx, r11.xzxx
        sqrt r9.z, r9.z
        mul r9.z, r20.z, r9.z
        max r9.z, r9.z, r13.x
        mul r11.xz, r9.xxyx, r12.yyzy
        dp2 r11.x, r11.xzxx, r11.xzxx
        sqrt r11.x, r11.x
        mul r11.x, r20.w, r11.x
        max r13.x, r9.z, r11.x
        add r10.w, r10.w, cb0[165].x
      endloop
      mul r1.z, l(0.500000), cb0[165].x
      mul r1.w, r1.z, r11.w
      mul r5.z, r1.z, cb0[163].y
      mul r7.xyz, r5.zzzz, r15.xyzx
      mov_sat r1.w, r1.w
      mad_sat r1.z, -r11.w, r1.z, l(1.000000)
      mul r1.z, r1.z, cb0[162].w
      log r1.z, r1.z
      mul r1.z, r1.z, cb0[162].z
      exp r1.z, r1.z
      add r1.z, -r1.z, l(1.000000)
      movc r1.z, cb0[22].w, r1.w, r1.z
      mul_sat r5.zw, r13.xxxx, cb0[164].zzzw
      add r1.w, -r1.z, l(1.000000)
      mad r1.z, r5.w, r1.w, r1.z
      add r6.xyz, r6.xyzx, -r14.xyzx
      mad r6.xyz, r5.wwww, r6.xyzx, r14.xyzx
      dp3 r1.w, r6.xyzx, r6.xyzx
      rsq r1.w, r1.w
      mul r6.xyz, r1.wwww, r6.xyzx
    else
      mov r6.xyz, l(0,1.000000,0,0)
      mov r7.xyz, l(0,0,0,0)
      mov r1.z, l(1.000000)
      mov r5.z, l(0)
    endif
    min r1.z, r1.z, l(1.000000)
    dp3 r8.x, r6.xyzx, cb0[8].xyzx
    dp3 r8.y, r6.xyzx, cb0[9].xyzx
    dp3 r8.z, r6.xyzx, cb0[10].xyzx
    mad r5.xy, r0.zwzz, cb0[3].zwzz, r5.xyxx
	
	//mad r5.x, r40.x, l(-0.5), r5.x
	
    mad r6.xyzw, r5.xyxy, cb0[3].xyxy, l(-0.500000, 0.500000, 0.500000, 0.500000)
    ftoi r9.xyzw, r6.zwxy
    mov r10.xy, r9.zwzz
    mov r10.zw, l(0,0,0,0)
    ld_indexable(texture2d)(uint,uint,uint,uint) r6.xy, r10.xyzw, t2.xyzw
    ushr r10.xy, r6.xyxx, l(24, 24, 0, 0)
    utof r10.xy, r10.xyxx
    mul r1.w, r10.x, l(0.00392156886)
    f16tof32 r5.w, r6.x
    ubfe r10.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), r6.yyyy
    utof r11.xy, r10.xzxx
    and r6.x, r6.y, l(255)
    utof r11.z, r6.x
    mad r10.xzw, r11.xxyz, l(0.00787401572, 0.000000, 0.00787401572, 0.00787401572), l(-1.000000, 0.000000, -1.000000, -1.000000)
    add r6.x, -r10.y, l(15.000000)
    mov r9.zw, l(0,0,0,0)
    ld_indexable(texture2d)(uint,uint,uint,uint) r9.xy, r9.xyzw, t2.xyzw
    ushr r9.zw, r9.xxxy, l(0, 0, 24, 24)
    utof r9.zw, r9.zzzw
    mul r6.y, r9.z, l(0.00392156886)
    f16tof32 r7.w, r9.x
    ubfe r9.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), r9.yyyy
    utof r11.xy, r9.xzxx
    and r8.w, r9.y, l(255)
    utof r11.z, r8.w
    mad r9.xyz, r11.xyzx, l(0.00787401572, 0.00787401572, 0.00787401572, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
    add r8.w, -r9.w, l(15.000000)
    mad r11.xyzw, r5.xyxy, cb0[3].xyxy, l(0.500000, -0.500000, -0.500000, -0.500000)
    ftoi r11.xyzw, r11.zwxy
    mov r12.xy, r11.zwzz
    mov r12.zw, l(0,0,0,0)
    ld_indexable(texture2d)(uint,uint,uint,uint) r12.xy, r12.xyzw, t2.xyzw
    ushr r12.zw, r12.xxxy, l(0, 0, 24, 24)
    utof r12.zw, r12.zzzw
    mul r9.w, r12.z, l(0.00392156886)
    f16tof32 r10.y, r12.x
    ubfe r12.xz, l(8, 0, 8, 0), l(16, 0, 8, 0), r12.yyyy
    utof r13.xy, r12.xzxx
    and r12.x, r12.y, l(255)
    utof r13.z, r12.x
    mad r12.xyz, r13.xyzx, l(0.00787401572, 0.00787401572, 0.00787401572, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
    add r12.w, -r12.w, l(15.000000)
    mov r11.zw, l(0,0,0,0)
    ld_indexable(texture2d)(uint,uint,uint,uint) r11.xy, r11.xyzw, t2.xyzw
    ushr r11.zw, r11.xxxy, l(0, 0, 24, 24)
    utof r11.zw, r11.zzzw
    mul r11.z, r11.z, l(0.00392156886)
    f16tof32 r11.x, r11.x
    ubfe r13.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), r11.yyyy
    utof r13.xy, r13.xyxx
    and r11.y, r11.y, l(255)
    utof r13.z, r11.y
    mad r13.xyz, r13.xyzx, l(0.00787401572, 0.00787401572, 0.00787401572, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
    add r11.y, -r11.w, l(15.000000)
    frc r14.xy, r6.zwzz
    add r14.zw, -r14.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
    mul r14.xyzw, r14.wwyy, r14.zxzx
    mul r6.y, r6.y, r14.w
    mad r1.w, r1.w, r14.z, r6.y
    mad r1.w, r9.w, r14.y, r1.w
    mad r1.w, r11.z, r14.x, r1.w
    mul r6.y, r7.w, r14.w
    mad r5.w, r5.w, r14.z, r6.y
    mad r5.w, r10.y, r14.y, r5.w
    mad r5.w, r11.x, r14.x, r5.w
    mul r6.yzw, r9.xxyz, r14.wwww
    mad r6.yzw, r10.xxzw, r14.zzzz, r6.yyzw
    mad r6.yzw, r12.xxyz, r14.yyyy, r6.yyzw
    mad r6.yzw, r13.xxyz, r14.xxxx, r6.yyzw
    dp3 r7.w, r6.yzwy, r6.yzwy
    rsq r7.w, r7.w
    mul r8.w, r8.w, r14.w
    mad r6.x, r6.x, r14.z, r8.w
    mad r6.x, r12.w, r14.y, r6.x
    mad r6.x, r11.y, r14.x, r6.x
    mov r3.w, l(1.000000)
    dp4 r3.w, cb0[2].xyzw, r3.xyzw
    add r3.w, -r5.w, r3.w
    mad r3.w, r2.z, l(-0.060000), |r3.w|
    max r3.w, r3.w, l(0.000000)
    mul r3.w, r3.w, l(200.000000)
    min r3.w, r3.w, l(1.000000)
    add r3.w, -r3.w, l(1.000000)
    mad r5.z, -r3.w, r5.z, r3.w
    mul r5.z, r5.z, r6.x
    round_pi r5.z, r5.z
    add r5.z, r5.z, l(1.000000)
    rcp r5.w, r5.z
    add r5.w, -r5.w, l(1.000000)
    min r5.w, r5.w, l(0.800000)
    add r1.w, -r1.z, r1.w
    mad r1.z, r5.w, r1.w, r1.z
    mad r6.xyz, r6.yzwy, r7.wwww, -r8.xyzx
    mad r6.xyz, r5.wwww, r6.xyzx, r8.xyzx
    dp3 r1.w, r6.xyzx, r6.xyzx
    rsq r1.w, r1.w
    mul r6.xyz, r1.wwww, r6.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r8.xyz, r5.xyxx, t3.xyzw, s0, l(0.000000)
    mul r9.xyz, r3.wwww, r7.xyzx
    mad r7.xyz, -r7.xyzx, r3.wwww, r8.xyzx
    mad r5.xyw, r5.wwww, r7.xyxz, r9.xyxz
    max r5.xyw, r5.xyxw, l(0.000000, 0.000000, 0.000000, 0.000000)
    mov r1.w, r3.z
  else
    mov r1.zw, l(0,0,1.000000,0)
    mov r6.xyz, l(0,1.000000,0,0)
    mov r5.xyzw, l(0,0,15.000000,0)
  endif
  if_nz cb0[22].w
    mov_sat r1.z, r1.z
    mul r3.w, r1.z, l(255.000000)
    ftoi r3.w, r3.w
    mov_sat r0.x, r0.x
    mul r6.w, r0.x, l(255.000000)
    ftoi r6.w, r6.w
    ishl r6.w, r6.w, l(16)
    imad r3.w, r3.w, l(0x01000000), r6.w
    f32tof16 r6.w, r1.w
    iadd r7.x, r3.w, r6.w
    mad_sat r6.xyz, r6.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
    mul r6.xyz, r6.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
    ftoi r6.xyz, r6.xyzx
    ishl r3.w, r6.y, l(8)
    imad r3.w, r6.x, l(0x00010000), r3.w
    iadd r3.w, r3.w, r6.z
    min r6.x, r5.z, l(15.000000)
    add r6.x, -r6.x, l(15.000000)
    ftou r6.x, r6.x
    bfi r7.y, l(8), l(24), r6.x, r3.w
  else
    mov_sat r1.z, r1.z
    mul r1.z, r1.z, l(255.000000)
    ftoi r1.z, r1.z
    mov_sat r0.x, r0.x
    mul r0.x, r0.x, l(255.000000)
    ftoi r0.x, r0.x
    ishl r0.x, r0.x, l(16)
    imad r0.x, r1.z, l(0x01000000), r0.x
    f32tof16 r1.z, r1.w
    iadd r7.x, r0.x, r1.z
    min r0.x, r5.z, l(15.000000)
    add r0.x, -r0.x, l(15.000000)
    ftou r0.x, r0.x
    bfi r7.y, l(8), l(24), r0.x, l(0x007fff7f)
  endif
  store_uav_typed u8.xyzw, r1.xyyy, r7.xyyy
  if_nz cb0[23].x
    store_uav_typed u9.xyzw, r1.xyyy, r5.xywx
  endif
  ine r0.x, l(0), cb0[24].x
  and r0.x, r0.y, r0.x
  if_nz r0.x
    and r5.xy, r1.xyxx, l(63, 63, 0, 0)
    and r5.z, l(7), cb0[20].z
    mov r5.w, l(0)
    ld_indexable(texture2darray)(float,float,float,float) r0.x, r5.xyzw, t12.xyzw
    utof r0.y, cb0[25].w
    mul r0.y, r0.x, r0.y
    ftou r0.y, r0.y
	
	//mad r3.x, -r40.x, r3.z, r3.x
	
    dp3 r5.x, r3.xyzx, cb0[8].xyzx
    dp3 r5.y, r3.xyzx, cb0[9].xyzx
    dp3 r5.z, r3.xyzx, cb0[10].xyzx
    dp3 r1.z, r5.xyzx, r5.xyzx
    rsq r1.z, r1.z
    mul r3.xyz, r1.zzzz, r5.xyzx
    add r1.z, -r4.w, l(1.000000)
    mul r1.z, r1.z, r1.z
    max r1.z, r1.z, l(0.001000)
    mul r1.w, r1.z, r1.z
    mad r1.z, r1.z, r1.z, l(-1.000000)
    mov r5.z, -r4.x
    ge r3.w, r4.z, l(0.000000)
    movc r6.xy, r3.wwww, l(1.000000,-1.000000,0,0), l(-1.000000,1.000000,0,0)
    add r3.w, |r4.z|, l(1.000000)
    div r3.w, r4.y, r3.w
    mul r4.w, r3.w, r4.y
    mul r7.x, r3.w, r5.z
    mad r5.x, r6.x, r4.w, r4.z
    mul r5.y, r6.x, r7.x
    mad r7.y, -r4.y, r3.w, l(1.000000)
    mul r7.z, r4.y, r6.y
    add r0.x, r0.x, l(0.500000)
    mov_sat r6.xy, r2.xyxx
    min r3.w, r2.z, l(100.000000)
    max r6.z, r3.w, l(0.100000)
    ne r6.xyz, r2.xyzx, r6.xyzx
    or r3.w, r6.y, r6.x
    or r3.w, r6.z, r3.w
    mad r0.zw, r30.zzzw, cb0[3].zzzw, l(0.000000, 0.000000, -0.500000, -0.500000)
    rcp r2.w, r2.z
	
	mov r32.xyzw, r2.xyzw
	mad r32.x, r40.x, l(-0.5), r32.x
	
    utof r4.w, cb0[24].w
    mov r6.y, l(0)
    mov r8.xyzw, l(0,0,0,0)
    mov r9.xyz, l(0,0,0,0)
    mov r5.w, l(0)
    mov r6.z, l(0)
    mov r6.w, r0.y
    mov r7.w, l(0)
    loop
      uge r9.w, r7.w, cb0[24].y
      breakc_nz r9.w
      mov r11.xyz, l(0,0,0,0)
      mov r9.w, r6.w
      mov r10.xyzw, l(0,0,0,0)
      loop
        ige r11.w, r10.w, l(4)
        breakc_nz r11.w
        and r11.w, r9.w, cb0[26].x
        ld_structured_indexable(structured_buffer, stride=16)(mixed,mixed,mixed,mixed) r12.xyz, r11.w, l(0), t10.xyzx
        mul r12.xyw, r12.xyxz, l(1.000000, 1.000000, 0.000000, 0.700000)
		
		//mad r12.x, r40.x, l(1.0), r12.x
		
        mad r11.w, -r12.z, l(0.700000), l(1.000000)
        mad r12.z, r1.z, r12.w, l(1.000000)
        div r11.w, r11.w, r12.z
        sqrt r12.z, r11.w
        add r11.w, -r11.w, l(1.000000)
        sqrt r11.w, r11.w
        mul r12.xy, r12.xyxx, r11.wwww
		
		//mad r12.x, r40.x, r11.w, r12.x
		
        mul r13.xyz, r7.xyzx, r12.yyyy
        mad r12.xyw, r5.xyxz, r12.xxxx, r13.xyxz
        mad r12.xyz, r4.xyzx, r12.zzzz, r12.xywx
        dp3 r11.w, r3.xyzx, r12.xyzx
        add r11.w, r11.w, r11.w
        mad r13.xyz, r12.xyzx, -r11.wwww, r3.xyzx
        imad r11.w, l(0x000343fd), r9.w, l(0x00269ec3)
        dp3 r12.w, r13.xyzx, r4.xyzx
        lt r12.w, l(0.000000), r12.w
        if_nz r12.w
          mov r10.xyz, r12.xyzx
          mov r11.xyz, r13.xyzx
          mov r9.w, r11.w
          break
        endif
        iadd r10.w, r10.w, l(1)
        mov r10.xyz, r12.xyzx
        mov r11.xyz, r13.xyzx
        mov r9.w, r11.w
      endloop
      mov r6.w, r9.w
      dp3_sat r10.w, r4.xyzx, r11.xyzx
      lt r11.w, l(0.000000), r10.w
      if_nz r11.w
        if_z r3.w
		  
		  //mad r11.x, r40.x, r11.z, r11.x
		  
          dp3 r12.z, r11.xyzx, cb0[18].xyzx
          lt r11.w, r12.z, l(0.000000)
          movc r11.w, cb0[25].y, r11.w, l(-1)
          if_nz r11.w
            dp3 r13.x, r11.xyzx, cb0[16].xyzx
            dp3 r13.y, r11.xyzx, cb0[17].xyzx
            mad r13.xy, r0.zwzz, r12.zzzz, r13.xyxx
            mul r12.xy, r2.zzzz, r13.xyxx
			
			//mad r12.x, r40.x, r12.z, r12.x
			
            mul r13.xy, r12.xyxx, cb0[3].xyxx
            max r11.w, |r13.y|, |r13.x|
            rcp r11.w, r11.w
			
			//mad r13.x, r40.x, r11.w, r13.x
			
            mul r13.xyz, r11.wwww, r12.xyzx
			
			//mad r13.x, r40.x, r11.w, r13.x
			
			
			
            mad r12.xyz, r12.xyzx, r11.wwww, r2.xywx
            mul r14.xyz, r13.xyzx, cb0[25].xxxx
            mad r12.xyz, r14.xyzx, r0.xxxx, r12.xyzx
            rcp r15.xyz, r14.xyzx
            lt r16.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r15.xyzx
            add r17.xyz, -r12.xyzx, l(1.000000, 1.000000, 10.000000, 0.000000)
            max r17.xyz, r17.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
            mul r17.xyz, r15.xyzx, r17.xyzx
            ftou r17.xyz, r17.xyzx
            add r18.xyz, r12.xyzx, l(-0.000000, -0.000000, -0.010000, 0.000000)
            max r18.xyz, r18.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
            mul r15.xyz, -r15.xyzx, r18.xyzx
            ftou r15.xyz, r15.xyzx
            movc r15.xyz, r16.xyzx, r17.xyzx, r15.xyzx
            utof r15.xyz, r15.xyzx
            min r11.w, r4.w, r15.y
            min r11.w, r11.w, r15.x
            min r11.w, r15.z, r11.w
            ftou r11.w, r11.w
            iadd r11.w, r11.w, l(3)
            ushr r11.w, r11.w, l(2)
			
			//mad r2.x, r40.x, l(-0.5), r2.x
			//mad r12.x, r40.x, l(0.5), r12.x
			
            mov r15.xy, r2.xyxx
            mov r15.z, l(0)
            mov r6.x, l(0)
            mov r16.xyz, r12.xyzx
			
			mad r16.x, r40.x, l(0.5), r16.x
			mad r15.x, r40.x, l(0.5), r15.x
			
            mov r12.w, r11.w
            loop
              breakc_z r12.w
              iadd r12.w, r12.w, l(-1)
			  
			  
			  
              sample_l_indexable(texture2d)(float,float,float,float) r13.w, r16.xyxx, t0.yzwx, s1, l(0.000000)
			  
			  
			  
              mul r13.w, r16.z, r13.w
			  
			  //mad r16.x, r40.x, r13.w, r16.x
			  
              mad r14.w, -cb0[25].z, r16.z, l(1.000000)
              min r15.w, r14.w, l(0.990000)
              max r14.w, r14.w, l(0.990000)
              min r14.w, r13.w, r14.w
              max r14.w, r14.w, r15.w
              eq r13.w, r13.w, r14.w
              not r14.w, r6.x
              and r13.w, r13.w, r14.w
              movc r17.xy, r13.wwww, l(-1,0,0,0), r6.xyxx
              mad r17.zw, r13.xxxy, cb0[25].xxxx, r16.xxxy
              sample_l_indexable(texture2d)(float,float,float,float) r13.w, r17.zwzz, t0.yzwx, s1, l(0.000000)
              mad r14.w, r13.z, cb0[25].x, r16.z
              mul r13.w, r13.w, r14.w
              mad r14.w, -cb0[25].z, r14.w, l(1.000000)
              min r15.w, r14.w, l(0.990000)
              max r14.w, r14.w, l(0.990000)
              min r14.w, r13.w, r14.w
              max r14.w, r14.w, r15.w
              eq r13.w, r13.w, r14.w
              not r14.w, r17.x
              and r13.w, r13.w, r14.w
              movc r17.xy, r13.wwww, l(-1,1,0,0), r17.xyxx
              mad r17.zw, r14.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), r16.xxxy
              sample_l_indexable(texture2d)(float,float,float,float) r13.w, r17.zwzz, t0.yzwx, s1, l(0.000000)
              mad r14.w, r14.z, l(2.000000), r16.z
              mul r13.w, r13.w, r14.w
              mad r14.w, -cb0[25].z, r14.w, l(1.000000)
              min r15.w, r14.w, l(0.990000)
              max r14.w, r14.w, l(0.990000)
              min r14.w, r13.w, r14.w
              max r14.w, r14.w, r15.w
              eq r13.w, r13.w, r14.w
              not r14.w, r17.x
              and r13.w, r13.w, r14.w
              movc r17.xy, r13.wwww, l(-1,2,0,0), r17.xyxx
              mad r17.zw, r14.xxxy, l(0.000000, 0.000000, 3.000000, 3.000000), r16.xxxy
              sample_l_indexable(texture2d)(float,float,float,float) r13.w, r17.zwzz, t0.yzwx, s1, l(0.000000)
              mad r14.w, r14.z, l(3.000000), r16.z
              mul r13.w, r13.w, r14.w
              mad r14.w, -cb0[25].z, r14.w, l(1.000000)
              min r15.w, r14.w, l(0.990000)
              max r14.w, r14.w, l(0.990000)
              min r14.w, r13.w, r14.w
              max r14.w, r14.w, r15.w
              eq r13.w, r13.w, r14.w
              not r14.w, r17.x
              and r13.w, r13.w, r14.w
              movc r17.xy, r13.wwww, l(-1,3,0,0), r17.xyxx
              if_nz r17.x
                utof r13.w, r17.y
                mad r18.xy, r13.wwww, r14.xyxx, r16.xyxx
				
				//mad r18.x, r40.x, r13.w, r18.x
				
                mad r18.z, r13.w, r14.z, r16.z
                mov r6.x, l(-1)
                mov r15.xyz, r18.xyzx
                break
              endif
              mad r16.xyz, r14.xyzx, l(4.000000, 4.000000, 4.000000, 0.000000), r16.xyzx
              mov r6.x, r17.x
            endloop
            movc r12.xyz, r6.xxxx, r15.xyzx, r16.xyzx
            rcp r13.z, r12.z
          else
            mov r12.xy, r2.xyxx
            mov r13.z, l(0)
            mov r6.x, l(0)
          endif
        else
          mov r12.xy, r2.xyxx
          mov r13.z, l(0)
          mov r6.x, l(0)
        endif
        lt r11.w, l(96.000000), r13.z
        or r11.w, r6.x, r11.w
        if_nz r11.w
		  
		  //mad r12.x, r40.x, l(-0.5), r12.x
		  
          mov_sat r12.zw, r12.xxxy
          mad r12.zw, r12.zzzw, l(0.000000, 0.000000, 2.000000, -2.000000), l(0.000000, 0.000000, -1.000000, 1.000000)
          mul r13.xy, r13.zzzz, r12.zwzz
          dp3 r14.x, r13.xyzx, cb0[12].xyzx
          dp3 r14.y, r13.xyzx, cb0[13].xyzx
          dp3 r14.z, r13.xyzx, cb0[14].xyzx
          sample_l_indexable(texture2d)(float,float,float,float) r12.zw, r12.xyxx, t4.zwxy, s0, l(0.000000)
		  
		  //Fix here.
		  //mad r12.z, r40.x, l(0.5), r12.z
		  
          mad r12.xy, r12.zwzz, cb0[21].zwzz, r12.xyxx
          sample_l_indexable(texture2d)(float,float,float,float) r12.xyz, r12.xyxx, t5.xyzw, s0, l(0.000000)
          max r11.w, r12.z, r12.y
          max r11.w, r11.w, r12.x
          add r11.w, -r11.w, l(1.000000)
          rcp r11.w, r11.w
          mul r12.xyz, r11.wwww, r12.xyzx
          max r12.xyz, r12.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
          add r9.xyz, r9.xyzx, r12.xyzx
          add r6.z, r6.z, l(1.000000)
          dp3 r11.w, r4.xyzx, r10.xyzx
          mul r11.w, r11.w, r11.w
          mad r11.w, r11.w, r1.z, l(1.000000)
          mul r11.w, r11.w, r11.w
          div r11.w, r1.w, r11.w
          mul r10.w, r10.w, r11.w
          ge r11.w, r10.w, r5.w
          rcp r14.w, r10.w
          movc r8.xyzw, r11.wwww, r14.xyzw, r8.xyzw
          movc r5.w, r11.w, r10.w, r5.w
        endif
      endif
      iadd r7.w, r7.w, l(1)
    endloop
    max r0.x, r6.z, l(1.000000)
    rcp r0.x, r0.x
    mul r0.xyz, r0.xxxx, r9.xyzx
  else
    mov r8.xyzw, l(0,0,0,0)
    mov r0.xyz, l(0,0,0,0)
  endif
  store_uav_typed u10.xyzw, r1.xyyy, r0.xyzx
  store_uav_typed u11.xyzw, r1.xyyy, r8.xyzw
endif
ret
// Approximately 845 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sun Jan 16 18:31:35 2022
//
// cbuffer ConstBuf__passData : register(b0)
// {
//
//   struct
//   {
//     float4 g_ReprojectInfoFromUV;
//     float4 g_ReprojectInfoHalfResFromInt;
//     float4 g_ReprojectPosToPrevDepth;
//     float4 g_ScreenSize;
//     float4x4 g_ViewMatrix;
//     float4x4 g_InvViewMatrix;
//     float4x4 g_InvProjNoZReproj;
//     float4x4 g_DirectionProjectionMatrix;
//     float g_ssaoTemporalSharpness;
//     float g_ssaoTemporalConvergence;
//     uint g_SSAOPhase;
//     float g_SSAOStrength;
//     float g_SSAOExponent;
//     float g_CapsuleStrength;
//     float2 g_MVDecompress;
//     float g_CapsuleDistanceAttenuationAmbientInv;
//     float g_CapsuleDistanceAttenuationShadowsInv;
//     uint g_EnableSSAO;
//     uint g_EnableSSDO;
//     uint g_EnableSSGI;
//     uint g_EnableCapsuleAO;
//     uint g_EnableCapsuleDir;
//     uint g_TilesHorz;
//     uint g_EnableSSR;
//     uint g_ssrNumSamples;
//     float g_MinGloss;
//     uint g_NumSteps;
//     float g_RayAcceleration;
//     uint g_KillFrontFacingRays;
//     float g_Thickness;
//     uint g_StochasticSampleCount;
//     uint g_StochasticSampleCountMinusOne;
//     uint g_NumCapsuleShadows;
//     float4 g_CapsuleShadowsPositions[4];
//
//     struct
//     {
//       float3 g_SkySHDirection;
//       float g_SkySHDirectionality;
//       float4 g_AOCapsules[128];
//       int g_numAOSpheres;
//     } g_capsuleAOParameters;
//
//
//     struct
//     {
//       float maxDepth;
//       float radius;
//       float radiusMin;
//       float radiusMax;
//       float mipFactor;
//       float bendStrength;
//       float falloff;
//       float intensity;
//       float ssgiBackfaceFactor;
//       float ssgiIntensity;
//       float rotationalJitter;
//       float offsetJitter;
//       float projectionScale;
//       float aspectRatio;
//       float deghostStrength;
//       float deghostFadeStrength;
//       float rotationStepsRcp;
//       float offsetStepsRcp;
//     } g_gtaoConfig;
//
//   } resourceTables__passData : packoffset(c0);
//
//
// SamplerState resourceTables__passData__smpLinearClamp_s : register(s0);
// SamplerState resourceTables__passData__smpPointClamp_s : register(s1);
// Texture2D<float> resourceTables__passData.InputTextureLinearDepth : register(t0);
// Texture2D<float4> resourceTables__passData.InputTextureNormals : register(t1);
// Texture2D<uint2> resourceTables__passData.InputTextureSSAO : register(t2);
// Texture2D<float3> resourceTables__passData.InputTextureSSGI : register(t3);
// Texture2D<float2> resourceTables__passData.InputTextureMotion : register(t4);
// Texture2D<float4> resourceTables__passData.InputColorPrevFrame : register(t5);
// Texture2D<float4> resourceTables__passData.InputRadiancePrevFrame : register(t6);
// StructuredBuffer<uint> resourceTables__passData.texLights : register(t8);
// StructuredBuffer<float4> resourceTables__passData.stochasticSamples : register(t10);
// Texture2D<float> resourceTables__passData.SphereAOLUT : register(t11);
// Texture2DArray<float> resourceTables__passData.BlueNoiseTexture : register(t12);
// RWTexture2D<uint2> resourceTables__passData.OutSSAO : register(u8);
// RWTexture2D<float3> resourceTables__passData.OutSSGI : register(u9);
// RWTexture2D<float3> resourceTables__passData.OutSSRColor : register(u10);
// RWTexture2D<float4> resourceTables__passData.OutSSRRayInfo : register(u11);
// RWTexture2DArray<float> resourceTables__passData.OutCapsuleShadows : register(u12);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   Textures: = t0-t12 + ;
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (uint,uint,uint,uint) u8
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (float,float,float,float) u9
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (float,float,float,float) u10
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2d (float,float,float,float) u11
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture2darray (float,float,float,float) u12
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   float4 x0[4];
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   uiDest.x = asuint(cb1[0].x) / ;
//   vThreadGroupID.x = asuint(cb1[0].x) % ;
//   r0.x = uiDest.x;
//   r2.x = (int)r0.x * (int11)resourceTables__passData.g_TilesHorz;
//   null.y = 3[r0.y].val[r0.x/4];
//   stride=4)(mixed = (int)r0.y & (int)r0.y;
//   r0.z = (uint)r0.y >> 0x00100000;
//   r1.yz = (int2)vThreadIDInGroupFlattened.xx & int2(2,3);
//   r1.yz = (int2)r1.yz ^ int2(4,4);
//   r0.w = (uint)r1.y << (int)r1.z;
//   r1.z = (uint)vThreadIDInGroupFlattened.x >> 1;
//   bitmask.z = ((~(-1 << 0)) << r1.z) & 0xffffffff;  r1.z = (((uint) << r1.z) & bitmask.z) | ((uint) & ~bitmask.z);
//   bitmask.w = ((~(-1 << 0)) << r1.z) & 0xffffffff;  r1.w = (((uint) << r1.z) & bitmask.w) | ((uint) & ~bitmask.w);
//   bitmask.x = ((~(-1 << 2)) << 0) & 0xffffffff;  r3.x = (((uint)r1.z << 0) & bitmask.x) | ((uint)r0.w & ~bitmask.x);
//   r3.y = 2;
//   bitmask.y = ((~(-1 << r1.x)) << ) & 0xffffffff;  r2.y = (((uint) << ) & bitmask.y) | ((uint) & ~bitmask.y);
//   if (r1.x != 0) {
//   // No code for instruction (needs manual fix):
//   if_nz r0.z
//   // No code for instruction (needs manual fix):
//     store_uav_typed u10.xyzw, r1.xyyy, l(0,0,0,0)
//   // No code for instruction (needs manual fix):
//     store_uav_typed u11.xyzw, r1.xyyy, l(0,0,0,0)
//     if (u8.x != 0) {
//     // No code for instruction (needs manual fix):
//       if_nz cb0[23].x
//     }
//   }
//   if ( == 0) {
//     r0.z =  & ;
//     r0.y = cmp((int)r0.y != 0x01000000);
//     r0.y = (int)r0.y;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// error X3506: unrecognized compiler target '                                        // Textures:  t0-t12'
/////////////////////////////////////////////////////////////////////////////
