//Shadows CS from cache.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.0.10011.16384
//
//   using 3Dmigoto v1.3.16 on Fri Jan 14 20:06:33 2022
//
//
// Note: shader requires additional functionality:
//       64 UAV slots
//
//
// Buffer Definitions:
//
// cbuffer ConstBuf__previousFrameGBuffers
// {
//
//   struct GBufferStruct
//   {
//
//       float4x4 invViewProjNoZReproj; // Index:    0
//       float4x4 directionProjMatrix;  // Index:    4
//       float2 viewportScale;          // Index:    8
//       float2 viewportBias;           // Index:    8.z
//       float2 invViewportSize;        // Index:    9
//       float2 viewportSize;           // Index:    9.z
//       uint2 viewportSizeUint;        // Index:   10
//       float3 eyePos;                 // Index:   11
//
//   } resourceTables__previousFrameGBuffers;// Index:    0-11.z           Components:    47
                                        // Textures:  t11-t16
//
// }
//
// Resource bind info for resourceTables__globalData.systemData
// {
//
//   struct ParticleGPUSystemData
//   {
//
//       float4x4 cSystemToWorld;       // Index:    0
//       uint cameraID;                 // Index:    4
//       uint cDrawArgStart;            // Index:    4.y
//       float4 textureFlipbookVecs[10];// Index:    4.z
//       float3 cSpriteCenter;          // Index:   14.z
//       float3 cSpriteSize;            // Index:   15.y
//       float3 cSpriteSizeRandom;      // Index:   16
//       float2 cUVScale;               // Index:   16.w
//       float2 cUVOffset;              // Index:   17.y
//       float2 cUVScroll;              // Index:   17.w
//       uint cRibbonUVMode;            // Index:   18.y
//       float cTimeStep;               // Index:   18.z
//       uint cFlags;                   // Index:   18.w
//       float cLifeTime;               // Index:   19
//       float cLifeTimeRandom;         // Index:   19.y
//       float cFogDensityStrength;     // Index:   19.z
//       float cAge;                    // Index:   19.w
//       uint systemRandom;             // Index:   20
//       uint cAlignMode;               // Index:   20.y
//       uint cSecondaryAlignMode;      // Index:   20.z
//       uint cBlendMode;               // Index:   20.w
//       float cAngleFadeRate;          // Index:   21
//       float cSoftDistance;           // Index:   21.y
//       float cSoftDistanceInverse;    // Index:   21.z
//       float cVelocityScale;          // Index:   21.w
//       float cVelocityScaleClamp;     // Index:   22
//       float cExternalScale;          // Index:   22.y
//       float cSpriteRotation;         // Index:   22.z
//       float cSpriteCameraOffset;     // Index:   22.w
//       float cStaticTwist;            // Index:   23
//       float cTwistSpeed;             // Index:   23.y
//       uint cTwistDirection;          // Index:   23.z
//       float cMaxExtent;              // Index:   23.w
//       float cColorModulate;          // Index:   24
//       float cColorRandom;            // Index:   24.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   24.z
//           float end;                 // Index:   24.w
//           uint type;                 // Index:   25
//           float alpha;               // Index:   25.y
//           float jitter;              // Index:   25.z
//
//       } cParticleColorBlend;         // Index:   24.z
//       float4 cColorTintModulate;     // Index:   25.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   26.w
//           float end;                 // Index:   27
//           uint type;                 // Index:   27.y
//           float alpha;               // Index:   27.z
//           float jitter;              // Index:   27.w
//
//       } cNormalMapIntensity;         // Index:   26.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   28
//           float end;                 // Index:   28.y
//           uint type;                 // Index:   28.z
//           float alpha;               // Index:   28.w
//           float jitter;              // Index:   29
//
//       } cOpacity;                    // Index:   28
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   29.y
//           float end;                 // Index:   29.z
//           uint type;                 // Index:   29.w
//           float alpha;               // Index:   30
//           float jitter;              // Index:   30.y
//
//       } cOpacityTexturesExponent;    // Index:   29.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   30.z
//           float end;                 // Index:   30.w
//           uint type;                 // Index:   31
//           float alpha;               // Index:   31.y
//           float jitter;              // Index:   31.z
//
//       } cScale;                      // Index:   30.z
//       float cCameraScaleStartDistance;// Index:   31.w
//       float cCameraScaleStartValue;  // Index:   32
//       float cCameraScaleEndDistance; // Index:   32.y
//       float cCameraScaleEndValue;    // Index:   32.z
//       float cCameraOneOverEndMinusStart;// Index:   32.w
//       uint cFlipbookPageCount;       // Index:   33
//       float cFlipbookPageCycle;      // Index:   33.y
//       float cNearCull;               // Index:   33.z
//       float cFarCull;                // Index:   33.w
//       float cNearFade;               // Index:   34
//       float cFarFade;                // Index:   34.y
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   34.z
//           float end;                 // Index:   34.w
//           uint type;                 // Index:   35
//           float alpha;               // Index:   35.y
//           float jitter;              // Index:   35.z
//
//       } cDrag;                       // Index:   34.z
//       float3 cGravity;               // Index:   35.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   36.z
//           float end;                 // Index:   36.w
//           uint type;                 // Index:   37
//           float alpha;               // Index:   37.y
//           float jitter;              // Index:   37.z
//
//       } cGravityIntensity;           // Index:   36.z
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   37.w
//           float end;                 // Index:   38
//           uint type;                 // Index:   38.y
//           float alpha;               // Index:   38.z
//           float jitter;              // Index:   38.w
//
//       } cWindInfluenceOverLifeTime;  // Index:   37.w
//       float cMinDistance;            // Index:   39
//       float cMaxDistance;            // Index:   39.y
//       float3 cTurbulenceFrequency;   // Index:   39.z
//       float3 cTurbulenceAmplitude;   // Index:   40.y
//       float3 cTurbulencePhase;       // Index:   41
//       float3 cTurbulenceScrollSpeed; // Index:   41.w
//
//       struct ParticleGPUAttributeData
//       {
//
//           float start;               // Index:   42.z
//           float end;                 // Index:   42.w
//           uint type;                 // Index:   43
//           float alpha;               // Index:   43.y
//           float jitter;              // Index:   43.z
//
//       } cTurbulenceIntensity;        // Index:   42.z
//       uint cActiveFields;            // Index:   43.w
//
//       struct ParticleGPUFieldData
//       {
//
//           float3 position;           // Index:   44
//           float attenuation;         // Index:   44.w
//           float3 direction;          // Index:   45
//           float maxDistance;         // Index:   45.w
//           float magnitude;           // Index:   46
//           float _pad0;               // Index:   46.y
//           float _pad1;               // Index:   46.z
//           float _pad2;               // Index:   46.w
//
//       } cFields[4];                  // Index:   44
//       float cNewtonMinDistance;      // Index:   56
//       float cCollisionBounciness;    // Index:   56.y
//       float cCollisionBouncinessRandom;// Index:   56.z
//       float cCollisionRadius;        // Index:   56.w
//       float cDepthCollisionAgeThreshold;// Index:   57
//       float cDepthCollisionThreshold;// Index:   57.y
//       float cPlaneCollisionHeight;   // Index:   57.z
//       float3 emitterPosition;        // Index:   57.w
//       float3 emitterVelocity;        // Index:   58.z
//       float3 velocityDirectionWorld; // Index:   59.y
//       float3x3 emitterOrientation;   // Index:   60
//       float emitterDistance;         // Index:   62.y
//       float cMFXEventProbability;    // Index:   62.z
//       uint4 ramp1Indices[2];         // Index:   62.w
//       uint4 ramp3Indices;            // Index:   64.w
//       uint4 ramp1Constants[2];       // Index:   65.w
//       float4 ramp3Constants;         // Index:   67.w
//
//   } $Element;                        // Index:    0-68.z           Components:   275
//
// }
//
// Resource bind info for resourceTables__globalData.cpuEmittedParticles
// {
//
//   struct ParticleGPUData
//   {
//
//       float3 position;               // Index:    0
//       float3 velocity;               // Index:    0.w
//       float3 axis;                   // Index:    1.z
//       uint _pad0;                    // Index:    2.y
//       uint _pad1;                    // Index:    2.z
//       uint _pad2;                    // Index:    2.w
//
//   } $Element;                        // Index:    0 1 2            Components:    12
//
// }
//
// Resource bind info for resourceTables__jobs.emissionJobs
// {
//
//   struct ParticleGPUEmissionJob
//   {
//
//       uint batchIndex;               // Index:    0
//       uint systemIndex;              // Index:    0.y
//       uint count;                    // Index:    0.z
//       uint dstOffset;                // Index:    0.w
//       uint srcOffset;                // Index:    1
//       uint emitterType;              // Index:    1.y
//       uint interpType;               // Index:    1.z
//       float emitStart;               // Index:    1.w
//       float emitInterval;            // Index:    2
//       float batchAge;                // Index:    2.y
//       float timeStepInv;             // Index:    2.z
//       float quadInterpStart;         // Index:    2.w
//       float initialDistance;         // Index:    3
//       float frameDistance;           // Index:    3.y
//       uint decayEmitRandomStart;     // Index:    3.z
//       uint decayMaxCount;            // Index:    3.w
//       uint decayEmissionBufferOffset;// Index:    4
//       uint decayAtomicCounterIndex;  // Index:    4.y
//       float decaySampleSpread;       // Index:    4.z
//       uint dupBatchIndex;            // Index:    4.w
//       uint dupCount;                 // Index:    5
//       float dupAgeDiff;              // Index:    5.y
//       uint cFlags;                   // Index:    5.z
//       float3 cDirection;             // Index:    5.w
//       float cSpeed;                  // Index:    6.z
//       float cSpeedRandom;            // Index:    6.w
//       float cSpread;                 // Index:    7
//       float cSpreadRandom;           // Index:    7.y
//       float cDistanceMin;            // Index:    7.z
//       float cDistanceRange;          // Index:    7.w
//       float cVelAwayFromCenter;      // Index:    8
//       float cVelAwayFromAxis;        // Index:    8.y
//       float cVelAlongAxis;           // Index:    8.z
//       float cVelDirectionalSpeed;    // Index:    8.w
//       float cVelAroundAxis;          // Index:    9
//       float cVelRandomDirection;     // Index:    9.y
//       float cVolumeSweep;            // Index:    9.z
//       float cSectionRadius;          // Index:    9.w
//       float3 emitPosition0;          // Index:   10
//       float3 emitPosition1;          // Index:   10.w
//       float3 emitPosition2;          // Index:   11.z
//       float3x3 emitOrientation0;     // Index:   12.y
//       float3x3 emitOrientation1;     // Index:   14.z
//       float3x3 emitOrientation2;     // Index:   16.w
//       float3 emitVelocity0;          // Index:   19
//       float3 emitVelocity1;          // Index:   19.w
//       uint _pad0;                    // Index:   20.z
//       uint _pad1;                    // Index:   20.w
//
//   } $Element;                        // Index:    0-20             Components:    84
//
// }
//
// Resource bind info for resourceTables__globalData.positions
// {
//
//   float3 $Element;                   // Index:    0.xyz            Components:     3
//
// }
//
// Resource bind info for resourceTables__globalData.spawnTimes
// {
//
//   float $Element;                    // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__globalData.velocities
// {
//
//   float3 $Element;                   // Index:    0.xyz            Components:     3
//
// }
//
// Resource bind info for resourceTables__globalData.axes
// {
//
//   float3 $Element;                   // Index:    0.xyz            Components:     3
//
// }
//
// Resource bind info for resourceTables__globalData.lifeTimes
// {
//
//   float $Element;                    // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__globalData.colors
// {
//
//   uint $Element;                     // Index:    0.x              Components:     1
//
// }
//
// Resource bind info for resourceTables__globalData.distances
// {
//
//   float $Element;                    // Index:    0.x              Components:     1
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// resourceTables__globalData.systemData    texture  struct         r/o    0        1
// resourceTables__globalData.cpuEmittedParticles    texture  struct         r/o    1        1
// resourceTables__globalData.decaySpawnBuffer    texture    uint         buf    2        1
// resourceTables__globalData.decayAtomicCountersBuffer    texture    uint         buf    3        1
// resourceTables__previousFrameGBuffers.linearDepthTexture    texture   float          2d   11        1
// resourceTables__previousFrameGBuffers.baseColorTexture    texture  float4          2d   12        1
// resourceTables__previousFrameGBuffers.normalTexture    texture  float4          2d   13        1
// resourceTables__previousFrameGBuffers.propertiesTexture    texture  float4          2d   14        1
// resourceTables__previousFrameGBuffers.scatteringEmissiveTexture    texture  float4          2d   16        1
// resourceTables__jobs.emissionJobs    texture  struct         r/o   22        1
// resourceTables__globalData.positions        UAV  struct         r/w    8        1
// resourceTables__globalData.spawnTimes        UAV  struct         r/w    9        1
// resourceTables__globalData.velocities        UAV  struct         r/w   10        1
// resourceTables__globalData.axes        UAV  struct         r/w   11        1
// resourceTables__globalData.lifeTimes        UAV  struct         r/w   12        1
// resourceTables__globalData.colors        UAV  struct         r/w   13        1
// resourceTables__globalData.distances        UAV  struct         r/w   14        1
// ConstBuf__previousFrameGBuffers    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 cb1[11], immediateIndexed
dcl_resource_structured t0, 1100
dcl_resource_structured t1, 48
dcl_resource_buffer (uint,uint,uint,uint) t2
dcl_resource_buffer (uint,uint,uint,uint) t3
dcl_resource_texture2d (float,float,float,float) t11
dcl_resource_texture2d (float,float,float,float) t12
dcl_resource_texture2d (float,float,float,float) t13
dcl_resource_texture2d (float,float,float,float) t14
dcl_resource_texture2d (float,float,float,float) t16
dcl_resource_structured t22, 336
dcl_uav_structured u8, 12
dcl_uav_structured u9, 4
dcl_uav_structured u10, 12
dcl_uav_structured u11, 12
dcl_uav_structured u12, 4
dcl_uav_structured u13, 4
dcl_uav_structured u14, 4
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.x
dcl_temps 45
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
ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r0.xyzw, vThreadGroupID.x, l(0), t22.xyzw
ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r1.xyzw, vThreadGroupID.x, l(64), t22.xyzw
ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r2.xyzw, vThreadGroupID.x, l(80), t22.xyzw
ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r3.xyzw, r0.y, l(296), t0.xyzw
ult r0.z, vThreadIDInGroupFlattened.x, r0.z
if_nz r0.z
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r4.xyzw, vThreadGroupID.x, l(16), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r5.xyzw, vThreadGroupID.x, l(32), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r6.xyzw, vThreadGroupID.x, l(48), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r7.xyzw, vThreadGroupID.x, l(96), t22.zxyw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r8.xyzw, vThreadGroupID.x, l(128), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r9.xyzw, vThreadGroupID.x, l(144), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r10.xyzw, vThreadGroupID.x, l(160), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r11.xyzw, vThreadGroupID.x, l(176), t22.zxyw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r12.xyzw, vThreadGroupID.x, l(192), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r13.xyz, vThreadGroupID.x, l(208), t22.xyzx
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r14.xyzw, vThreadGroupID.x, l(220), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r15.xyzw, vThreadGroupID.x, l(236), t22.xzyw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r16.xyzw, vThreadGroupID.x, l(252), t22.yxwz
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r17.xyz, vThreadGroupID.x, l(268), t22.xyzx
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r18.xyz, vThreadGroupID.x, l(280), t22.xyzx
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r19.xyzw, vThreadGroupID.x, l(292), t22.xyzw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r20.xyzw, vThreadGroupID.x, l(308), t22.zxyw
  ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r21.z, vThreadGroupID.x, l(324), t22.xxxx
  ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r0.z, r0.y, l(320), t0.xxxx
  ishl r18.w, r0.x, l(6)
  iadd r0.w, r0.w, r18.w
  iadd r0.w, r0.w, vThreadIDInGroupFlattened.x
  and r22.xyzw, r3.yyyy, l(4096, 0x00010000, 0x00040000, 0x00008000)
  utof r18.w, vThreadIDInGroupFlattened.x
  mad r21.w, r5.x, r18.w, r4.w
  add r5.w, r5.w, r21.w
  mul r23.x, r5.w, r5.w
  mov r24.xy, r11.xwxx
  mov r24.z, r12.x
  mov r11.x, r10.w
  mul r11.xyz, r5.wwww, r11.xyzx
  mad r11.xyz, r23.xxxx, r24.xyzx, r11.xyzx
  add r11.xyz, r10.xyzx, r11.xyzx
  mul r12.x, r5.z, r21.w
  mov r21.xy, r20.xwxx
  mov r20.x, r19.w
  add r23.yzw, -r21.xxyz, r20.xxyz
  mad r24.xyz, r12.xxxx, r23.yzwy, r21.xyzx
  ieq r12.x, r4.z, l(1)
  mov r25.xw, r19.xxxy
  mov r25.y, r17.y
  mov r25.z, r18.y
  mov r19.x, r17.z
  mov r19.y, r18.z
  mov r17.w, r18.x
  mov r26.xw, r16.xxxw
  mov r26.yz, r15.xxwx
  mul r26.xyzw, r5.wwww, r26.xyzw
  mov r16.x, r15.z
  mul r16.xyz, r5.wwww, r16.xyzx
  mov r15.x, r14.w
  mul r15.xy, r5.wwww, r15.xyxx
  mad r25.xyzw, r23.xxxx, r25.xyzw, r26.xyzw
  mad r16.xyz, r23.xxxx, r19.xyzx, r16.xyzx
  mad r15.xy, r23.xxxx, r17.xwxx, r15.xyxx
  mov r17.xw, r14.xxxy
  mov r17.y, r12.z
  mov r17.z, r13.y
  add r19.xyzw, r17.xyzw, r25.xyzw
  mov r14.x, r12.w
  mov r14.y, r13.z
  add r16.xyz, r14.xyzx, r16.xyzx
  mov r13.w, r12.y
  add r12.yz, r13.wwxw, r15.xxyx
  movc r15.xyzw, r12.xxxx, r17.xyzw, r19.xyzw
  movc r16.xyz, r12.xxxx, r14.xyzx, r16.xyzx
  movc r12.xy, r12.xxxx, r13.wxww, r12.yzyy
  mov r11.w, r12.x
  mov r10.w, r13.w
  movc r10.xyzw, r4.zzzz, r11.xyzw, r10.xyzw
  mov r24.w, r12.y
  mov r20.w, r13.x
  movc r11.xyzw, r4.zzzz, r24.wxyz, r20.wxyz
  movc r12.xyzw, r4.zzzz, r15.xyzw, r17.xyzw
  movc r13.xyz, r4.zzzz, r16.xyzx, r14.xyzx
  xor r4.z, r0.w, l(61)
  ushr r5.w, r0.w, l(16)
  xor r4.z, r4.z, r5.w
  imul null, r4.z, r4.z, l(9)
  ushr r5.w, r4.z, l(4)
  xor r4.z, r4.z, r5.w
  imul null, r4.z, r4.z, l(0x27d4eb2d)
  ushr r5.w, r4.z, l(15)
  xor r4.z, r4.z, r5.w
  movc r14.x, r22.x, r0.z, r4.z
  if_nz r22.y
    lt r0.z, l(0.000000), r3.w
    mul r3.w, r3.w, r3.z
    utof r4.z, r14.x
    mad r4.z, r4.z, l(4.656612873E-010), l(-1.000000)
    mad r3.w, r3.w, r4.z, r3.z
    movc r0.z, r0.z, r3.w, r3.z
    store_structured u12.x, r0.w, l(0), r0.z
  endif
  if_nz r22.z
    mul r0.z, r6.y, r21.w
    mad r0.z, r0.z, r5.z, r6.x
    store_structured u14.x, r0.w, l(0), r0.z
  endif
  switch r4.y
    case l(0)
    iadd r0.z, r4.x, vThreadIDInGroupFlattened.x
    ld_structured_indexable(structured_buffer, stride=48)(mixed,mixed,mixed,mixed) r15.xyzw, r0.z, l(0), t1.xyzw
    ld_structured_indexable(structured_buffer, stride=48)(mixed,mixed,mixed,mixed) r16.xy, r0.z, l(16), t1.xyxx
    store_structured u8.xyz, r0.w, l(0), r15.xyzx
    mov r16.z, r15.w
    store_structured u10.xyz, r0.w, l(0), r16.zxyz
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(1)
    case l(2)
    ld_structured_indexable(structured_buffer, stride=336)(mixed,mixed,mixed,mixed) r15.xyzw, vThreadGroupID.x, l(112), t22.xyzw
    lt r0.z, l(0.000000), r15.w
    not r14.y, r0.z
    utof r3.z, r14.x
    mul r3.z, r15.w, r3.z
    mad r3.z, r3.z, l(2.328306437E-010), r15.z
    movc r3.z, r0.z, r3.z, r15.z
    lt r3.w, l(0.000000), r7.w
    ishl r4.z, r14.x, l(13)
    xor r4.z, r4.z, r14.x
    ushr r5.z, r4.z, l(17)
    xor r4.z, r4.z, r5.z
    ishl r5.z, r4.z, l(5)
    xor r4.z, r4.z, r5.z
    movc r16.x, r0.z, r4.z, r14.x
    utof r0.z, r16.x
    mad r0.z, r0.z, l(4.656612873E-010), l(-1.000000)
    mul r0.z, r0.z, r7.w
    mad r16.z, r0.z, l(0.500000), r7.x
    mov r16.y, l(0)
    mov r14.z, r7.x
    movc r16.xyz, r3.wwww, r16.xyzx, r14.xyzx
    switch r4.y
      case l(1)
      ishl r0.z, r16.x, l(13)
      xor r0.z, r0.z, r16.x
      ushr r3.w, r0.z, l(17)
      xor r0.z, r0.z, r3.w
      ishl r3.w, r0.z, l(5)
      xor r0.z, r0.z, r3.w
      movc r0.z, r16.y, r16.x, r0.z
      and r3.w, r0.z, l(255)
      utof r3.w, r3.w
      mad r18.x, r3.w, l(0.00784313772), l(-1.000000)
      ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r0.zzzz
      utof r4.yz, r4.yyzy
      mad r18.yz, r4.yyzy, l(0.000000, 0.00784313772, 0.00784313772, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
      dp3 r0.z, r18.xyzx, r18.xyzx
      rsq r0.z, r0.z
      mul r17.xyz, r0.zzzz, r18.xyzx
      break
      case l(2)
      lt r0.z, l(0.000000), r15.y
      mul r3.w, r15.y, r15.x
      ishl r4.y, r16.x, l(13)
      xor r4.y, r4.y, r16.x
      ushr r4.z, r4.y, l(17)
      xor r4.y, r4.z, r4.y
      ishl r4.z, r4.y, l(5)
      xor r4.y, r4.z, r4.y
      movc r18.x, r16.y, r16.x, r4.y
      utof r4.y, r18.x
      mul r3.w, r3.w, r4.y
      mad r18.z, -r3.w, l(2.328306437E-010), r15.x
      mov r18.y, l(0)
      mov r16.w, r15.x
      movc r15.xyz, r0.zzzz, r18.xyzx, r16.xywx
      lt r0.z, l(0.000000), r15.z
      ishl r3.w, r15.x, l(13)
      xor r3.w, r3.w, r15.x
      ushr r4.y, r3.w, l(17)
      xor r3.w, r3.w, r4.y
      ishl r4.y, r3.w, l(5)
      xor r3.w, r3.w, r4.y
      movc r3.w, r15.y, r15.x, r3.w
      utof r3.w, r3.w
      mul r3.w, r3.w, l(1.462918009E-009)
      sincos r6.x, r15.x, r15.z
      sincos r16.x, r18.x, r3.w
      mul r19.x, r6.x, r16.x
      mul r19.z, r6.x, r18.x
      ne r3.w, r2.w, l(0.000000)
      ne r4.yz, r7.yyzy, l(0.000000, 1.000000, 0.000000, 0.000000)
      or r3.w, r3.w, r4.y
      or r3.w, r4.z, r3.w
      lt r4.y, |r2.w|, |r7.z|
      movc r15.yzw, r4.yyyy, l(0,1.000000,0,0), l(0,0,0,1.000000)
      mov r7.x, r2.w
      mul r16.xyw, r7.zxzy, r15.yzyw
      mad r15.yzw, r15.wwyz, r7.xxyz, -r16.xxyw
      dp3 r4.y, r15.yzwy, r15.yzwy
      rsq r4.y, r4.y
      mul r15.yzw, r4.yyyy, r15.yywz
      mul r16.xyw, r7.zxzy, r15.ywyz
      mad r16.xyw, r7.yzyx, r15.wzwy, -r16.xyxw
      mov r19.y, r15.x
      mov r18.x, r16.x
      mov r18.y, r7.x
      mov r18.z, r15.z
      dp3 r18.x, r19.xyzx, r18.xyzx
      mov r20.x, r16.y
      mov r20.y, r7.y
      mov r20.z, r15.y
      dp3 r18.y, r19.xyzx, r20.xyzx
      mov r15.y, r16.w
      mov r15.z, r7.z
      dp3 r18.z, r19.xyzx, r15.yzwy
      movc r15.xyz, r3.wwww, r18.xyzx, r19.xyzx
      movc r15.xyz, r0.zzzz, r15.xyzx, r7.xyzx
      mov r18.x, r10.w
      mov r18.y, r12.y
      mov r18.z, r13.x
      dp3 r17.x, r15.xyzx, r18.xyzx
      mov r18.x, r11.x
      mov r18.y, r12.z
      mov r18.z, r13.y
      dp3 r17.y, r15.xyzx, r18.xyzx
      mov r18.xy, r12.xwxx
      mov r18.z, r13.z
      dp3 r17.z, r15.xyzx, r18.xyzx
      break
      default
      mov r17.xyz, l(0,0,0,0)
      break
    endswitch
    mad r15.xyz, r17.xyzx, r3.zzzz, r10.xyzx
    store_structured u8.xyz, r0.w, l(0), r15.xyzx
    mad r15.xyz, r17.xyzx, r16.zzzz, r11.yzwy
    store_structured u10.xyz, r0.w, l(0), r15.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(5)
    and r0.z, r14.x, l(255)
    utof r0.z, r0.z
    mad r15.x, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r14.xxxx
    utof r3.zw, r3.zzzw
    mad r15.yz, r3.zzwz, l(0.000000, 0.00784313772, 0.00784313772, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
    and r0.z, r2.z, l(2)
    if_nz r0.z
      mul r0.z, |r15.x|, l(6.000000)
      ftou r0.z, r0.z
      switch r0.z
        case l(0)
        mov r15.x, l(1.000000)
        break
        case l(1)
        mov r15.w, l(-1.000000)
        mov r15.xyz, r15.wyzw
        break
        case l(2)
        mov r15.xz, r15.yyzy
        mov r15.y, l(1.000000)
        break
        case l(3)
        mov r15.xz, r15.yyzy
        mov r15.y, l(-1.000000)
        break
        case l(4)
        mov r15.xy, r15.yzyy
        mov r15.z, l(1.000000)
        break
        case l(5)
        case l(6)
        mov r15.xy, r15.yzyy
        mov r15.z, l(-1.000000)
        break
      endswitch
    endif
    ne r16.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r0.z, r15.xyzx, r15.xyzx
    sqrt r3.z, r0.z
    ne r3.z, r3.z, l(0.000000)
    and r3.z, r3.z, r16.x
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r15.xyzx
    mul r17.xyz, r8.xxxx, r17.xyzx
    and r17.xyz, r3.zzzz, r17.xyzx
    mad r18.xyz, -r15.yyyy, l(0.000000, 1.000000, 0.000000, 0.000000), r15.xyzx
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r18.xyzx
    mad r18.xyz, r18.xyzx, r8.yyyy, r17.xyzx
    movc r17.xyz, r16.yyyy, r18.xyzx, r17.xyzx
    mad r18.xyz, r8.zzzz, l(0.000000, 1.000000, 0.000000, 0.000000), r17.xyzx
    movc r16.xyz, r16.zzzz, r18.xyzx, r17.xyzx
    mov r17.y, r2.w
    mov r17.zw, r7.yyyz
    dp3 r0.z, r17.yzwy, r17.yzwy
    lt r3.z, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.yzwy
    mad r17.xyz, r17.xyzx, r8.wwww, r16.xyzx
    movc r17.xyz, r3.zzzz, r17.xyzx, r16.xyzx
    movc r16.xyz, r16.wwww, r17.xyzx, r16.xyzx
    ne r3.zw, r9.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    mul r17.xyz, r15.yzxy, l(0.000000, 0.000000, 1.000000, 0.000000)
    mad r17.xyz, r15.zxyz, l(1.000000, 0.000000, 0.000000, 0.000000), -r17.xyzx
    dp2 r0.z, r17.xzxx, r17.xzxx
    lt r4.y, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r17.xyz, r17.xyzx, r9.xxxx, r16.xyzx
    movc r17.xyz, r4.yyyy, r17.xyzx, r16.xyzx
    movc r14.yzw, r3.zzzz, r17.xxyz, r16.xxyz
    ishl r0.z, r14.x, l(13)
    xor r0.z, r0.z, r14.x
    ushr r3.z, r0.z, l(17)
    xor r0.z, r0.z, r3.z
    ishl r3.z, r0.z, l(5)
    xor r16.x, r0.z, r3.z
    and r0.z, r16.x, l(255)
    utof r0.z, r0.z
    mad r17.y, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r16.xxxx
    utof r4.yz, r4.yyzy
    mad r17.zw, r4.yyyz, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.yzwy
    lt r19.xyz, r17.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r18.xyz, -r18.xyzx, r19.xyzx
    itof r18.xyz, r18.xyzx
    mad r17.xyz, r18.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r17.yzwy
    dp3 r0.z, r17.xyzx, r17.xyzx
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r16.yzw, r17.xxyz, r9.yyyy, r14.yyzw
    movc r16.xyzw, r3.wwww, r16.xyzw, r14.xyzw
    ne r0.z, r7.w, l(0.000000)
    dp3 r3.z, r16.yzwy, r16.yzwy
    lt r3.w, l(0.000010), r3.z
    and r0.z, r0.z, r3.w
    rsq r3.z, r3.z
    mul r17.xyz, r3.zzzz, r16.yzwy
    ishl r3.z, r16.x, l(13)
    xor r3.z, r3.z, r16.x
    ushr r3.w, r3.z, l(17)
    xor r3.z, r3.w, r3.z
    ishl r3.w, r3.z, l(5)
    xor r3.z, r3.w, r3.z
    utof r3.z, r3.z
    mul r3.z, r7.w, r3.z
    mul r3.w, r7.w, l(0.500000)
    mad r3.z, r3.z, l(2.328306437E-010), -r3.w
    mad r17.xyz, r17.xyzx, r3.zzzz, r16.yzwy
    movc r16.xyz, r0.zzzz, r17.xyzx, r16.yzwy
    mov r17.x, r10.w
    mov r17.y, r12.y
    mov r17.z, r13.x
    dp3 r18.x, r15.xyzx, r17.xyzx
    mov r19.x, r11.x
    mov r19.y, r12.z
    mov r19.z, r13.y
    dp3 r18.y, r15.xyzx, r19.xyzx
    mov r20.xz, r12.wwxw
    mov r20.y, r13.z
    dp3 r18.z, r15.yzxy, r20.xyzx
    add r15.xyz, r10.xyzx, r18.xyzx
    store_structured u8.xyz, r0.w, l(0), r15.xyzx
    mov r20.x, r17.x
    mov r20.y, r19.x
    dp3 r0.z, r20.xyzx, r20.xyzx
    rsq r0.z, r0.z
    mul r15.xyz, r0.zzzz, r20.xyzx
    dp3 r0.z, r12.yzwy, r12.yzwy
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r12.yzwy
    dp3 r0.z, r13.xyzx, r13.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r13.xyzx
    mul r17.xyz, r16.yyyy, r17.xyzx
    mad r15.xyz, r16.xxxx, r15.xyzx, r17.xyzx
    mad r15.xyz, r16.zzzz, r18.xyzx, r15.xyzx
    add r15.xyz, r11.yzwy, r15.xyzx
    store_structured u10.xyz, r0.w, l(0), r15.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(4)
    and r0.z, r14.x, l(255)
    utof r0.z, r0.z
    mul r15.x, r0.z, l(0.00392156886)
    ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r14.xxxx
    utof r3.zw, r3.zzzw
    mul r15.yz, r3.zzwz, l(0.000000, 0.00392156886, 0.00392156886, 0.000000)
    max r15.xyz, r15.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000)
    min r15.xyz, r15.xyzx, l(0.999000, 0.999000, 0.999000, 0.000000)
    mul r0.z, r9.z, r15.x
    mad r3.z, r15.y, l(2.000000), l(-1.000000)
    mad r3.w, |r3.z|, l(-0.156583), l(1.57079637)
    add r4.y, -|r3.z|, l(1.000000)
    sqrt r4.y, r4.y
    mul r4.z, r3.w, r4.y
    ge r3.z, r3.z, l(0.000000)
    mad r3.w, -r3.w, r4.y, l(3.14159274)
    movc r3.z, r3.z, r4.z, r3.w
    and r3.w, r2.z, l(2)
    log r4.y, r15.z
    mul r4.y, r4.y, l(0.333333343)
    exp r4.y, r4.y
    movc r3.w, r3.w, l(1.000000), r4.y
    sincos r6.x, r15.x, r3.z
    sincos r16.x, r17.x, r0.z
    mul r0.z, r3.w, r17.x
    mul r17.x, r6.x, r0.z
    mul r17.y, r3.w, r15.x
    mul r0.z, r3.w, r16.x
    mul r17.z, r6.x, r0.z
    ne r15.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r0.z, r17.xyzx, r17.xyzx
    sqrt r3.z, r0.z
    ne r3.z, r3.z, l(0.000000)
    and r3.z, r3.z, r15.x
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r17.xyzx
    mul r16.xyz, r8.xxxx, r16.xyzx
    and r16.xyz, r3.zzzz, r16.xyzx
    mad r18.xyz, -r17.yyyy, l(0.000000, 1.000000, 0.000000, 0.000000), r17.xyzx
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r18.xyzx
    mad r18.xyz, r18.xyzx, r8.yyyy, r16.xyzx
    movc r16.xyz, r15.yyyy, r18.xyzx, r16.xyzx
    mad r18.xyz, r8.zzzz, l(0.000000, 1.000000, 0.000000, 0.000000), r16.xyzx
    movc r15.xyz, r15.zzzz, r18.xyzx, r16.xyzx
    mov r16.y, r2.w
    mov r16.zw, r7.yyyz
    dp3 r0.z, r16.yzwy, r16.yzwy
    lt r3.z, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r16.yzwy
    mad r16.xyz, r16.xyzx, r8.wwww, r15.xyzx
    movc r16.xyz, r3.zzzz, r16.xyzx, r15.xyzx
    movc r15.xyz, r15.wwww, r16.xyzx, r15.xyzx
    ne r3.zw, r9.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    mul r16.xyz, r17.yzxy, l(0.000000, 0.000000, 1.000000, 0.000000)
    mad r16.xyz, r17.zxyz, l(1.000000, 0.000000, 0.000000, 0.000000), -r16.xyzx
    dp2 r0.z, r16.xzxx, r16.xzxx
    lt r4.y, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r16.xyzx
    mad r16.xyz, r16.xyzx, r9.xxxx, r15.xyzx
    movc r16.xyz, r4.yyyy, r16.xyzx, r15.xyzx
    movc r14.yzw, r3.zzzz, r16.xxyz, r15.xxyz
    ishl r0.z, r14.x, l(13)
    xor r0.z, r0.z, r14.x
    ushr r3.z, r0.z, l(17)
    xor r0.z, r0.z, r3.z
    ishl r3.z, r0.z, l(5)
    xor r15.x, r0.z, r3.z
    and r0.z, r15.x, l(255)
    utof r0.z, r0.z
    mad r16.y, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r15.xxxx
    utof r4.yz, r4.yyzy
    mad r16.zw, r4.yyyz, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r16.yzwy
    lt r19.xyz, r16.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r18.xyz, -r18.xyzx, r19.xyzx
    itof r18.xyz, r18.xyzx
    mad r16.xyz, r18.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r16.yzwy
    dp3 r0.z, r16.xyzx, r16.xyzx
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r16.xyzx
    mad r15.yzw, r16.xxyz, r9.yyyy, r14.yyzw
    movc r15.xyzw, r3.wwww, r15.xyzw, r14.xyzw
    ne r0.z, r7.w, l(0.000000)
    dp3 r3.z, r15.yzwy, r15.yzwy
    lt r3.w, l(0.000010), r3.z
    and r0.z, r0.z, r3.w
    rsq r3.z, r3.z
    mul r16.xyz, r3.zzzz, r15.yzwy
    ishl r3.z, r15.x, l(13)
    xor r3.z, r3.z, r15.x
    ushr r3.w, r3.z, l(17)
    xor r3.z, r3.w, r3.z
    ishl r3.w, r3.z, l(5)
    xor r3.z, r3.w, r3.z
    utof r3.z, r3.z
    mul r3.z, r7.w, r3.z
    mul r3.w, r7.w, l(0.500000)
    mad r3.z, r3.z, l(2.328306437E-010), -r3.w
    mad r16.xyz, r16.xyzx, r3.zzzz, r15.yzwy
    movc r15.xyz, r0.zzzz, r16.xyzx, r15.yzwy
    mov r16.x, r10.w
    mov r16.y, r12.y
    mov r16.z, r13.x
    dp3 r18.x, r17.xyzx, r16.xyzx
    mov r19.x, r11.x
    mov r19.y, r12.z
    mov r19.z, r13.y
    dp3 r18.y, r17.xyzx, r19.xyzx
    mov r20.xz, r12.wwxw
    mov r20.y, r13.z
    dp3 r18.z, r17.yzxy, r20.xyzx
    add r16.yzw, r10.xxyz, r18.xxyz
    store_structured u8.xyz, r0.w, l(0), r16.yzwy
    mov r20.x, r16.x
    mov r20.y, r19.x
    dp3 r0.z, r20.xyzx, r20.xyzx
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r20.xyzx
    dp3 r0.z, r12.yzwy, r12.yzwy
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r12.yzwy
    dp3 r0.z, r13.xyzx, r13.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r13.xyzx
    mul r17.xyz, r15.yyyy, r17.xyzx
    mad r15.xyw, r15.xxxx, r16.xyxz, r17.xyxz
    mad r15.xyz, r15.zzzz, r18.xyzx, r15.xywx
    add r15.xyz, r11.yzwy, r15.xyzx
    store_structured u10.xyz, r0.w, l(0), r15.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(6)
    and r0.z, r14.x, l(255)
    utof r0.z, r0.z
    mul r15.x, r0.z, l(0.00392156886)
    ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r14.xxxx
    utof r3.zw, r3.zzzw
    mul r15.yz, r3.zzwz, l(0.000000, 0.00392156886, 0.00392156886, 0.000000)
    max r15.xyz, r15.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000)
    min r15.xyz, r15.xyzx, l(0.999000, 0.999000, 0.999000, 0.000000)
    mul r0.z, r9.z, r15.x
    and r3.z, r2.z, l(2)
    ishr r3.w, r15.y, l(1)
    iadd r3.w, r3.w, l(0x1fbd1df5)
    movc r3.z, r3.z, l(1.000000), r3.w
    sincos r6.x, r15.x, r0.z
    mul r16.x, r3.z, r15.x
    mad r16.y, r15.z, l(2.000000), l(-1.000000)
    mul r16.z, r3.z, r6.x
    ne r15.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r0.z, r16.xyzx, r16.xyzx
    sqrt r3.z, r0.z
    ne r3.z, r3.z, l(0.000000)
    and r3.z, r3.z, r15.x
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r16.xyzx
    mul r17.xyz, r8.xxxx, r17.xyzx
    and r17.xyz, r3.zzzz, r17.xyzx
    mad r18.xyz, -r16.yyyy, l(0.000000, 1.000000, 0.000000, 0.000000), r16.xyzx
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r18.xyzx
    mad r18.xyz, r18.xyzx, r8.yyyy, r17.xyzx
    movc r17.xyz, r15.yyyy, r18.xyzx, r17.xyzx
    mad r18.xyz, r8.zzzz, l(0.000000, 1.000000, 0.000000, 0.000000), r17.xyzx
    movc r15.xyz, r15.zzzz, r18.xyzx, r17.xyzx
    mov r17.y, r2.w
    mov r17.zw, r7.yyyz
    dp3 r0.z, r17.yzwy, r17.yzwy
    lt r3.z, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.yzwy
    mad r17.xyz, r17.xyzx, r8.wwww, r15.xyzx
    movc r17.xyz, r3.zzzz, r17.xyzx, r15.xyzx
    movc r15.xyz, r15.wwww, r17.xyzx, r15.xyzx
    ne r3.zw, r9.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    mul r17.xyz, r16.yzxy, l(0.000000, 0.000000, 1.000000, 0.000000)
    mad r17.xyz, r16.zxyz, l(1.000000, 0.000000, 0.000000, 0.000000), -r17.xyzx
    dp2 r0.z, r17.xzxx, r17.xzxx
    lt r4.y, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r17.xyz, r17.xyzx, r9.xxxx, r15.xyzx
    movc r17.xyz, r4.yyyy, r17.xyzx, r15.xyzx
    movc r14.yzw, r3.zzzz, r17.xxyz, r15.xxyz
    ishl r0.z, r14.x, l(13)
    xor r0.z, r0.z, r14.x
    ushr r3.z, r0.z, l(17)
    xor r0.z, r0.z, r3.z
    ishl r3.z, r0.z, l(5)
    xor r15.x, r0.z, r3.z
    and r0.z, r15.x, l(255)
    utof r0.z, r0.z
    mad r17.y, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r15.xxxx
    utof r4.yz, r4.yyzy
    mad r17.zw, r4.yyyz, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.yzwy
    lt r19.xyz, r17.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r18.xyz, -r18.xyzx, r19.xyzx
    itof r18.xyz, r18.xyzx
    mad r17.xyz, r18.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r17.yzwy
    dp3 r0.z, r17.xyzx, r17.xyzx
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r15.yzw, r17.xxyz, r9.yyyy, r14.yyzw
    movc r15.xyzw, r3.wwww, r15.xyzw, r14.xyzw
    ne r0.z, r7.w, l(0.000000)
    dp3 r3.z, r15.yzwy, r15.yzwy
    lt r3.w, l(0.000010), r3.z
    and r0.z, r0.z, r3.w
    rsq r3.z, r3.z
    mul r17.xyz, r3.zzzz, r15.yzwy
    ishl r3.z, r15.x, l(13)
    xor r3.z, r3.z, r15.x
    ushr r3.w, r3.z, l(17)
    xor r3.z, r3.w, r3.z
    ishl r3.w, r3.z, l(5)
    xor r3.z, r3.w, r3.z
    utof r3.z, r3.z
    mul r3.z, r7.w, r3.z
    mul r3.w, r7.w, l(0.500000)
    mad r3.z, r3.z, l(2.328306437E-010), -r3.w
    mad r17.xyz, r17.xyzx, r3.zzzz, r15.yzwy
    movc r15.xyz, r0.zzzz, r17.xyzx, r15.yzwy
    mov r17.x, r10.w
    mov r17.y, r12.y
    mov r17.z, r13.x
    dp3 r18.x, r16.xyzx, r17.xyzx
    mov r19.x, r11.x
    mov r19.y, r12.z
    mov r19.z, r13.y
    dp3 r18.y, r16.xyzx, r19.xyzx
    mov r20.xz, r12.wwxw
    mov r20.y, r13.z
    dp3 r18.z, r16.yzxy, r20.xyzx
    add r16.xyz, r10.xyzx, r18.xyzx
    store_structured u8.xyz, r0.w, l(0), r16.xyzx
    mov r20.x, r17.x
    mov r20.y, r19.x
    dp3 r0.z, r20.xyzx, r20.xyzx
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r20.xyzx
    dp3 r0.z, r12.yzwy, r12.yzwy
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r12.yzwy
    dp3 r0.z, r13.xyzx, r13.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r13.xyzx
    mul r17.xyz, r15.yyyy, r17.xyzx
    mad r15.xyw, r15.xxxx, r16.xyxz, r17.xyxz
    mad r15.xyz, r15.zzzz, r18.xyzx, r15.xywx
    add r15.xyz, r11.yzwy, r15.xyzx
    store_structured u10.xyz, r0.w, l(0), r15.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(7)
    and r0.z, r14.x, l(255)
    utof r0.z, r0.z
    mul r15.x, r0.z, l(0.00392156886)
    ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r14.xxxx
    utof r3.zw, r3.zzzw
    mul r15.yz, r3.zzwz, l(0.000000, 0.00392156886, 0.00392156886, 0.000000)
    max r15.xyz, r15.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000)
    mul r0.z, r9.z, r15.x
    ishr r3.zw, r15.yyyz, l(0, 0, 1, 1)
    and r4.y, r2.z, l(2)
    iadd r15.yz, r3.zzwz, l(0, 0x1fbd1df5, 0x1fbd1df5, 0)
    mul r3.z, r15.y, r15.z
    movc r3.z, r4.y, r15.y, r3.z
    sincos r6.x, r16.x, r0.z
    mul r15.x, r3.z, r16.x
    mul r15.w, r3.z, r6.x
    ne r16.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r0.z, r15.xywx, r15.xywx
    sqrt r3.z, r0.z
    ne r3.z, r3.z, l(0.000000)
    and r3.z, r3.z, r16.x
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r15.xywx
    mul r17.xyz, r8.xxxx, r17.xyzx
    and r17.xyz, r3.zzzz, r17.xyzx
    mad r18.xyz, -r15.yyyy, l(0.000000, 1.000000, 0.000000, 0.000000), r15.xywx
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r18.xyzx
    mad r18.xyz, r18.xyzx, r8.yyyy, r17.xyzx
    movc r17.xyz, r16.yyyy, r18.xyzx, r17.xyzx
    mad r18.xyz, r8.zzzz, l(0.000000, 1.000000, 0.000000, 0.000000), r17.xyzx
    movc r16.xyz, r16.zzzz, r18.xyzx, r17.xyzx
    mov r17.y, r2.w
    mov r17.zw, r7.yyyz
    dp3 r0.z, r17.yzwy, r17.yzwy
    lt r3.z, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.yzwy
    mad r17.xyz, r17.xyzx, r8.wwww, r16.xyzx
    movc r17.xyz, r3.zzzz, r17.xyzx, r16.xyzx
    movc r16.xyz, r16.wwww, r17.xyzx, r16.xyzx
    ne r3.zw, r9.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    mul r17.xyz, r15.ywxy, l(0.000000, 0.000000, 1.000000, 0.000000)
    mad r17.xyz, r15.wxyw, l(1.000000, 0.000000, 0.000000, 0.000000), -r17.xyzx
    dp2 r0.z, r17.xzxx, r17.xzxx
    lt r4.y, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r17.xyz, r17.xyzx, r9.xxxx, r16.xyzx
    movc r17.xyz, r4.yyyy, r17.xyzx, r16.xyzx
    movc r14.yzw, r3.zzzz, r17.xxyz, r16.xxyz
    ishl r0.z, r14.x, l(13)
    xor r0.z, r0.z, r14.x
    ushr r3.z, r0.z, l(17)
    xor r0.z, r0.z, r3.z
    ishl r3.z, r0.z, l(5)
    xor r16.x, r0.z, r3.z
    and r0.z, r16.x, l(255)
    utof r0.z, r0.z
    mad r17.y, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r16.xxxx
    utof r4.yz, r4.yyzy
    mad r17.zw, r4.yyyz, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    lt r18.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r17.yzwy
    lt r19.xyz, r17.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r18.xyz, -r18.xyzx, r19.xyzx
    itof r18.xyz, r18.xyzx
    mad r17.xyz, r18.xyzx, l(0.001000, 0.001000, 0.001000, 0.000000), r17.yzwy
    dp3 r0.z, r17.xyzx, r17.xyzx
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r17.xyzx
    mad r16.yzw, r17.xxyz, r9.yyyy, r14.yyzw
    movc r16.xyzw, r3.wwww, r16.xyzw, r14.xyzw
    ne r0.z, r7.w, l(0.000000)
    dp3 r3.z, r16.yzwy, r16.yzwy
    lt r3.w, l(0.000010), r3.z
    and r0.z, r0.z, r3.w
    rsq r3.z, r3.z
    mul r17.xyz, r3.zzzz, r16.yzwy
    ishl r3.z, r16.x, l(13)
    xor r3.z, r3.z, r16.x
    ushr r3.w, r3.z, l(17)
    xor r3.z, r3.w, r3.z
    ishl r3.w, r3.z, l(5)
    xor r3.z, r3.w, r3.z
    utof r3.z, r3.z
    mul r3.z, r7.w, r3.z
    mul r3.w, r7.w, l(0.500000)
    mad r3.z, r3.z, l(2.328306437E-010), -r3.w
    mad r17.xyz, r17.xyzx, r3.zzzz, r16.yzwy
    movc r16.xyz, r0.zzzz, r17.xyzx, r16.yzwy
    mov r17.x, r10.w
    mov r17.y, r12.y
    mov r17.z, r13.x
    dp3 r18.x, r15.xywx, r17.xyzx
    mov r19.x, r11.x
    mov r19.y, r12.z
    mov r19.z, r13.y
    dp3 r18.y, r15.xywx, r19.xyzx
    mov r20.xz, r12.wwxw
    mov r20.y, r13.z
    dp3 r18.z, r15.ywxy, r20.xyzx
    add r15.xyz, r10.xyzx, r18.xyzx
    store_structured u8.xyz, r0.w, l(0), r15.xyzx
    mov r20.x, r17.x
    mov r20.y, r19.x
    dp3 r0.z, r20.xyzx, r20.xyzx
    rsq r0.z, r0.z
    mul r15.xyz, r0.zzzz, r20.xyzx
    dp3 r0.z, r12.yzwy, r12.yzwy
    rsq r0.z, r0.z
    mul r17.xyz, r0.zzzz, r12.yzwy
    dp3 r0.z, r13.xyzx, r13.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r13.xyzx
    mul r17.xyz, r16.yyyy, r17.xyzx
    mad r15.xyz, r16.xxxx, r15.xyzx, r17.xyzx
    mad r15.xyz, r16.zzzz, r18.xyzx, r15.xyzx
    add r15.xyz, r11.yzwy, r15.xyzx
    store_structured u10.xyz, r0.w, l(0), r15.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(8)
    and r0.z, r14.x, l(255)
    utof r0.z, r0.z
    mul r0.z, r9.z, r0.z
    ubfe r3.zw, l(0, 0, 8, 8), l(0, 0, 8, 16), r14.xxxx
    utof r3.zw, r3.zzzw
    mul r3.zw, r3.zzzw, l(0.000000, 0.000000, 0.00392156886, 0.0246399436)
    mul r0.z, r0.z, l(0.00392156886)
    and r4.y, r2.z, l(2)
    ishr r3.z, r3.z, l(1)
    iadd r3.z, r3.z, l(0x1fbd1df5)
    mul r3.z, r3.z, r9.w
    movc r3.z, r4.y, r9.w, r3.z
    sincos r6.x, r15.x, r3.w
    sincos r16.x, r17.x, r0.z
    mad r0.z, r3.z, r6.x, l(1.000000)
    mul r17.x, r0.z, r17.x
    mul r17.y, r3.z, r15.x
    mul r17.z, r0.z, r16.x
    ne r15.xyzw, r8.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp3 r0.z, r17.xyzx, r17.xyzx
    sqrt r3.z, r0.z
    ne r3.z, r3.z, l(0.000000)
    and r3.z, r3.z, r15.x
    rsq r0.z, r0.z
    mul r16.xyz, r0.zzzz, r17.xyzx
    mul r16.xyz, r8.xxxx, r16.xyzx
    and r16.xyz, r3.zzzz, r16.xyzx
    mad r18.xyz, -r17.yyyy, l(0.000000, 1.000000, 0.000000, 0.000000), r17.xyzx
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r18.xyz, r0.zzzz, r18.xyzx
    mad r18.xyz, r18.xyzx, r8.yyyy, r16.xyzx
    movc r16.xyz, r15.yyyy, r18.xyzx, r16.xyzx
    mad r8.xyz, r8.zzzz, l(0.000000, 1.000000, 0.000000, 0.000000), r16.xyzx
    movc r8.xyz, r15.zzzz, r8.xyzx, r16.xyzx
    mov r16.y, r2.w
    mov r16.zw, r7.yyyz
    dp3 r0.z, r16.yzwy, r16.yzwy
    lt r2.w, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r15.xyz, r0.zzzz, r16.yzwy
    mad r15.xyz, r15.xyzx, r8.wwww, r8.xyzx
    movc r15.xyz, r2.wwww, r15.xyzx, r8.xyzx
    movc r8.xyz, r15.wwww, r15.xyzx, r8.xyzx
    ne r3.zw, r9.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
    mul r15.xyz, r17.yzxy, l(0.000000, 0.000000, 1.000000, 0.000000)
    mad r15.xyz, r17.zxyz, l(1.000000, 0.000000, 0.000000, 0.000000), -r15.xyzx
    dp2 r0.z, r15.xzxx, r15.xzxx
    lt r2.w, l(0.000010), r0.z
    rsq r0.z, r0.z
    mul r15.xyz, r0.zzzz, r15.xyzx
    mad r9.xzw, r15.xxyz, r9.xxxx, r8.xxyz
    movc r9.xzw, r2.wwww, r9.xxzw, r8.xxyz
    movc r14.yzw, r3.zzzz, r9.xxzw, r8.xxyz
    ishl r0.z, r14.x, l(13)
    xor r0.z, r0.z, r14.x
    ushr r2.w, r0.z, l(17)
    xor r0.z, r0.z, r2.w
    ishl r2.w, r0.z, l(5)
    xor r8.x, r0.z, r2.w
    and r0.z, r8.x, l(255)
    utof r0.z, r0.z
    mad r15.y, r0.z, l(0.00784313772), l(-1.000000)
    ubfe r4.yz, l(0, 8, 8, 0), l(0, 8, 16, 0), r8.xxxx
    utof r4.yz, r4.yyzy
    mad r15.zw, r4.yyyz, l(0.000000, 0.000000, 0.00784313772, 0.00784313772), l(0.000000, 0.000000, -1.000000, -1.000000)
    lt r9.xzw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.yyzw
    lt r16.xyz, r15.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r9.xzw, -r9.xxzw, r16.xxyz
    itof r9.xzw, r9.xxzw
    mad r9.xzw, r9.xxzw, l(0.001000, 0.000000, 0.001000, 0.001000), r15.yyzw
    dp3 r0.z, r9.xzwx, r9.xzwx
    rsq r0.z, r0.z
    mul r9.xzw, r0.zzzz, r9.xxzw
    mad r8.yzw, r9.xxzw, r9.yyyy, r14.yyzw
    movc r8.xyzw, r3.wwww, r8.xyzw, r14.xyzw
    ne r0.z, r7.w, l(0.000000)
    dp3 r2.w, r8.yzwy, r8.yzwy
    lt r3.z, l(0.000010), r2.w
    and r0.z, r0.z, r3.z
    rsq r2.w, r2.w
    mul r9.xyz, r2.wwww, r8.yzwy
    ishl r2.w, r8.x, l(13)
    xor r2.w, r2.w, r8.x
    ushr r3.z, r2.w, l(17)
    xor r2.w, r2.w, r3.z
    ishl r3.z, r2.w, l(5)
    xor r2.w, r2.w, r3.z
    utof r2.w, r2.w
    mul r2.w, r7.w, r2.w
    mul r3.z, r7.w, l(0.500000)
    mad r2.w, r2.w, l(2.328306437E-010), -r3.z
    mad r9.xyz, r9.xyzx, r2.wwww, r8.yzwy
    movc r8.xyz, r0.zzzz, r9.xyzx, r8.yzwy
    mov r9.x, r10.w
    mov r9.y, r12.y
    mov r9.z, r13.x
    dp3 r15.x, r17.xyzx, r9.xyzx
    mov r16.x, r11.x
    mov r16.y, r12.z
    mov r16.z, r13.y
    dp3 r15.y, r17.xyzx, r16.xyzx
    mov r18.xz, r12.wwxw
    mov r18.y, r13.z
    dp3 r15.z, r17.yzxy, r18.xyzx
    add r9.yzw, r10.xxyz, r15.xxyz
    store_structured u8.xyz, r0.w, l(0), r9.yzwy
    mov r18.x, r9.x
    mov r18.y, r16.x
    dp3 r0.z, r18.xyzx, r18.xyzx
    rsq r0.z, r0.z
    mul r9.xyz, r0.zzzz, r18.xyzx
    dp3 r0.z, r12.yzwy, r12.yzwy
    rsq r0.z, r0.z
    mul r14.yzw, r0.zzzz, r12.yyzw
    dp3 r0.z, r13.xyzx, r13.xyzx
    rsq r0.z, r0.z
    mul r15.xyz, r0.zzzz, r13.xyzx
    mul r14.yzw, r8.yyyy, r14.yyzw
    mad r8.xyw, r8.xxxx, r9.xyxz, r14.yzyw
    mad r8.xyz, r8.zzzz, r15.xyzx, r8.xywx
    add r8.xyz, r11.yzwy, r8.xyzx
    store_structured u10.xyz, r0.w, l(0), r8.xyzx
    add r0.z, r4.w, r5.y
    mad r0.z, r5.x, r18.w, r0.z
    store_structured u9.x, r0.w, l(0), r0.z
    break
    case l(3)
    and r0.z, r2.z, l(1)
    ld_indexable(buffer)(uint,uint,uint,uint) r1.y, r1.yyyy, t3.yxzw
    umin r1.y, r6.w, r1.y
    ieq r2.w, r1.y, l(0)
    if_z r1.y
      store_structured u8.xyz, r0.w, l(0), l(0,0,0,0)
      store_structured u10.xyz, r0.w, l(0), l(0,0,0,0)
      store_structured u9.x, r0.w, l(0), l(-340282346638528860000000000000000000000.000000)
      if_nz r0.z
        store_structured u13.x, r0.w, l(0), l(0)
      endif
    endif
    if_z r2.w
      mul r1.z, r1.z, r18.w
      ftou r1.z, r1.z
      iadd r1.z, r1.z, r4.x
      iadd r1.z, r6.z, r1.z
      udiv null, r1.y, r1.z, r1.y
      iadd r1.x, r1.y, r1.x
      ishl r1.y, r1.x, l(1)
      ld_indexable(buffer)(uint,uint,uint,uint) r1.y, r1.yyyy, t2.yxzw
      bfi r1.x, l(31), l(1), r1.x, l(1)
      ld_indexable(buffer)(uint,uint,uint,uint) r1.x, r1.xxxx, t2.xyzw
      and r1.z, r1.x, l(0x0000ffff)
      ushr r1.x, r1.x, l(16)
      utof r4.xy, r1.xzxx
      ftoi r6.xy, r4.xyxx
      mad r1.xz, r4.xxyx, cb1[8].xxyx, cb1[8].zzwz
      mov r6.zw, l(0,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r4.z, r6.xyww, t11.yzxw
      mul r4.xy, r1.xzxx, r4.zzzz
      mov r4.w, l(1.000000)
	  
	  add r40.w, r4.z, -r40.y
      mad r4.x, -r40.x, r40.w, r4.x
	  
      dp4 r8.x, r4.xyzw, cb1[0].xyzw
      dp4 r8.y, r4.xyzw, cb1[1].xyzw
      dp4 r8.z, r4.xyzw, cb1[2].xyzw
      ld_indexable(texture2d)(float,float,float,float) r4.xyz, r6.xyww, t13.xyzw
      mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
      dp3 r1.x, r4.xyzx, r4.xyzx
      rsq r1.x, r1.x
      mul r4.xyz, r1.xxxx, r4.xyzx
      ld_indexable(texture2d)(float,float,float,float) r1.x, r6.xyww, t14.wxyz
      mul r1.x, r1.x, l(255.000000)
      ftou r1.x, r1.x
      ubfe r1.z, l(3), l(5), r1.x
      ult r2.w, r1.z, l(5)
      and r2.w, r1.z, r2.w
      if_nz r2.w
        mov r5.xzw, l(0,0,0,0)
      else
        and r1.x, r1.x, l(2)
        ieq r9.xyz, r1.zzzz, l(6, 5, 7, 0)
        ld_indexable(texture2d)(float,float,float,float) r14.yzw, r6.xyww, t16.wxyz
        or r1.z, r9.x, r9.y
        lt r2.w, r14.w, l(0.000000)
        movc r9.xyw, r1.xxxx, r14.yzyw, l(0,0,0,0)
        or r1.x, r9.z, r2.w
        or r1.x, r1.z, r1.x
        movc r5.xzw, r1.xxxx, l(0,0,0,0), r9.xxyw
      endif
      and r1.x, r1.y, l(255)
      utof r1.x, r1.x
      mul r1.x, r3.x, r1.x
      lt r1.y, l(0.000000), r7.w
      utof r1.z, r14.x
      mad r1.z, r1.z, l(4.656612873E-010), l(-1.000000)
      mul r1.z, r1.z, r7.w
      mad r1.z, r1.z, l(0.500000), r7.x
      movc r1.y, r1.y, r1.z, r7.x
      mov r7.x, r10.w
      mov r7.y, r12.y
      mov r7.z, r13.x
      dp3 r9.x, r8.xyzx, r7.xyzx
      mov r11.y, r12.z
      mov r11.z, r13.y
      dp3 r9.y, r8.xyzx, r11.xyzx
      mov r14.xy, r12.xwxx
      mov r14.z, r13.z
      dp3 r9.z, r8.xyzx, r14.xyzx
      add r3.xzw, r10.xxyz, r9.xxyz
      store_structured u8.xyz, r0.w, l(0), r3.xzwx
      dp3 r7.x, r4.xyzx, r7.xyzx
      dp3 r7.y, r4.xyzx, r11.xyzx
      dp3 r7.z, r4.xyzx, r14.xyzx
      mul r3.xzw, r1.yyyy, r7.xxyz
      store_structured u10.xyz, r0.w, l(0), r3.xzwx
      mad r1.x, r1.x, l(0.00392156886), r5.y
      store_structured u9.x, r0.w, l(0), r1.x
      if_nz r0.z
        ld_indexable(texture2d)(float,float,float,float) r1.xyz, r6.xyzw, t12.xyzw
        iadd r4.xyzw, r6.xyxy, l(-1, 0, 0, -1)
        mov r7.xy, r4.zwzz
        mov r7.zw, l(0,0,0,0)
        ld_indexable(texture2d)(float,float,float,float) r3.xz, r7.xyzw, t12.xzyw
        mov r4.zw, l(0,0,0,0)
        ld_indexable(texture2d)(float,float,float,float) r4.xy, r4.xyzw, t12.xyzw
        iadd r7.xyzw, r6.xyxy, l(0, 1, 1, 0)
        mov r8.xy, r7.zwzz
        mov r8.zw, l(0,0,0,0)
        ld_indexable(texture2d)(float,float,float,float) r4.zw, r8.xyzw, t12.zwxy
        mov r7.zw, l(0,0,0,0)
        ld_indexable(texture2d)(float,float,float,float) r6.zw, r7.xyzw, t12.zwxy
        mov r7.x, r3.x
        mov r7.yz, r4.xxzx
        mov r7.w, r6.z
        add r7.xyzw, r1.xxxx, -r7.xyzw
        mul r7.xyzw, |r7.xyzw|, l(50.000000, 50.000000, 50.000000, 50.000000)
        min r7.xyzw, r7.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
        add r7.xyzw, -r7.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
        ult r3.xw, l(0, 0, 0, 0), r6.yyyx
        and r4.xz, r3.xxwx, l(0x3f800000, 0, 0x3f800000, 0)
        mul r8.xy, r4.xzxx, r7.xyxx
        iadd r4.xz, l(-1, 0, -1, 0), cb1[10].xxyx
        ult r4.xz, r6.xxyx, r4.xxzx
        and r4.xz, r4.xxzx, l(0x3f800000, 0, 0x3f800000, 0)
        mul r8.zw, r4.xxxz, r7.zzzw
        add r0.z, r8.y, r8.x
        mad r0.z, r7.z, r4.x, r0.z
        mad r0.z, r7.w, r4.z, r0.z
        ge r2.w, l(0.010000), r0.z
        movc r7.xyzw, r3.xxxx, l(1.000000,0,0,0), l(0,0,0,1.000000)
        movc r7.xyzw, r2.wwww, r7.xyzw, r8.xyzw
        mul r3.x, r4.y, r7.y
        mad r3.x, r3.z, r7.x, r3.x
        mad r3.x, r4.w, r7.z, r3.x
        mad r3.x, r6.w, r7.w, r3.x
        rcp r0.z, r0.z
        movc r0.z, r2.w, l(1.000000), r0.z
        mul r4.z, r0.z, r3.x
        and r3.xz, r6.xxyx, l(1, 0, 1, 0)
        ine r0.z, r3.z, r3.x
        mov r4.xy, r1.xyxx
        movc r4.yz, r0.zzzz, r4.yyzy, r4.zzyz
        add r3.xzw, r4.xxyz, l(0.000000, 0.000000, -0.498039216, -0.498039216)
        add r4.yz, r3.zzwz, r3.xxxx
        add r4.x, -r3.w, r4.y
        add r0.z, -r3.z, r3.x
        add r4.w, -r3.w, r0.z
        mul r3.xzw, r4.xxzw, r4.xxzw
        min r3.xzw, r3.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
        mad r1.xyz, r1.zzzz, -r3.xzwx, r3.xzwx
        and r0.z, r2.z, l(4)
        max r2.z, r5.w, r5.z
        max r2.z, r2.z, r5.x
        lt r2.w, l(1.000000), r2.z
        div r3.xzw, r5.xxzw, r2.zzzz
        movc r3.xzw, r2.wwww, r3.xxzw, r5.xxzw
        movc_sat r1.xyz, r0.zzzz, r3.xzwx, r1.xyzx
        mul r1.xyz, r1.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
        ftou r1.xyz, r1.xyzx
        ishl r0.z, r1.y, l(8)
        imad r0.z, r1.x, l(0x00010000), r0.z
        iadd r0.z, r0.z, r1.z
        store_structured u13.x, r0.w, l(0), r0.z
      endif
    endif
    break
    default
    break
  endswitch
  if_nz r22.w
    ld_structured_indexable(structured_buffer, stride=1100)(mixed,mixed,mixed,mixed) r0.y, r0.y, l(328), t0.xxxx
    ld_structured_indexable(structured_buffer, stride=12)(mixed,mixed,mixed,mixed) r1.xyz, r0.w, l(0), u10.xyzx
    switch r0.y
      case l(5)
      mov r1.x, r10.w
      mov r1.y, r11.x
      mov r1.z, r12.x
      break
      case l(6)
      mov r1.xyz, r12.yzwy
      break
      case l(7)
      mov r1.xyz, r13.xyzx
      break
      case l(8)
      break
      default
      mov r1.xyz, l(0,0,0,0)
      break
    endswitch
    dp3 r0.y, r1.xyzx, r1.xyzx
    rsq r0.y, r0.y
    mul r1.xyz, r0.yyyy, r1.xyzx
    store_structured u11.xyz, r0.w, l(0), r1.xyzx
  endif
endif
if_nz r2.x
  sync_uglobal_g_t
  ult r0.y, vThreadIDInGroupFlattened.x, r2.x
  if_nz r0.y
    ishl r0.x, r0.x, l(6)
    iadd r0.x, r0.x, l(64)
    iadd r0.x, -r2.x, r0.x
    iadd r0.x, r0.x, vThreadIDInGroupFlattened.x
    bfi r0.y, l(26), l(6), r1.w, vThreadIDInGroupFlattened.x
    ld_structured_indexable(structured_buffer, stride=12)(mixed,mixed,mixed,mixed) r1.xyz, r0.x, l(0), u8.xyzx
    store_structured u8.xyz, r0.y, l(0), r1.xyzx
    ld_structured_indexable(structured_buffer, stride=12)(mixed,mixed,mixed,mixed) r1.xyz, r0.x, l(0), u10.xyzx
    store_structured u10.xyz, r0.y, l(0), r1.xyzx
    ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.z, r0.x, l(0), u9.xxxx
    add r0.z, -r2.y, r0.z
    store_structured u9.x, r0.y, l(0), r0.z
    and r1.xyz, r3.yyyy, l(0x00008000, 0x00010000, 0x00040000, 0)
    if_nz r1.x
      ld_structured_indexable(structured_buffer, stride=12)(mixed,mixed,mixed,mixed) r2.xyz, r0.x, l(0), u11.xyzx
      store_structured u11.xyz, r0.y, l(0), r2.xyzx
    endif
    if_nz r1.y
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.z, r0.x, l(0), u12.xxxx
      store_structured u12.x, r0.y, l(0), r0.z
    endif
    if_nz r1.z
      ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.x, r0.x, l(0), u14.xxxx
      store_structured u14.x, r0.y, l(0), r0.x
    endif
  endif
endif
ret
// Approximately 1128 instruction slots used
