// Orange Crystal [ShaderRegex\ShaderFixes\BL3_fix.ini\_Multiple_Effects][ShaderRegex\ShaderFixes\BL3_fix.ini\_Multiple_Effects2_Scopes]
// No fix needed
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Fri Sep 18 00:12:44 2020
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                10   xyzw        0     NONE   float
// TEXCOORD                11   xyzw        1     NONE   float
// TEXCOORD                 1   xyzw        2     NONE   float   xyzw
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xy
// GBX_VERTEX_FOG           0   xyzw        5     NONE   float      w
// SV_Position              0   xyzw        6      POS   float   xyzw
// SV_IsFrontFace           0   x           7    FFACE    uint
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[199], immediateIndexed
dcl_constantbuffer cb1[10], immediateIndexed
dcl_constantbuffer cb2[95], immediateIndexed
dcl_constantbuffer cb3[4], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture3d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_input_ps constant v2.xyzw
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xy
dcl_input_ps linear v5.w
dcl_input_ps_siv linear noperspective v6.xyzw, position
dcl_output o0.xyzw
dcl_temps 18
dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120
add r0.xyzw, v6.xyxy, -cb0[138].xyxy
mul r1.xyzw, r0.xyzw, cb0[139].zwzw
mad r0.xy, r0.zwzz, cb0[139].zwzz, l(-0.500000, -0.500000, 0.000000, 0.000000)
mul r0.xy, r0.xyxx, v6.wwww
mov r0.z, v6.w
mul r2.xyzw, v6.yyyy, cb0[45].xyzw
mad r2.xyzw, v6.xxxx, cb0[44].xyzw, r2.xyzw
mad r2.xyzw, v6.zzzz, cb0[46].xyzw, r2.xyzw
add r2.xyzw, r2.xyzw, cb0[47].xyzw

// // Multiple Effects Fix by DJ-RK
// ld_indexable(texture2d)(float,float,float,float) r12.xyzw, l(0, 0, 0, 0), t125.xyzw
// ld_indexable(texture1d)(float,float,float,float) r10.xyzw, l(0, 0, 0, 0), t120.xyzw
// // Multiple Effects - Transform world to clip
// div r13.xyz, r2.xyzx, r2.wwww
// mov r13.w, l(1.0)
// mul r14.xyzw, r13.yyyy, cb0[1].xyzw
// mad r14.xyzw, r13.xxxx, cb0[0].xyzw, r14.xyzw
// mad r14.xyzw, r13.zzzz, cb0[2].xyzw, r14.xyzw
// add r14.xyzw, r14.xyzw, cb0[3].xyzw
// // Multiple Effects - Standard Variant - Standard Stereo Fix
// add r12.w, r14.w, -r12.y
// // mul r12.w, r12.w, r10.w
// mov r14.xyzw, l(0,0,0,0)
// mad r14.x, r12.w, -r12.x, r14.x
// //  Multiple Effects - Transform from clip to world
// mul r13.xyzw, r14.xxxx, cb0[40].xyzw

div r2.xyz, r2.xyzx, r2.wwww

// //  Multiple Effects - Store original value of r2 into r14 for later use
// add r14.xyz, r2.xyzx, -cb0[71].xyzx
// //  Multiple Effects - Add stereo correction to r2
// add r2.xyz, r2.xyz, r13.xyzx

add r2.xyz, r2.xyzx, -cb0[71].xyzx


mad r3.xy, r1.zwzz, cb0[139].xyxx, cb0[138].xyxx
mul r3.xy, r3.xyxx, cb0[140].zwzz
max r3.xy, r3.xyxx, cb0[141].xyxx
min r3.xy, r3.xyxx, cb0[141].zwzz

// // ShaderRegex_Multiple_Effects2_Scopes
// ld_indexable(texture2d)(float,float,float,float) r17.xyzw, l(0, 0, 0, 0), t125.xyzw
// ld_indexable(texture1d)(float,float,float,float) r16.xyzw, l(0, 0, 0, 0), t120.xyzw
// mad r3.x, l(0.5), r17.x, r3.x

