// Decals
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.6Eng2 on Sun Mar 18 15:36:31 2018
//
//
// Note: shader requires additional functionality:
//       Early depth-stencil
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float
// TEXCOORD                 0   xyzw        1     NONE   float     zw
// TEXCOORD                 1   xyzw        2     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_constantbuffer cb1[2], immediateIndexed
dcl_constantbuffer cb3[5], immediateIndexed
dcl_constantbuffer cb4[2], immediateIndexed
dcl_constantbuffer cb2[53], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_comparison
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture3d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2darray (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2darray (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_uav_typed_texture2d (uint,uint,uint,uint) u1
dcl_uav_typed_texture2d (uint,uint,uint,uint) u2
dcl_uav_typed_texture2d (uint,uint,uint,uint) u3
dcl_uav_typed_texture2d (uint,uint,uint,uint) u4
dcl_input_ps linear v1.zw
dcl_output o0.xyzw
//dcl_temps 10
dcl_temps 14

dcl_resource_texture2d (float,float,float,float) t125

mul r0.xy, v1.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
div r0.xy, r0.xyxx, cb2[22].xyxx
mad r0.xy, r0.xyxx, cb2[21].zwzz, cb2[21].xyxx
min r0.zw, v1.zzzw, cb2[22].zzzw
sample_indexable(texture2d)(float,float,float,float) r1.z, r0.zwzz, t0.yzxw, s0
mul r1.xy, r0.xyxx, r1.zzzz
mov r1.w, l(1.000000)

// DHR ShaderRegex FIREBIRD ENGINE Decals Pattern 1:
ld_indexable(texture2d)(float,float,float,float) r13.xyzw, l(0, 0, 0, 0), t125.xyzw
add r13.w, r1.z, -r13.y
mul r13.w, r13.w, r13.x
mul r13.w, r13.w, cb2[21].x
add r1.x, r1.x, r13.w

dp4 r2.x, cb2[4].xyzw, r1.xyzw
dp4 r2.z, cb2[5].xyzw, r1.xyzw
dp4 r2.y, cb2[6].xyzw, r1.xyzw
sample_l_indexable(texture2d)(float,float,float,float) r0.xyzw, r0.zwzz, t1.xyzw, s0, l(0.000000)
mad r0.xyz, r0.yzxy, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
dp3 r1.x, r0.xyzx, r0.xyzx
rsq r1.x, r1.x
mul r3.xyz, r0.xyzx, r1.xxxx
lt r0.y, r1.z, l(7500.000000)
lt r0.z, r0.w, l(0.250980407)
and r0.y, r0.z, r0.y
if_nz r0.y
  add r0.zw, r2.xxxy, -cb3[0].zzzw
  mul r4.xyz, r2.xyzx, l(0.00166666671, 0.00166666671, 0.000666666660, 0.000000)
  sample_indexable(texture3d)(float,float,float,float) r1.yw, r4.xyzx, t2.zxwy, s1
  mad r4.xy, r1.ywyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  mul r4.xy, r4.xyxx, l(0.002000, 0.002000, 0.000000, 0.000000)
  mad r0.zw, r0.zzzw, cb3[0].xxxy, r4.xxxy
  sample_l_indexable(texture2d)(float,float,float,float) r4.xyz, r0.zwzz, t3.xyzw, s2, l(0.000000)
  mov r5.y, |r4.y|
  lt r0.z, l(0.000000), -r4.y
  lt r0.w, -r4.y, l(0.000000)
  iadd r0.z, -r0.z, r0.w
  itof r0.z, r0.z
  mad r4.xy, r4.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.110000014, 0.500000, 0.000000, 0.000000)
  mul r0.w, r4.x, l(2.43902421)
  mov_sat r0.zw, r0.zzzw
  add r1.y, r1.y, l(-0.100000)
  add_sat r1.y, r1.y, r1.y
  mul r5.x, r0.w, r1.y
  mad r0.w, r4.y, l(51000.000000), cb3[1].x
  add r0.w, r0.w, l(-300.000000)
  add r0.w, -r0.w, r2.z
  mul_sat r0.w, r0.w, l(0.000769230770)
  mul r1.y, r0.w, r0.w
  mad r0.w, -r1.y, r0.w, l(1.000000)
  mul r1.yw, r0.wwww, r5.xxxy
  add r0.w, r1.z, l(-7500.000000)
  mul_sat r0.w, r0.w, l(-0.002000)
  mul r1.y, r0.w, r1.y
  movc r1.z, cb3[1].y, cb2[24].w, l(1.000000)
  ishr r3.w, r1.w, l(1)
  iadd r3.w, r3.w, l(0x1fbd1df5)
  mul r4.xy, r2.xyxx, l(0.00222222228, 0.00222222228, 0.000000, 0.000000)
  sample_indexable(texture2d)(float,float,float,float) r4.xy, r4.xyxx, t4.xyzw, s3
  add r4.x, -r4.x, l(1.000000)
  add r3.w, r3.w, -r4.x
  add r3.w, r3.w, r3.w
  mul r4.x, cb1[1].x, l(0.500000)
  ge r4.z, r4.x, -r4.x
  frc r4.x, |r4.x|
  movc r4.x, r4.z, r4.x, -r4.x
  add r4.x, -r4.x, r4.y
  round_ne r4.y, r4.x
  add r4.x, -r4.y, r4.x
  mad r4.x, |r4.x|, l(1.200000), l(0.400000)
  mul r4.x, r4.x, r4.x
  mul_sat r3.w, r3.w, r4.x
  mad r1.w, r1.w, l(0.250000), r3.w
  mad r3.w, r0.x, r1.x, l(-0.300000)
  mul_sat r3.w, r3.w, l(5.00000048)
  mul r0.w, r0.w, r3.w
  mul r0.w, r0.w, r1.w
  min r4.x, r0.w, l(1.000000)
  lt r0.z, r0.z, l(0.500000)
  mov r4.yz, l(0,0,2.000000,0)
  movc r4.xyz, r0.zzzz, r4.xyyx, r4.xyzx
  sample_l_indexable(texture2darray)(float,float,float,float) r4.xyz, r4.xyzx, t5.xyzw, s4, l(0.000000)
  mul r4.xyz, r1.zzzz, r4.xyzx
  mul r4.xyz, r4.xyzx, cb2[26].wwww
else
  mov r4.xyz, l(0,0,0,0)
  mov r1.y, l(0)
endif
mad r0.z, r1.y, l(-0.500000), l(1.000000)
mul r5.xyzw, v1.zwww, cb4[0].xyyy
ftou r5.xyzw, r5.xyzw
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r0.w, r5.xwww, u1.yzwx
and r1.z, r0.w, l(255)
utof r1.z, r1.z
ubfe r6.xy, l(8, 8, 0, 0), l(16, 8, 0, 0), r0.wwww
utof r6.xy, r6.xyxx
mul r1.w, r6.x, l(0.00392156886)
ushr r0.w, r0.w, l(24)
utof r0.w, r0.w
mul r3.w, r0.w, l(0.062500)
round_ni r3.w, r3.w
mad r0.x, r0.x, r1.x, l(-0.970000)
mul_sat r0.x, r0.x, l(100.000099)
if_nz r0.y
  mov r2.w, l(1.000000)
  dp4 r7.x, cb2[28].xzyw, r2.xyzw
  dp4 r7.y, cb2[29].xzyw, r2.xyzw
  dp4 r7.z, cb2[30].xzyw, r2.xyzw
  dp4 r0.y, cb2[31].xzyw, r2.xyzw
  div r6.xzw, r7.xxyz, r0.yyyy
  mad r6.xz, r6.xxzx, l(0.500000, 0.000000, -0.500000, 0.000000), l(0.500000, 0.000000, 0.500000, 0.000000)
  add r0.y, -r6.w, l(1.000000)
  sample_c_lz_indexable(texture2d)(float,float,float,float) r0.y, r6.xzxx, t6.xxxx, s5, r0.y
  add r0.y, -r0.y, l(1.000000)
  lt r1.x, l(0.970000), r3.x
  if_nz r1.x
    mul r1.x, r0.y, r0.x
    div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb3[1].z
    mul r7.xy, r2.wwww, r2.xyxx
    mul r2.w, cb1[1].x, cb3[1].w
    div r2.w, r2.w, cb3[2].x
    ge r4.w, r2.w, -r2.w
    frc r2.w, |r2.w|
    movc r2.w, r4.w, r2.w, -r2.w
    mul r7.z, r2.w, cb3[2].x
    sample_indexable(texture2darray)(float,float,float,float) r6.xzw, r7.xyzx, t7.xzyw, s6
    mad r7.xy, r6.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
    mad r2.w, -r7.x, r7.x, l(1.000000)
    mad r2.w, -r7.y, r7.y, r2.w
    max r2.w, r2.w, l(0.000000)
    sqrt r2.w, r2.w
    mov r7.z, -r2.w
    mov r7.w, -r7.y
    dp3 r2.w, r3.zxyz, r7.xzwx
    mad r7.xyz, -r3.zxyz, r2.wwww, r7.xzwx
    mov r7.w, l(0)
    mad r8.xyz, -r3.zxyz, r3.xxxx, r7.wyww
    mov r7.y, l(1.000000)
    add r7.xyz, r8.xyzx, r7.xyzx
    mov r8.z, cb2[5].x
    mov r8.x, cb2[6].x
    mov r8.y, cb2[4].x
    mul r9.xyz, r3.xyzx, r8.xyzx
    mad r8.xyz, r8.zxyz, r3.yzxy, -r9.xyzx
    dp3 r2.w, r8.xyzx, r8.xyzx
    rsq r2.w, r2.w
    mul r8.xyz, r2.wwww, r8.xyzx
    mul r9.xyz, r3.xyzx, r8.zxyz
    mad r9.xyz, r8.yzxy, r3.yzxy, -r9.xyzx
    dp3 r8.x, r7.xyzx, r8.xyzx
    dp3 r8.y, r7.xyzx, r9.xyzx
    mul r1.x, r1.x, cb3[2].y
    mul r6.zw, r1.xxxx, r8.xxxy
    mul r2.w, r6.x, r6.x
    mul r1.x, r1.x, r2.w
  else
    div r2.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb3[2].z
    mul r2.xy, r2.wwww, r2.xyxx
    sample_indexable(texture2d)(float,float,float,float) r7.xyzw, r2.xyxx, t8.xyzw, s7
    mad r2.xyw, r7.xyxz, l(2.000000, 2.000000, 0.000000, 2.000000), l(-1.000000, -1.000000, 0.000000, -1.000000)
    dp2 r4.w, r3.zyzz, r2.xyxx
    lt r6.x, l(0.000000), r4.w
    lt r4.w, r4.w, l(0.000000)
    iadd r4.w, -r6.x, r4.w
    itof r4.w, r4.w
    mul r8.xyz, r2.xywx, r4.wwww
    mul r2.x, r8.z, cb3[2].w
    mad r2.x, r2.x, l(0.500000), l(0.500000)
    mul r2.w, r7.y, l(10.000000)
    ge r4.w, r2.w, -r2.w
    frc r2.w, |r2.w|
    movc r2.w, r4.w, r2.w, -r2.w
    mad r4.w, r2.w, l(0.400000), l(0.500000)
    mul r4.w, r4.w, cb1[1].x
    mul r4.w, r4.w, cb3[3].y
    mad r2.w, r2.w, cb3[3].x, -r4.w
    add r2.z, -r2.z, r2.w
    div r2.y, r2.z, cb3[3].x
    sample_indexable(texture2d)(float,float,float,float) r2.xyz, r2.xyxx, t9.xywz, s7
    mad r7.xy, r2.yzyy, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
    mad r2.y, -r7.x, r7.x, l(1.000000)
    mad r2.y, -r7.y, r7.y, r2.y
    max r2.y, r2.y, l(0.000000)
    sqrt r2.y, r2.y
    mov r9.y, -r7.y
    mov r7.z, -r2.y
    mov r8.w, -r8.x
    dp2 r9.x, r8.ywyy, r7.xzxx
    dp2 r9.z, -r8.xyxx, r7.xzxx
    dp3 r2.y, r9.xyzx, r9.xyzx
    rsq r2.y, r2.y
    mul r2.yzw, r2.yyyy, r9.xxyz
    dp3 r4.w, r3.zxyz, r2.yzwy
    mad r2.yzw, -r3.zzxy, r4.wwww, r2.yyzw
    dp2 r4.w, r3.zyzz, -r8.xyxx
    mov r7.xz, -r8.xxyx
    mov r7.y, l(0)
    mad r7.xyz, -r3.zxyz, r4.wwww, r7.xyzx
    add r2.yzw, r2.yyzw, r7.xxyz
    mov r7.z, cb2[5].x
    mov r7.x, cb2[6].x
    mov r7.y, cb2[4].x
    mul r9.xyz, r3.xyzx, r7.xyzx
    mad r7.xyz, r7.zxyz, r3.yzxy, -r9.xyzx
    dp3 r4.w, r7.xyzx, r7.xyzx
    rsq r4.w, r4.w
    mul r7.xyz, r4.wwww, r7.xyzx
    mul r9.xyz, r3.xyzx, r7.zxyz
    mad r9.xyz, r7.yzxy, r3.yzxy, -r9.xyzx
    dp3 r7.x, r2.yzwy, r7.xyzx
    dp3 r7.y, r2.yzwy, r9.xyzx
    max r2.yz, r7.xxyx, l(0.000000, -1.000000, -1.000000, 0.000000)
    min r2.yz, r2.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000)
    add r2.w, |r3.x|, l(-0.900000)
    mul_sat r2.w, r2.w, l(-10.000004)
    mul r0.y, r0.y, r7.w
    mul r0.y, r0.y, r2.w
    dp2 r2.w, r3.zyzz, r8.xyxx
    add r2.w, |r2.w|, l(-0.600000)
    mul_sat r2.w, r2.w, l(10.000004)
    mul r0.y, r0.y, r2.w
    mul r0.y, r0.y, cb3[2].y
    mul r6.zw, r0.yyyy, r2.yyyz
    mul r2.x, r2.x, r2.x
    mul r1.x, r0.y, r2.x
  endif
else
  mov r6.zw, l(0,0,0,0)
  mov r1.x, l(0)
endif
eq r0.y, r3.w, l(1.000000)
movc r2.x, r0.y, l(0), r1.w
mul r2.x, r2.x, r2.x
mad r0.x, -r0.x, cb3[3].z, l(1.000000)
mad r0.x, r0.x, l(0.850000), l(0.150000)
mad r1.x, r2.x, r0.x, r1.x
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r2.x, r5.xwww, u4.xyzw
and r2.y, r2.x, l(255)
utof r2.y, r2.y
mul r3.y, r2.y, l(0.00392156886)
ubfe r2.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r2.xxxx
utof r2.yz, r2.yyzy
mul r3.zw, r2.yyyz, l(0.000000, 0.000000, 0.00392156886, 0.00392156886)
ushr r2.x, r2.x, l(24)
mad r7.xy, r2.zzzz, l(0.00392156886, 0.00392156886, 0.000000, 0.000000), l(-0.666700, -0.333300, 0.000000, 0.000000)
mul r7.xy, r7.yxyy, l(3.000000, 3.000000, 0.000000, 0.000000)
max r2.w, r7.y, l(0.000000)
mul r4.w, r3.y, r3.y
mad r2.w, -r2.w, l(10.000000), l(1.000000)
max r2.w, r2.w, l(0.000000)
mul r1.y, r1.y, r2.w
mul r2.w, r2.w, cb3[3].z
mad r6.x, -r3.y, r3.y, l(1.000000)
mad r4.w, r1.y, r6.x, r4.w
mad r2.yz, -r2.yyzy, l(0.000000, 0.00392156886, 0.00392156886, 0.000000), l(0.000000, 0.500000, 0.100000, 0.000000)
mad r2.yz, r1.yyyy, r2.yyzy, r3.zzwz
add r1.y, -r4.w, cb3[4].x
mad r1.y, r2.w, r1.y, r4.w
add r7.yz, -r2.yyzy, cb3[4].yyzy
mad r8.zw, r2.wwww, r7.yyyz, r2.yyyz
mov_sat r7.x, r7.x
add r8.x, -r7.x, l(1.000000)
add r1.x, r1.x, r1.y
sqrt r8.y, r1.x
mov r3.x, l(0)
movc r3.xyzw, r0.yyyy, r3.zwxy, r8.zwxy
mul r1.x, r3.z, cb3[3].z
mad r1.x, r1.x, l(-0.199999988), l(1.000000)
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r1.y, r5.xwww, u3.yxzw
and r2.y, r1.y, l(255)
utof r2.xy, r2.xyxx
mul r7.x, r1.x, r2.y
ubfe r2.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r1.yyyy
utof r2.yz, r2.yyzy
mul r7.yz, r1.xxxx, r2.yyzy
ushr r1.x, r1.y, l(24)
utof r1.x, r1.x
mul r2.yzw, r0.zzzz, r7.xxyz
mul_sat r2.yzw, r2.yyzw, l(0.000000, 0.00392156886, 0.00392156886, 0.00392156886)
mad r2.yzw, r2.yyzw, l(0.000000, 255.000000, 255.000000, 255.000000), l(0.000000, 0.500000, 0.500000, 0.500000)
round_ni r2.yzw, r2.yyzw
ftou r2.yzw, r2.yyzw
imad r0.z, r2.z, l(256), r2.y
imad r0.z, r2.w, l(0x00010000), r0.z
mad r1.x, r1.x, l(1.000000), l(0.500000)
round_ni r1.x, r1.x
ftou r1.x, r1.x
imad r0.z, r1.x, l(0x01000000), r0.z
store_uav_typed u3.xyzw, r5.xwww, r0.zzzz
min r0.z, r3.w, l(1.000000)
mad r0.z, r0.z, l(255.000000), l(0.500000)
round_ni r0.z, r0.z
ftou r0.z, r0.z
mov_sat r3.xy, r3.xyxx
mad r1.xy, r3.xyxx, l(255.000000, 255.000000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
round_ni r1.xy, r1.xyxx
ftou r1.xy, r1.xyxx
imad r0.z, r1.x, l(256), r0.z
imad r0.z, r1.y, l(0x00010000), r0.z
mad r1.x, r2.x, l(1.000000), l(0.500000)
round_ni r1.x, r1.x
ftou r1.x, r1.x
imad r0.z, r1.x, l(0x01000000), r0.z
store_uav_typed u4.xyzw, r5.xwww, r0.zzzz
ld_uav_typed_indexable(texture2d)(uint,uint,uint,uint) r0.z, r5.xwww, u2.yzxw
and r1.x, r0.z, l(1023)
utof r2.x, r1.x
ubfe r1.xy, l(10, 10, 0, 0), l(10, 20, 0, 0), r0.zzzz
utof r2.yz, r1.xxyx
ushr r0.z, r0.z, l(30)
utof r0.z, r0.z
mad r3.xyz, r2.xyzx, l(0.00195503421, 0.00195503421, 1.000000, 0.000000), l(-1.000000, -1.000000, 0.500000, 0.000000)
mul r1.xy, |r3.xyxx|, r3.xyxx
mad r1.xy, r0.xxxx, r1.xyxx, r6.zwzz
lt r2.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r1.xxxy
lt r3.xy, r1.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
iadd r2.zw, -r2.zzzw, r3.xxxy
itof r2.zw, r2.zzzw
sqrt r1.xy, |r1.xyxx|
mul r1.xy, r1.xyxx, r2.zwzz
mad r1.xy, r1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
mul r2.xy, r2.xyxx, l(0.000977517106, 0.000977517106, 0.000000, 0.000000)
movc_sat r1.xy, r0.yyyy, r2.xyxx, r1.xyxx
mad r1.xy, r1.xyxx, l(1023.000000, 1023.000000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
round_ni r1.xy, r1.xyxx
ftou r1.xy, r1.xyxx
imad r0.x, r1.y, l(1024), r1.x
round_ni r1.x, r3.z
ftou r1.x, r1.x
imad r0.x, r1.x, l(0x00100000), r0.x
mad r0.z, r0.z, l(1.000000), l(0.500000)
round_ni r0.z, r0.z
ftou r0.z, r0.z
imad r0.x, r0.z, l(0x40000000), r0.x
store_uav_typed u2.xyzw, r5.xwww, r0.xxxx
and r0.x, r1.w, r0.y
mad r0.y, r1.z, l(1.000000), l(0.500000)
round_ni r0.y, r0.y
mad r0.z, r6.y, l(1.000000), l(0.500000)
round_ni r0.z, r0.z
ftou r0.yz, r0.yyzy
imad r0.y, r0.z, l(256), r0.y
mad r0.x, r0.x, l(255.000000), l(0.500000)
round_ni r0.x, r0.x
ftou r0.x, r0.x
imad r0.x, r0.x, l(0x00010000), r0.y
mad r0.y, r0.w, l(1.000000), l(0.500000)
round_ni r0.y, r0.y
ftou r0.y, r0.y
imad r0.x, r0.y, l(0x01000000), r0.x
store_uav_typed u1.xyzw, r5.xyzw, r0.xxxx
mov o0.xyz, r4.xyzx
mov o0.w, l(1.000000)
ret
// Approximately 0 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