sample_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyxx, t2.xyzw, s1
mul r3.xyz, r3.xyzx, r3.xyzx
mul r3.xyz, r3.xyzx, r3.xyzx
mul r3.xyz, r3.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000)
mad r4.xyzw, v4.xyxy, l(2.000000, 2.000000, 2.000000, 2.000000), l(-1.000000, -1.000000, -1.000000, -1.000000)
mul r0.w, v2.x, l(-0.003750)
mad_sat r5.xy, r4.zwzz, r0.wwww, r1.zwzz
mad r5.xy, r5.xyxx, cb0[139].xyxx, cb0[138].xyxx
mul r5.xy, r5.xyxx, cb0[140].zwzz
max r5.xy, r5.xyxx, cb0[141].xyxx
min r5.xy, r5.xyxx, cb0[141].zwzz
sample_indexable(texture2d)(float,float,float,float) r5.xyz, r5.xyxx, t2.xyzw, s1
mul r5.xyz, r5.xyzx, r5.xyzx
mul r5.xyz, r5.xyzx, r5.xyzx
div r0.w, l(2.000000), v2.x
div r0.w, r0.w, v2.x
mul r0.xyzw, r0.xyzw, l(2.000000, -2.000000, 1.000000, 4.500000)
mad r5.xyz, r5.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r0.wwww, r5.xyzx, r3.xyzx
add r5.xyzw, v2.xxxx, l(0.750000, 1.500000, 2.250000, 3.000000)
mul r6.xyzw, r5.xyzw, l(-0.003750, -0.003750, -0.003750, -0.003750)
mad_sat r7.xyzw, r4.zwzw, r6.xxyy, r1.zwzw
mad r7.xyzw, r7.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r7.xyzw, r7.xyzw, cb0[140].zwzw
max r7.xyzw, r7.xyzw, cb0[141].xyxy
min r7.xyzw, r7.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r8.xyz, r7.xyxx, t2.xyzw, s1
mul r8.xyz, r8.xyzx, r8.xyzx
mul r8.xyz, r8.xyzx, r8.xyzx
div r9.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), r5.xyzw
div r5.xyzw, r9.xyzw, r5.xyzw
mul r5.xyzw, r5.xyzw, l(4.500000, 4.500000, 4.500000, 4.500000)
mad r8.xyz, r8.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.xxxx, r8.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r7.xyz, r7.zwzz, t2.xyzw, s1
mul r7.xyz, r7.xyzx, r7.xyzx
mul r7.xyz, r7.xyzx, r7.xyzx
mad r7.xyz, r7.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.yyyy, r7.xyzx, r3.xyzx
mad_sat r6.xyzw, r4.zwzw, r6.zzww, r1.zwzw
mad r6.xyzw, r6.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r6.xyzw, r6.xyzw, cb0[140].zwzw
max r6.xyzw, r6.xyzw, cb0[141].xyxy
min r6.xyzw, r6.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r7.xyz, r6.xyxx, t2.xyzw, s1
mul r7.xyz, r7.xyzx, r7.xyzx
mul r7.xyz, r7.xyzx, r7.xyzx
mad r7.xyz, r7.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.zzzz, r7.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r5.xyz, r6.zwzz, t2.xyzw, s1
mul r5.xyz, r5.xyzx, r5.xyzx
mul r5.xyz, r5.xyzx, r5.xyzx
mad r5.xyz, r5.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.wwww, r5.xyzx, r3.xyzx
add r5.xyzw, v2.xxxx, l(3.750000, 4.500000, 5.250000, 6.000000)
mul r6.xyzw, r5.xyzw, l(-0.003750, -0.003750, -0.003750, -0.003750)
mad_sat r7.xyzw, r4.zwzw, r6.xxyy, r1.zwzw
mad r7.xyzw, r7.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r7.xyzw, r7.xyzw, cb0[140].zwzw
max r7.xyzw, r7.xyzw, cb0[141].xyxy
min r7.xyzw, r7.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r8.xyz, r7.xyxx, t2.xyzw, s1
mul r8.xyz, r8.xyzx, r8.xyzx
mul r8.xyz, r8.xyzx, r8.xyzx
div r9.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), r5.xyzw
div r5.xyzw, r9.xyzw, r5.xyzw
mul r5.xyzw, r5.xyzw, l(4.500000, 4.500000, 4.500000, 4.500000)
mad r8.xyz, r8.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.xxxx, r8.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r7.xyz, r7.zwzz, t2.xyzw, s1
mul r7.xyz, r7.xyzx, r7.xyzx
mul r7.xyz, r7.xyzx, r7.xyzx
mad r7.xyz, r7.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.yyyy, r7.xyzx, r3.xyzx
mad_sat r6.xyzw, r4.zwzw, r6.zzww, r1.zwzw
mad r6.xyzw, r6.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r6.xyzw, r6.xyzw, cb0[140].zwzw
max r6.xyzw, r6.xyzw, cb0[141].xyxy
min r6.xyzw, r6.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r7.xyz, r6.xyxx, t2.xyzw, s1
mul r7.xyz, r7.xyzx, r7.xyzx
mul r7.xyz, r7.xyzx, r7.xyzx
mad r7.xyz, r7.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.zzzz, r7.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r5.xyz, r6.zwzz, t2.xyzw, s1
mul r5.xyz, r5.xyzx, r5.xyzx
mul r5.xyz, r5.xyzx, r5.xyzx
mad r5.xyz, r5.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.wwww, r5.xyzx, r3.xyzx
add r5.xyzw, v2.xxxx, l(6.750000, 7.500000, 8.250000, 9.000000)
mul r6.xyzw, r5.xyzw, l(-0.003750, -0.003750, -0.003750, -0.003750)
mad_sat r7.xyzw, r4.zwzw, r6.xxyy, r1.zwzw
mad r7.xyzw, r7.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r7.xyzw, r7.xyzw, cb0[140].zwzw
max r7.xyzw, r7.xyzw, cb0[141].xyxy
min r7.xyzw, r7.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r8.xyz, r7.xyxx, t2.xyzw, s1
mul r8.xyz, r8.xyzx, r8.xyzx
mul r8.xyz, r8.xyzx, r8.xyzx
div r9.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), r5.xyzw
div r5.xyzw, r9.xyzw, r5.xyzw
mul r5.xyzw, r5.xyzw, l(4.500000, 4.500000, 4.500000, 4.500000)
mad r8.xyz, r8.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.xxxx, r8.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r7.xyz, r7.zwzz, t2.xyzw, s1
mul r7.xyz, r7.xyzx, r7.xyzx
mul r7.xyz, r7.xyzx, r7.xyzx
mad r7.xyz, r7.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.yyyy, r7.xyzx, r3.xyzx
mad_sat r1.xyzw, r4.xyzw, r6.zzww, r1.xyzw
mad r1.xyzw, r1.xyzw, cb0[139].xyxy, cb0[138].xyxy
mul r1.xyzw, r1.xyzw, cb0[140].zwzw
max r1.xyzw, r1.xyzw, cb0[141].xyxy
min r1.xyzw, r1.xyzw, cb0[141].zwzw
sample_indexable(texture2d)(float,float,float,float) r4.xyz, r1.xyxx, t2.xyzw, s1
mul r4.xyz, r4.xyzx, r4.xyzx
mul r4.xyz, r4.xyzx, r4.xyzx
mad r4.xyz, r4.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r3.xyz, r5.zzzz, r4.xyzx, r3.xyzx
sample_indexable(texture2d)(float,float,float,float) r1.xyz, r1.zwzz, t2.xyzw, s1
mul r1.xyz, r1.xyzx, r1.xyzx
mul r1.xyz, r1.xyzx, r1.xyzx
mad r1.xyz, r1.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r3.xyzx
mad r1.xyz, r5.wwww, r1.xyzx, r3.xyzx
mul r1.xyz, r1.xyzx, v2.wwww
div r0.xy, r0.xyxx, r0.zzzz
mad r0.xy, r0.xyxx, cb0[67].xyxx, cb0[67].wzww
sample_indexable(texture2d)(float,float,float,float) r0.xyz, r0.xyxx, t2.xyzw, s1
mul r0.xyz, r0.xyzx, r0.xyzx
mul r0.xyz, r0.xyzx, r0.xyzx
mul r0.xyz, r0.xyzx, v2.yyyy
add r3.xy, v4.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
dp2 r0.w, r3.xyxx, r3.xyxx
min r0.w, r0.w, l(1.000000)
max r0.w, r0.w, l(0.000001)
log r0.w, r0.w
mul r0.w, r0.w, l(1.200000)
exp r0.w, r0.w
mul r0.w, r0.w, l(2.500000)
mul r0.w, r0.w, r0.w
min r0.w, r0.w, l(1.000000)
mad r0.xyz, r0.xyzx, l(10.000000, 10.000000, 10.000000, 0.000000), -r1.xyzx
mad r0.xyz, r0.wwww, r0.xyzx, r1.xyzx
mul r1.xyz, v2.zzzz, cb3[2].xyzx
mad r0.xyz, r0.xyzx, v3.xyzx, r1.xyzx
ld_indexable(texture2d)(float,float,float,float) r0.w, l(0, 0, 0, 0), t1.yzwx
ne r1.x, r0.w, l(0.000000)
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
mov_sat r0.w, r0.w
movc r0.w, r1.x, r0.w, l(1.000000)
mad r0.xyz, r0.xyzx, r0.wwww, cb3[3].xyzx
and r0.w, cb0[150].z, l(32)
max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r0.xyz, r0.wwww, r0.xyzx, l(0,0,0,0)
mov_sat r0.w, v3.w
lt r1.x, l(0.000000), cb2[94].y
if_nz r1.x
 mul r1.xyz, r2.yyyy, cb0[9].xywx
 mad r1.xyz, r2.xxxx, cb0[8].xywx, r1.xyzx
 mad r1.xyz, r2.zzzz, cb0[10].xywx, r1.xyzx

// // Multiple Effects - Replace adjusted r2 with original value stored in r14
  // mul r1.xyz, r14.yyyy, cb0[9].xywx
  // mad r1.xyz, r14.xxxx, cb0[8].xywx, r1.xyzx
  // mad r1.xyz, r14.zzzz, cb0[10].xywx, r1.xyzx

  add r1.xyz, r1.xyzx, cb0[11].xywx
  div r1.xy, r1.xyxx, r1.zzzz
  mad r3.xy, r1.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
  mad r1.x, r1.z, cb0[198].x, cb0[198].y
  log r1.x, r1.x
  mul r1.x, r1.x, cb0[198].z
  mul r3.z, r1.x, cb0[197].z
  sample_l_indexable(texture3d)(float,float,float,float) r1.x, r3.xyzx, t0.wxyz, s0, l(0.000000)
  mul r1.x, r1.x, v5.w
else
  mov r1.x, v5.w
endif
lt r1.y, l(0.000000), cb0[147].z
if_nz r1.y
  add r1.yzw, r2.xxyz, -cb1[8].xxyz
  add r3.xyz, cb1[9].xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
  lt r1.yzw, r3.xxyz, |r1.yyzw|
  or r1.y, r1.z, r1.y
  or r1.y, r1.w, r1.y
  dp3 r1.z, r2.xyzx, l(0.577000, 0.577000, 0.577000, 0.000000)
  mul r1.z, r1.z, l(0.002000)
  frc r1.z, r1.z
  lt r1.z, l(0.500000), r1.z
  movc r2.xyz, r1.zzzz, l(0,1.000000,1.000000,0), l(1.000000,1.000000,0,0)
  mov r2.w, l(1.000000)
  movc r0.xyzw, r1.yyyy, r2.xyzw, r0.xyzw
endif
mul r0.xyz, r1.xxxx, r0.xyzx
mul o0.xyz, r0.wwww, r0.xyzx
mov o0.w, l(0)
ret
// Approximately 0 instruction slots used
