string DefaultParameterScopeBlock = "material"; // 1
float3 AmbientLightColor <bool unmanaged = 1;> = { 0.3, 0.3, 0.3 };
struct {
    float3 Color;
    float3 Direction;
} DirectionalLight[3] <bool unmanaged = 1;> = { 1.625198, 1.512711, 1.097048, 0.62914, -0.34874, 0.69465, 0.5232916, 0.6654605, 0.7815244, -0.32877, 0.90329, 0.27563, 0.4420466, 0.4102767, 0.4420466, -0.80704, -0.58635, 0.06975 };
struct {
    float3 Color;
    float3 Position;
    float2 Range_Inner_Outer;
} PointLight[8] <bool unmanaged = 1;>;
struct {
    float4 WorldPositionMultiplier_XYZZ;
    float2 CurrentOffsetUV;
} Cloud <bool unmanaged = 1;>;
float3 NoCloudMultiplier <bool unmanaged = 1;> = { 1, 1, 1 };
float3 RecolorColorDummy <bool unmanaged = 1;>;
row_major float4x4 ShadowMapWorldToShadow <bool unmanaged = 1;>;
float OpacityOverride <bool unmanaged = 1;> = { 1 };
float3 TintColor <bool unmanaged = 1;> = { 1, 1, 1 };
float3 EyePosition <bool unmanaged = 1;>;
column_major float4x4 ViewProjection : register(vs_2_0, c119) <bool unmanaged = 1;>;
float4 WorldBones[128] : register(vs_2_0, c128) <bool unmanaged = 1;>;
int NumJointsPerVertex <string UIWidget = "None"; string SasBindAddress = "Sas.Skeleton.NumJointsPerVertex";>;
column_major float4x3 World : World : register(vs_2_0, c124);
float3 ColorEmissive : register(vs_2_0, c15) <string UIName = "Emissive Material Color"; string UIWidget = "Color";> = { 1, 1, 1 };
texture Texture_0 <string UIName = "Diffuse Texture";>; // 6
sampler2D Texture_0Sampler : register(ps_2_0, s0) =
sampler_state
{
    Texture = <Texture_0>; // 8
    MinFilter = 3;
    MagFilter = 2;
    MipFilter = 2;
};
bool MultiTextureEnable <string UIName = "Multi Texture Enable";>;
float TexCoordTransformAngle_0 <string UIName = "Radian Delta Rate per Frame"; string UIWidget = "Slider"; float UIMin = -100; float UIMax = 100;> = { 1 };
float TexCoordTransformU_0 : register(vs_2_0, c16) <string UIName = "Vertex ID 0 Rotation Center in U"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
float TexCoordTransformV_0 : register(vs_2_0, c17) <string UIName = "Vertex ID 0 Rotation Center in V"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
float TexCoordTransformU_1 : register(vs_2_0, c18) <string UIName = "Vertex ID 1 Rotation Center in U"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
float TexCoordTransformV_1 : register(vs_2_0, c19) <string UIName = "Vertex ID 1 Rotation Center in V"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
float TexCoordTransformU_2 : register(vs_2_0, c20) <string UIName = "Vertex ID 2 Rotation Center in U"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
float TexCoordTransformV_2 : register(vs_2_0, c21) <string UIName = "Vertex ID 2 Rotation Center in V"; string UIWidget = "Slider"; float UIMin = 0; float UIMax = 1;> = { 0.5 };
struct
{
    float4 ScaleUV_OffsetUV;
} Shroud : register(vs_2_0, c22) <string UIWidget = "None"; string SasBindAddress = "Terrain.Shroud";> = { 1, 1, 0, 0 };
texture ShroudTexture <string UIWidget = "None"; string SasBindAddress = "Terrain.Shroud.Texture";>; // 26
sampler2D ShroudTextureSampler : register(ps_2_0, s1) =
sampler_state
{
    Texture = <ShroudTexture>; // 29
    MinFilter = 2;
    MagFilter = 2;
    MipFilter = 2;
    AddressU = 3;
    AddressV = 3;
};
float Time : Time;
// VS_Array_Shader_0 Vertex_2_0 Has PRES True
struct VS_Array_Shader_0_Input
{
    float4 position : POSITION;
    float4 color : COLOR;
    float4 texcoord : TEXCOORD;
};

struct VS_Array_Shader_0_Output
{
    float4 position : POSITION;
    float3 color : COLOR;
    float2 texcoord2 : TEXCOORD2;
    float color1 : COLOR1;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
};

VS_Array_Shader_0_Output VS_Array_Shader_0(VS_Array_Shader_0_Input i)
{
    /*
    PRSI
      OutputRegisterOffset: 11
      Unknown1: 0
      Unknown2: 0
      OutputRegisterCount: 4
      Unknown3: 0
      Unknown4: 0
      Unknown5: 11
      Unknown6: 2
      Mappings: 2
        0 - ConstOutput: 14 ConstInput 1
        1 - ConstOutput: 0 ConstInput 0
    
    */
    float4 expr11;
    float4 expr12;
    float4 expr13;
    float4 expr14;
    {
        float4 temp0;
        float4 temp1;
        // Expression_2_1
        // add r0.x, c0.x, (-1)
        temp0.x = MultiTextureEnable.x + (-1);
        // mul r1.x, r0.x, r0.x
        temp1.x = temp0.x * temp0.x;
        // neg r0.x, r1.x
        temp0.x = -temp1.x;
        // ge c14.x, r0.x, r1.x
        expr14.x = temp0.x >= temp1.x;
        // mul r0.x, c1.x, c2.x
        temp0.x = TexCoordTransformAngle_0.x * Time.x;
        // mul r1.x, r0.x, (0.15915494309189535)
        temp1.x = temp0.x * (0.15915494309189535);
        // add r0.x, r1.x, (0.5)
        temp0.x = temp1.x + (0.5);
        // frc r1.x, r0.x
        temp1.x = frac(temp0.x);
        // mul r0.x, r1.x, (6.283185307179586)
        temp0.x = temp1.x * (6.283185307179586);
        // add r1.x, r0.x, (-3.141592653589793)
        temp1.x = temp0.x + (-3.141592653589793);
        // cos r0.x, r1.x
        temp0.x = cos(temp1.x);
        // sin r0.y, r1.x
        temp0.y = sin(temp1.x);
        // mov c11.x, r0.y
        expr11.x = temp0.y;
        // mov c12.x, r0.x
        expr12.x = temp0.x;
    }

    VS_Array_Shader_0_Output o;
    float4 temp0, temp1, temp2, temp3;
    // def c0, 1, 0, 100, 0
    // def c1, 0.5, 1.5, 2.5, 0
    // dcl_position v0
    // dcl_color v1
    // dcl_texcoord v2
    // mad r0, v0.xyzx, c0.xxxy, c0.yyyx
    temp0 = i.position.xyzx * float4(1, 1, 1, 0) + float4(0, 0, 0, 1);
    // dp4 r1.z, r0, c126
    temp1.z = dot(temp0, (World._m02_m12_m22_m32));
    // mov r1.w, c0.x
    temp1.w = float1(1);
    // dp4 r1.x, r0, c124
    temp1.x = dot(temp0, (World._m00_m10_m20_m30));
    // dp4 r1.y, r0, c125
    temp1.y = dot(temp0, (World._m01_m11_m21_m31));
    // dp4 oPos.x, r1, c119
    o.position.x = dot(temp1, (ViewProjection._m00_m10_m20_m30));
    // dp4 oPos.y, r1, c120
    o.position.y = dot(temp1, (ViewProjection._m01_m11_m21_m31));
    // dp4 oPos.z, r1, c121
    o.position.z = dot(temp1, (ViewProjection._m02_m12_m22_m32));
    // dp4 oPos.w, r1, c122
    o.position.w = dot(temp1, (ViewProjection._m03_m13_m23_m33));
    // add r0.xy, r1, c22.zwzw
    temp0.xy = temp1.xy + Shroud.ScaleUV_OffsetUV.zw;
    // mul oD0.xyz, v1, c15
    o.color = i.color * ColorEmissive;
    // mul oT2.xy, r0, c22
    o.texcoord2 = temp0 * Shroud.ScaleUV_OffsetUV;
    // mov oD1.x, c0.x
    o.color1 = float4(1, 1, 1, 1);
    // mov r0.x, c18.x
    temp0.x = TexCoordTransformU_1.x;
    // mov r0.y, c19.x
    temp0.y = TexCoordTransformV_1.x;
    // add r0.zw, -r0.xyxy, v2.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r1.xy, r0.wzzw, c12.x
    temp1.xy = temp0.wz * expr12.xx;
    // mad r2.xy, r0.wzzw, c11.x, r1.yxzw
    temp2.xy = temp0.wz * expr11.xx + temp1.yx;
    // mad r2.zw, r0, -c11.x, r1.xyxy
    temp2.zw = temp0.zw * -expr11.xx + temp1.xy;
    // add r0.zw, r0.xyxy, r2.xywy
    temp0.zw = temp0.xy + temp2.wy;
    // add r1.xy, r0, r2.xzzw
    temp1.xy = temp0.xy + temp2.xz;
    // add r0.xy, r0.zwzw, -r1
    temp0.xy = temp0.zw + -temp1.xy;
    // mad r1.zw, c14.x, r0.xyxy, r1.xyxy
    temp1.zw = expr14.xx * temp0.xy + temp1.xy;
    // mov r0.x, c20.x
    temp0.x = TexCoordTransformU_2.x;
    // mov r0.y, c21.x
    temp0.y = TexCoordTransformV_2.x;
    // add r0.zw, -r0.xyxy, v2.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r2.xy, r0.wzzw, c12.x
    temp2.xy = temp0.wz * expr12.xx;
    // mad r3.xy, r0.wzzw, c11.x, r2.yxzw
    temp3.xy = temp0.wz * expr11.xx + temp2.yx;
    // mad r3.zw, r0, -c11.x, r2.xyxy
    temp3.zw = temp0.zw * -expr11.xx + temp2.xy;
    // add r0.zw, r0.xyxy, r3.xywy
    temp0.zw = temp0.xy + temp3.wy;
    // add r2.xy, r0, r3.xzzw
    temp2.xy = temp0.xy + temp3.xz;
    // add r0.xy, r0.zwzw, -r2
    temp0.xy = temp0.zw + -temp2.xy;
    // mad r2.zw, c14.x, r0.xyxy, r2.xyxy
    temp2.zw = expr14.xx * temp0.xy + temp2.xy;
    // mul r0.x, v1.w, c0.z
    temp0.x = i.color.w * float1(100);
    // slt r0.xyz, r0.x, c1
    temp0.xyz = (temp0.xxx < float3(0.5, 1.5, 2.5)) ? 1 : 0;
    // lrp r3, r0.z, r2, v2.xyxy
    temp3 = lerp(i.texcoord.xyxy, temp2, temp0.z);
    // lrp r2, r0.y, r1, r3
    temp2 = lerp(temp3, temp1, temp0.y);
    // mov r0.y, c16.x
    temp0.y = TexCoordTransformU_0.x;
    // mov r0.z, c17.x
    temp0.z = TexCoordTransformV_0.x;
    // add r1.xy, -r0.yzzw, v2
    temp1.xy = -temp0.yz + i.texcoord.xy;
    // mul r1.zw, r1.xyyx, c12.x
    temp1.zw = temp1.yx * expr12.xx;
    // mad r3.xy, r1.yxzw, c11.x, r1.wzzw
    temp3.xy = temp1.yx * expr11.xx + temp1.wz;
    // mad r3.zw, r1.xyxy, -c11.x, r1
    temp3.zw = temp1.xy * -expr11.xx + temp1.zw;
    // add r1.xy, r0.yzzw, r3.wyzw
    temp1.xy = temp0.yz + temp3.wy;
    // add r3.xy, r0.yzzw, r3.xzzw
    temp3.xy = temp0.yz + temp3.xz;
    // add r0.yz, r1.xxyw, -r3.xxyw
    temp0.yz = temp1.xy + -temp3.xy;
    // mad r3.zw, c14.x, r0.xyyz, r3.xyxy
    temp3.zw = expr14.xx * temp0.yz + temp3.xy;
    // lrp r1, r0.x, r3, r2
    temp1 = lerp(temp2, temp3, temp0.x);
    // mov oT0.xy, r1
    o.texcoord = temp1;
    // mov oT1.xy, r1.zwzw
    o.texcoord1 = temp1.zwzw;
    // 

    return o;
}

// VS_Array_Shader_1 Vertex_2_0 Has PRES True
struct VS_Array_Shader_1_Input
{
    float4 blendindices : BLENDINDICES;
    float4 position : POSITION;
    float4 color : COLOR;
    float4 texcoord : TEXCOORD;
};

struct VS_Array_Shader_1_Output
{
    float4 position : POSITION;
    float3 color : COLOR;
    float2 texcoord2 : TEXCOORD2;
    float color1 : COLOR1;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
};

VS_Array_Shader_1_Output VS_Array_Shader_1(VS_Array_Shader_1_Input i)
{
    /*
    PRSI
      OutputRegisterOffset: 11
      Unknown1: 0
      Unknown2: 0
      OutputRegisterCount: 4
      Unknown3: 0
      Unknown4: 0
      Unknown5: 11
      Unknown6: 2
      Mappings: 2
        0 - ConstOutput: 14 ConstInput 1
        1 - ConstOutput: 0 ConstInput 0
    
    */
    float4 expr11;
    float4 expr12;
    float4 expr13;
    float4 expr14;
    {
        float4 temp0;
        float4 temp1;
        // Expression_2_1
        // add r0.x, c0.x, (-1)
        temp0.x = MultiTextureEnable.x + (-1);
        // mul r1.x, r0.x, r0.x
        temp1.x = temp0.x * temp0.x;
        // neg r0.x, r1.x
        temp0.x = -temp1.x;
        // ge c14.x, r0.x, r1.x
        expr14.x = temp0.x >= temp1.x;
        // mul r0.x, c1.x, c2.x
        temp0.x = TexCoordTransformAngle_0.x * Time.x;
        // mul r1.x, r0.x, (0.15915494309189535)
        temp1.x = temp0.x * (0.15915494309189535);
        // add r0.x, r1.x, (0.5)
        temp0.x = temp1.x + (0.5);
        // frc r1.x, r0.x
        temp1.x = frac(temp0.x);
        // mul r0.x, r1.x, (6.283185307179586)
        temp0.x = temp1.x * (6.283185307179586);
        // add r1.x, r0.x, (-3.141592653589793)
        temp1.x = temp0.x + (-3.141592653589793);
        // cos r0.x, r1.x
        temp0.x = cos(temp1.x);
        // sin r0.y, r1.x
        temp0.y = sin(temp1.x);
        // mov c11.x, r0.y
        expr11.x = temp0.y;
        // mov c12.x, r0.x
        expr12.x = temp0.x;
    }

    VS_Array_Shader_1_Output o;
    float4 temp0, temp1, temp2, temp3;
    float addr0;
    // def c0, 1, -1, 100, 0
    // def c1, 0.5, 1.5, 2.5, 0
    // dcl_blendindices v0
    // dcl_position v1
    // dcl_color v2
    // dcl_texcoord v3
    // slt r0.x, v0.x, -v0.x
    temp0.x = (i.blendindices.x < -i.blendindices.x) ? 1 : 0;
    // frc r0.y, v0.x
    temp0.y = frac(i.blendindices.x);
    // add r0.z, -r0.y, v0.x
    temp0.z = -temp0.y + i.blendindices.x;
    // slt r0.y, -r0.y, r0.y
    temp0.y = (-temp0.y < temp0.y) ? 1 : 0;
    // mad r0.x, r0.x, r0.y, r0.z
    temp0.x = temp0.x * temp0.y + temp0.z;
    // add r0.x, r0.x, r0.x
    temp0.x = temp0.x + temp0.x;
    // mova a0.x, r0.x
    addr0.x = temp0.x;
    // mul r0, v1.zxyy, c128[a0.x].yzxy
    temp0 = i.position.zxyy * WorldBones[0 + addr0.x].yzxy;
    // mad r0, c128[a0.x].wwwx, v1.xyzx, r0
    temp0 = WorldBones[0 + addr0.x].wwwx * i.position.xyzx + temp0;
    // mul r1, v1.yzxz, c128[a0.x].zxyz
    temp1 = i.position.yzxz * WorldBones[0 + addr0.x].zxyz;
    // mad r0, r0, c0.xxxy, -r1
    temp0 = temp0 * float4(1, 1, 1, -1) + -temp1;
    // mul r1.xyz, r0.w, c128[a0.x]
    temp1.xyz = temp0.www * WorldBones[0 + addr0.x].xyz;
    // mad r1.xyz, c128[a0.x].w, r0, -r1
    temp1.xyz = WorldBones[0 + addr0.x].www * temp0.xyz + -temp1.xyz;
    // mad r1.xyz, c128[a0.x].yzxw, r0.zxyw, r1
    temp1.xyz = WorldBones[0 + addr0.x].yzx * temp0.zxy + temp1.xyz;
    // mad r0.xyz, c128[a0.x].zxyw, -r0.yzxw, r1
    temp0.xyz = WorldBones[0 + addr0.x].zxy * -temp0.yzx + temp1.xyz;
    // add r0.xyz, r0, c129[a0.x]
    temp0.xyz = temp0.xyz + WorldBones[1 + addr0.x].xyz;
    // mov r0.w, c0.x
    temp0.w = float1(1);
    // dp4 oPos.x, r0, c119
    o.position.x = dot(temp0, (ViewProjection._m00_m10_m20_m30));
    // dp4 oPos.y, r0, c120
    o.position.y = dot(temp0, (ViewProjection._m01_m11_m21_m31));
    // dp4 oPos.z, r0, c121
    o.position.z = dot(temp0, (ViewProjection._m02_m12_m22_m32));
    // dp4 oPos.w, r0, c122
    o.position.w = dot(temp0, (ViewProjection._m03_m13_m23_m33));
    // add r0.xy, r0, c22.zwzw
    temp0.xy = temp0.xy + Shroud.ScaleUV_OffsetUV.zw;
    // mul oD0.xyz, v2, c15
    o.color = i.color * ColorEmissive;
    // mul oT2.xy, r0, c22
    o.texcoord2 = temp0 * Shroud.ScaleUV_OffsetUV;
    // mov oD1.x, c0.x
    o.color1 = float4(1, 1, 1, 1);
    // mov r0.x, c18.x
    temp0.x = TexCoordTransformU_1.x;
    // mov r0.y, c19.x
    temp0.y = TexCoordTransformV_1.x;
    // add r0.zw, -r0.xyxy, v3.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r1.xy, r0.wzzw, c12.x
    temp1.xy = temp0.wz * expr12.xx;
    // mad r2.xy, r0.wzzw, c11.x, r1.yxzw
    temp2.xy = temp0.wz * expr11.xx + temp1.yx;
    // mad r2.zw, r0, -c11.x, r1.xyxy
    temp2.zw = temp0.zw * -expr11.xx + temp1.xy;
    // add r0.zw, r0.xyxy, r2.xywy
    temp0.zw = temp0.xy + temp2.wy;
    // add r1.xy, r0, r2.xzzw
    temp1.xy = temp0.xy + temp2.xz;
    // add r0.xy, r0.zwzw, -r1
    temp0.xy = temp0.zw + -temp1.xy;
    // mad r1.zw, c14.x, r0.xyxy, r1.xyxy
    temp1.zw = expr14.xx * temp0.xy + temp1.xy;
    // mov r0.x, c20.x
    temp0.x = TexCoordTransformU_2.x;
    // mov r0.y, c21.x
    temp0.y = TexCoordTransformV_2.x;
    // add r0.zw, -r0.xyxy, v3.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r2.xy, r0.wzzw, c12.x
    temp2.xy = temp0.wz * expr12.xx;
    // mad r3.xy, r0.wzzw, c11.x, r2.yxzw
    temp3.xy = temp0.wz * expr11.xx + temp2.yx;
    // mad r3.zw, r0, -c11.x, r2.xyxy
    temp3.zw = temp0.zw * -expr11.xx + temp2.xy;
    // add r0.zw, r0.xyxy, r3.xywy
    temp0.zw = temp0.xy + temp3.wy;
    // add r2.xy, r0, r3.xzzw
    temp2.xy = temp0.xy + temp3.xz;
    // add r0.xy, r0.zwzw, -r2
    temp0.xy = temp0.zw + -temp2.xy;
    // mad r2.zw, c14.x, r0.xyxy, r2.xyxy
    temp2.zw = expr14.xx * temp0.xy + temp2.xy;
    // mul r0.x, v2.w, c0.z
    temp0.x = i.color.w * float1(100);
    // slt r0.xyz, r0.x, c1
    temp0.xyz = (temp0.xxx < float3(0.5, 1.5, 2.5)) ? 1 : 0;
    // lrp r3, r0.z, r2, v3.xyxy
    temp3 = lerp(i.texcoord.xyxy, temp2, temp0.z);
    // lrp r2, r0.y, r1, r3
    temp2 = lerp(temp3, temp1, temp0.y);
    // mov r0.y, c16.x
    temp0.y = TexCoordTransformU_0.x;
    // mov r0.z, c17.x
    temp0.z = TexCoordTransformV_0.x;
    // add r1.xy, -r0.yzzw, v3
    temp1.xy = -temp0.yz + i.texcoord.xy;
    // mul r1.zw, r1.xyyx, c12.x
    temp1.zw = temp1.yx * expr12.xx;
    // mad r3.xy, r1.yxzw, c11.x, r1.wzzw
    temp3.xy = temp1.yx * expr11.xx + temp1.wz;
    // mad r3.zw, r1.xyxy, -c11.x, r1
    temp3.zw = temp1.xy * -expr11.xx + temp1.zw;
    // add r1.xy, r0.yzzw, r3.wyzw
    temp1.xy = temp0.yz + temp3.wy;
    // add r3.xy, r0.yzzw, r3.xzzw
    temp3.xy = temp0.yz + temp3.xz;
    // add r0.yz, r1.xxyw, -r3.xxyw
    temp0.yz = temp1.xy + -temp3.xy;
    // mad r3.zw, c14.x, r0.xyyz, r3.xyxy
    temp3.zw = expr14.xx * temp0.yz + temp3.xy;
    // lrp r1, r0.x, r3, r2
    temp1 = lerp(temp2, temp3, temp0.x);
    // mov oT0.xy, r1
    o.texcoord = temp1;
    // mov oT1.xy, r1.zwzw
    o.texcoord1 = temp1.zwzw;
    // 

    return o;
}

// VS_Array_Shader_2 Vertex_2_0 Has PRES True
struct VS_Array_Shader_2_Input
{
    float4 blendindices : BLENDINDICES;
    float4 blendweight : BLENDWEIGHT;
    float4 position : POSITION;
    float4 position1 : POSITION1;
    float4 color : COLOR;
    float4 texcoord : TEXCOORD;
};

struct VS_Array_Shader_2_Output
{
    float4 position : POSITION;
    float3 color : COLOR;
    float2 texcoord2 : TEXCOORD2;
    float color1 : COLOR1;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
};

VS_Array_Shader_2_Output VS_Array_Shader_2(VS_Array_Shader_2_Input i)
{
    /*
    PRSI
      OutputRegisterOffset: 11
      Unknown1: 0
      Unknown2: 0
      OutputRegisterCount: 4
      Unknown3: 0
      Unknown4: 0
      Unknown5: 11
      Unknown6: 2
      Mappings: 2
        0 - ConstOutput: 14 ConstInput 1
        1 - ConstOutput: 0 ConstInput 0
    
    */
    float4 expr11;
    float4 expr12;
    float4 expr13;
    float4 expr14;
    {
        float4 temp0;
        float4 temp1;
        // Expression_2_1
        // add r0.x, c0.x, (-1)
        temp0.x = MultiTextureEnable.x + (-1);
        // mul r1.x, r0.x, r0.x
        temp1.x = temp0.x * temp0.x;
        // neg r0.x, r1.x
        temp0.x = -temp1.x;
        // ge c14.x, r0.x, r1.x
        expr14.x = temp0.x >= temp1.x;
        // mul r0.x, c1.x, c2.x
        temp0.x = TexCoordTransformAngle_0.x * Time.x;
        // mul r1.x, r0.x, (0.15915494309189535)
        temp1.x = temp0.x * (0.15915494309189535);
        // add r0.x, r1.x, (0.5)
        temp0.x = temp1.x + (0.5);
        // frc r1.x, r0.x
        temp1.x = frac(temp0.x);
        // mul r0.x, r1.x, (6.283185307179586)
        temp0.x = temp1.x * (6.283185307179586);
        // add r1.x, r0.x, (-3.141592653589793)
        temp1.x = temp0.x + (-3.141592653589793);
        // cos r0.x, r1.x
        temp0.x = cos(temp1.x);
        // sin r0.y, r1.x
        temp0.y = sin(temp1.x);
        // mov c11.x, r0.y
        expr11.x = temp0.y;
        // mov c12.x, r0.x
        expr12.x = temp0.x;
    }

    VS_Array_Shader_2_Output o;
    float4 temp0, temp1, temp2, temp3;
    float2 addr0;
    // def c0, 0.5, 1.5, 2.5, 0
    // def c1, 1, -1, 100, 0
    // dcl_blendindices v0
    // dcl_blendweight v1
    // dcl_position v2
    // dcl_position1 v3
    // dcl_color v4
    // dcl_texcoord v5
    // slt r0.xy, v0, -v0
    temp0.xy = (i.blendindices.xy < -i.blendindices.xy) ? 1 : 0;
    // frc r0.zw, v0.xyxy
    temp0.zw = frac(i.blendindices.xy);
    // add r1.xy, -r0.zwzw, v0
    temp1.xy = -temp0.zw + i.blendindices.xy;
    // slt r0.zw, -r0, r0
    temp0.zw = (-temp0.zw < temp0.zw) ? 1 : 0;
    // mad r0.xy, r0, r0.zwzw, r1
    temp0.xy = temp0.xy * temp0.zw + temp1.xy;
    // add r0.xy, r0, r0
    temp0.xy = temp0.xy + temp0.xy;
    // mova a0.xy, r0
    addr0.xy = temp0.xy;
    // mul r0, v3.zxyy, c128[a0.y].yzxy
    temp0 = i.position1.zxyy * WorldBones[0 + addr0.y].yzxy;
    // mad r0, c128[a0.y].wwwx, v3.xyzx, r0
    temp0 = WorldBones[0 + addr0.y].wwwx * i.position1.xyzx + temp0;
    // mul r1, v3.yzxz, c128[a0.y].zxyz
    temp1 = i.position1.yzxz * WorldBones[0 + addr0.y].zxyz;
    // mad r0, r0, c1.xxxy, -r1
    temp0 = temp0 * float4(1, 1, 1, -1) + -temp1;
    // mul r1.xyz, r0.w, c128[a0.y]
    temp1.xyz = temp0.www * WorldBones[0 + addr0.y].xyz;
    // mad r1.xyz, c128[a0.y].w, r0, -r1
    temp1.xyz = WorldBones[0 + addr0.y].www * temp0.xyz + -temp1.xyz;
    // mad r1.xyz, c128[a0.y].yzxw, r0.zxyw, r1
    temp1.xyz = WorldBones[0 + addr0.y].yzx * temp0.zxy + temp1.xyz;
    // mad r0.xyz, c128[a0.y].zxyw, -r0.yzxw, r1
    temp0.xyz = WorldBones[0 + addr0.y].zxy * -temp0.yzx + temp1.xyz;
    // add r0.xyz, r0, c129[a0.y]
    temp0.xyz = temp0.xyz + WorldBones[1 + addr0.y].xyz;
    // mul r0.xyz, r0, v1.y
    temp0.xyz = temp0.xyz * i.blendweight.yyy;
    // mul r1, v2.zxyy, c128[a0.x].yzxy
    temp1 = i.position.zxyy * WorldBones[0 + addr0.x].yzxy;
    // mad r1, c128[a0.x].wwwx, v2.xyzx, r1
    temp1 = WorldBones[0 + addr0.x].wwwx * i.position.xyzx + temp1;
    // mul r2, v2.yzxz, c128[a0.x].zxyz
    temp2 = i.position.yzxz * WorldBones[0 + addr0.x].zxyz;
    // mad r1, r1, c1.xxxy, -r2
    temp1 = temp1 * float4(1, 1, 1, -1) + -temp2;
    // mul r2.xyz, r1.w, c128[a0.x]
    temp2.xyz = temp1.www * WorldBones[0 + addr0.x].xyz;
    // mad r2.xyz, c128[a0.x].w, r1, -r2
    temp2.xyz = WorldBones[0 + addr0.x].www * temp1.xyz + -temp2.xyz;
    // mad r2.xyz, c128[a0.x].yzxw, r1.zxyw, r2
    temp2.xyz = WorldBones[0 + addr0.x].yzx * temp1.zxy + temp2.xyz;
    // mad r1.xyz, c128[a0.x].zxyw, -r1.yzxw, r2
    temp1.xyz = WorldBones[0 + addr0.x].zxy * -temp1.yzx + temp2.xyz;
    // add r1.xyz, r1, c129[a0.x]
    temp1.xyz = temp1.xyz + WorldBones[1 + addr0.x].xyz;
    // mad r0.xyz, r1, v1.x, r0
    temp0.xyz = temp1.xyz * i.blendweight.xxx + temp0.xyz;
    // mov r0.w, c1.x
    temp0.w = float1(1);
    // dp4 oPos.x, r0, c119
    o.position.x = dot(temp0, (ViewProjection._m00_m10_m20_m30));
    // dp4 oPos.y, r0, c120
    o.position.y = dot(temp0, (ViewProjection._m01_m11_m21_m31));
    // dp4 oPos.z, r0, c121
    o.position.z = dot(temp0, (ViewProjection._m02_m12_m22_m32));
    // dp4 oPos.w, r0, c122
    o.position.w = dot(temp0, (ViewProjection._m03_m13_m23_m33));
    // add r0.xy, r0, c22.zwzw
    temp0.xy = temp0.xy + Shroud.ScaleUV_OffsetUV.zw;
    // mul oD0.xyz, v4, c15
    o.color = i.color * ColorEmissive;
    // mul oT2.xy, r0, c22
    o.texcoord2 = temp0 * Shroud.ScaleUV_OffsetUV;
    // mov oD1.x, c1.x
    o.color1 = float4(1, 1, 1, 1);
    // mov r0.x, c18.x
    temp0.x = TexCoordTransformU_1.x;
    // mov r0.y, c19.x
    temp0.y = TexCoordTransformV_1.x;
    // add r0.zw, -r0.xyxy, v5.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r1.xy, r0.wzzw, c12.x
    temp1.xy = temp0.wz * expr12.xx;
    // mad r2.xy, r0.wzzw, c11.x, r1.yxzw
    temp2.xy = temp0.wz * expr11.xx + temp1.yx;
    // mad r2.zw, r0, -c11.x, r1.xyxy
    temp2.zw = temp0.zw * -expr11.xx + temp1.xy;
    // add r0.zw, r0.xyxy, r2.xywy
    temp0.zw = temp0.xy + temp2.wy;
    // add r1.xy, r0, r2.xzzw
    temp1.xy = temp0.xy + temp2.xz;
    // add r0.xy, r0.zwzw, -r1
    temp0.xy = temp0.zw + -temp1.xy;
    // mad r1.zw, c14.x, r0.xyxy, r1.xyxy
    temp1.zw = expr14.xx * temp0.xy + temp1.xy;
    // mov r0.x, c20.x
    temp0.x = TexCoordTransformU_2.x;
    // mov r0.y, c21.x
    temp0.y = TexCoordTransformV_2.x;
    // add r0.zw, -r0.xyxy, v5.xyxy
    temp0.zw = -temp0.xy + i.texcoord.xy;
    // mul r2.xy, r0.wzzw, c12.x
    temp2.xy = temp0.wz * expr12.xx;
    // mad r3.xy, r0.wzzw, c11.x, r2.yxzw
    temp3.xy = temp0.wz * expr11.xx + temp2.yx;
    // mad r3.zw, r0, -c11.x, r2.xyxy
    temp3.zw = temp0.zw * -expr11.xx + temp2.xy;
    // add r0.zw, r0.xyxy, r3.xywy
    temp0.zw = temp0.xy + temp3.wy;
    // add r2.xy, r0, r3.xzzw
    temp2.xy = temp0.xy + temp3.xz;
    // add r0.xy, r0.zwzw, -r2
    temp0.xy = temp0.zw + -temp2.xy;
    // mad r2.zw, c14.x, r0.xyxy, r2.xyxy
    temp2.zw = expr14.xx * temp0.xy + temp2.xy;
    // mul r0.x, v4.w, c1.z
    temp0.x = i.color.w * float1(100);
    // slt r0.xyz, r0.x, c0
    temp0.xyz = (temp0.xxx < float3(0.5, 1.5, 2.5)) ? 1 : 0;
    // lrp r3, r0.z, r2, v5.xyxy
    temp3 = lerp(i.texcoord.xyxy, temp2, temp0.z);
    // lrp r2, r0.y, r1, r3
    temp2 = lerp(temp3, temp1, temp0.y);
    // mov r0.y, c16.x
    temp0.y = TexCoordTransformU_0.x;
    // mov r0.z, c17.x
    temp0.z = TexCoordTransformV_0.x;
    // add r1.xy, -r0.yzzw, v5
    temp1.xy = -temp0.yz + i.texcoord.xy;
    // mul r1.zw, r1.xyyx, c12.x
    temp1.zw = temp1.yx * expr12.xx;
    // mad r3.xy, r1.yxzw, c11.x, r1.wzzw
    temp3.xy = temp1.yx * expr11.xx + temp1.wz;
    // mad r3.zw, r1.xyxy, -c11.x, r1
    temp3.zw = temp1.xy * -expr11.xx + temp1.zw;
    // add r1.xy, r0.yzzw, r3.wyzw
    temp1.xy = temp0.yz + temp3.wy;
    // add r3.xy, r0.yzzw, r3.xzzw
    temp3.xy = temp0.yz + temp3.xz;
    // add r0.yz, r1.xxyw, -r3.xxyw
    temp0.yz = temp1.xy + -temp3.xy;
    // mad r3.zw, c14.x, r0.xyyz, r3.xyxy
    temp3.zw = expr14.xx * temp0.yz + temp3.xy;
    // lrp r1, r0.x, r3, r2
    temp1 = lerp(temp2, temp3, temp0.x);
    // mov oT0.xy, r1
    o.texcoord = temp1;
    // mov oT1.xy, r1.zwzw
    o.texcoord1 = temp1.zwzw;
    // 

    return o;
}

VertexShader VS_Array[3] = {
    compile vs_2_0 VS_Array_Shader_0(), // 30
    compile vs_2_0 VS_Array_Shader_1(), // 31
    compile vs_2_0 VS_Array_Shader_2(), // 32
};
// Multiply_M_PixelShader4 Pixel_2_0 Has PRES False
struct Multiply_M_PixelShader4_Input
{
    float3 color : COLOR;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
    float2 texcoord2 : TEXCOORD2;
};

float4 Multiply_M_PixelShader4(Multiply_M_PixelShader4_Input i) : COLOR
{
    float4 out_color;
    float4 temp0, temp1, temp2, temp3;
    // def c0, 1, -1, 0, 0
    // dcl v0.xyz
    // dcl t0.xy
    // dcl t1.xy
    // dcl t2.xy
    // dcl_2d s0
    // dcl_2d s1
    // texld r0, t0, s0
    temp0 = tex2D(Texture_0Sampler, i.texcoord.xy);
    // texld r1, t1, s0
    temp1 = tex2D(Texture_0Sampler, i.texcoord1.xy);
    // texld r2, t2, s1
    temp2 = tex2D(ShroudTextureSampler, i.texcoord2.xy);
    // mov r3.xyz, v0
    temp3.xyz = i.color.xyz;
    // mov r3.w, r1.w
    temp3.w = temp1.w;
    // mul r0, r0, r3
    temp0 = temp0 * temp3;
    // mad r0.xyz, r0, r1, c0.y
    temp0.xyz = temp0.xyz * temp1.xyz + float3(-1, -1, -1);
    // mad r1.xyz, r2, r0, c0.x
    temp1.xyz = temp2.xyz * temp0.xyz + float3(1, 1, 1);
    // mov r0.x, c0.x
    temp0.x = float1(1);
    // mul r1.w, r0.w, r0.x
    temp1.w = temp0.w * temp0.x;
    // mov oC0, r1
    out_color = temp1;
    // 

    return out_color;
}

// Multiply_M_Expression5 Expression_2_0 Has PRES False
float Multiply_M_Expression5()
{
    float1 expr0;
    // min c0.x, c0.x, (2)
    expr0.x = min(NumJointsPerVertex.x, (2));
    return expr0;
}

// Additive_M_PixelShader6 Pixel_2_0 Has PRES False
struct Additive_M_PixelShader6_Input
{
    float3 color : COLOR;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
    float2 texcoord2 : TEXCOORD2;
};

float4 Additive_M_PixelShader6(Additive_M_PixelShader6_Input i) : COLOR
{
    float4 out_color;
    float4 temp0, temp1, temp2, temp3;
    // def c0, 1, 0, 0, 0
    // dcl v0.xyz
    // dcl t0.xy
    // dcl t1.xy
    // dcl t2.xy
    // dcl_2d s0
    // dcl_2d s1
    // texld r0, t0, s0
    temp0 = tex2D(Texture_0Sampler, i.texcoord.xy);
    // texld r1, t1, s0
    temp1 = tex2D(Texture_0Sampler, i.texcoord1.xy);
    // texld r2, t2, s1
    temp2 = tex2D(ShroudTextureSampler, i.texcoord2.xy);
    // mov r3.xyz, v0
    temp3.xyz = i.color.xyz;
    // mov r3.w, r1.w
    temp3.w = temp1.w;
    // mul r0, r0, r3
    temp0 = temp0 * temp3;
    // mov r1.w, c0.x
    temp1.w = float1(1);
    // mul r0, r1, r0
    temp0 = temp1 * temp0;
    // mul r0.xyz, r2, r0
    temp0.xyz = temp2.xyz * temp0.xyz;
    // mov oC0, r0
    out_color = temp0;
    // 

    return out_color;
}

// Additive_M_Expression7 Expression_2_0 Has PRES False
float Additive_M_Expression7()
{
    float1 expr0;
    // min c0.x, c0.x, (2)
    expr0.x = min(NumJointsPerVertex.x, (2));
    return expr0;
}

// Multiply_PixelShader8 Pixel_2_0 Has PRES False
struct Multiply_PixelShader8_Input
{
    float3 color : COLOR;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
    float2 texcoord2 : TEXCOORD2;
};

float4 Multiply_PixelShader8(Multiply_PixelShader8_Input i) : COLOR
{
    float4 out_color;
    float4 temp0, temp1, temp2, temp3;
    float3 temp4;
    // def c0, 2.2, 1, -1, 0
    // dcl v0.xyz
    // dcl t0.xy
    // dcl t1.xy
    // dcl t2.xy
    // dcl_2d s0
    // dcl_2d s1
    // texld r0, t0, s0
    temp0 = tex2D(Texture_0Sampler, i.texcoord.xy);
    // texld r1, t1, s0
    temp1 = tex2D(Texture_0Sampler, i.texcoord1.xy);
    // texld r2, t2, s1
    temp2 = tex2D(ShroudTextureSampler, i.texcoord2.xy);
    // mov r3.xyz, v0
    temp3.xyz = i.color.xyz;
    // log r4.x, r0.x
    temp4.x = log2(temp0.x);
    // log r4.y, r0.y
    temp4.y = log2(temp0.y);
    // log r4.z, r0.z
    temp4.z = log2(temp0.z);
    // mul r4.xyz, r4, c0.x
    temp4.xyz = temp4.xyz * float3(2.2, 2.2, 2.2);
    // exp r0.x, r4.x
    temp0.x = exp2(temp4.x);
    // exp r0.y, r4.y
    temp0.y = exp2(temp4.y);
    // exp r0.z, r4.z
    temp0.z = exp2(temp4.z);
    // mov r3.w, r1.w
    temp3.w = temp1.w;
    // mul r0, r3, r0
    temp0 = temp3 * temp0;
    // log r3.x, r1.x
    temp3.x = log2(temp1.x);
    // log r3.y, r1.y
    temp3.y = log2(temp1.y);
    // log r3.z, r1.z
    temp3.z = log2(temp1.z);
    // mul r1.xyz, r3, c0.x
    temp1.xyz = temp3.xyz * float3(2.2, 2.2, 2.2);
    // exp r3.x, r1.x
    temp3.x = exp2(temp1.x);
    // exp r3.y, r1.y
    temp3.y = exp2(temp1.y);
    // exp r3.z, r1.z
    temp3.z = exp2(temp1.z);
    // mad r0.xyz, r0, r3, c0.z
    temp0.xyz = temp0.xyz * temp3.xyz + float3(-1, -1, -1);
    // mad r1.xyz, r2, r0, c0.y
    temp1.xyz = temp2.xyz * temp0.xyz + float3(1, 1, 1);
    // mov r0.x, c0.y
    temp0.x = float1(1);
    // mul r1.w, r0.w, r0.x
    temp1.w = temp0.w * temp0.x;
    // mov oC0, r1
    out_color = temp1;
    // 

    return out_color;
}

// Multiply_Expression9 Expression_2_0 Has PRES False
float Multiply_Expression9()
{
    float1 expr0;
    // min c0.x, c0.x, (2)
    expr0.x = min(NumJointsPerVertex.x, (2));
    return expr0;
}

// Additive_PixelShader10 Pixel_2_0 Has PRES False
struct Additive_PixelShader10_Input
{
    float3 color : COLOR;
    float2 texcoord : TEXCOORD;
    float2 texcoord1 : TEXCOORD1;
    float2 texcoord2 : TEXCOORD2;
};

float4 Additive_PixelShader10(Additive_PixelShader10_Input i) : COLOR
{
    float4 out_color;
    float4 temp0, temp1, temp2, temp3;
    float3 temp4;
    // def c0, 2.2, 1, 0, 0
    // dcl v0.xyz
    // dcl t0.xy
    // dcl t1.xy
    // dcl t2.xy
    // dcl_2d s0
    // dcl_2d s1
    // texld r0, t0, s0
    temp0 = tex2D(Texture_0Sampler, i.texcoord.xy);
    // texld r1, t1, s0
    temp1 = tex2D(Texture_0Sampler, i.texcoord1.xy);
    // texld r2, t2, s1
    temp2 = tex2D(ShroudTextureSampler, i.texcoord2.xy);
    // mov r3.xyz, v0
    temp3.xyz = i.color.xyz;
    // log r4.x, r0.x
    temp4.x = log2(temp0.x);
    // log r4.y, r0.y
    temp4.y = log2(temp0.y);
    // log r4.z, r0.z
    temp4.z = log2(temp0.z);
    // mul r4.xyz, r4, c0.x
    temp4.xyz = temp4.xyz * float3(2.2, 2.2, 2.2);
    // exp r0.x, r4.x
    temp0.x = exp2(temp4.x);
    // exp r0.y, r4.y
    temp0.y = exp2(temp4.y);
    // exp r0.z, r4.z
    temp0.z = exp2(temp4.z);
    // mov r3.w, r1.w
    temp3.w = temp1.w;
    // mul r0, r3, r0
    temp0 = temp3 * temp0;
    // mov r3.w, c0.y
    temp3.w = float1(1);
    // log r4.x, r1.x
    temp4.x = log2(temp1.x);
    // log r4.y, r1.y
    temp4.y = log2(temp1.y);
    // log r4.z, r1.z
    temp4.z = log2(temp1.z);
    // mul r1.xyz, r4, c0.x
    temp1.xyz = temp4.xyz * float3(2.2, 2.2, 2.2);
    // exp r3.x, r1.x
    temp3.x = exp2(temp1.x);
    // exp r3.y, r1.y
    temp3.y = exp2(temp1.y);
    // exp r3.z, r1.z
    temp3.z = exp2(temp1.z);
    // mul r0, r0, r3
    temp0 = temp0 * temp3;
    // mul r0.xyz, r2, r0
    temp0.xyz = temp2.xyz * temp0.xyz;
    // mov oC0, r0
    out_color = temp0;
    // 

    return out_color;
}

// Additive_Expression11 Expression_2_0 Has PRES False
float Additive_Expression11()
{
    float1 expr0;
    // min c0.x, c0.x, (2)
    expr0.x = min(NumJointsPerVertex.x, (2));
    return expr0;
}

technique Additive
{
    pass P0
    {
        VertexShader = VS_Array[Additive_Expression11()]; // 33
        PixelShader = compile ps_2_0 Additive_PixelShader10(); // 34
        ZEnable = 1;
        ZFunc = 4;
        ZWriteEnable = 0;
        CullMode = 1;
        AlphaBlendEnable = 1;
        SrcBlend = 2;
        DestBlend = 2;
        AlphaTestEnable = 0;
    }
}

technique Multiply
{
    pass P0
    {
        VertexShader = VS_Array[Multiply_Expression9()]; // 35
        PixelShader = compile ps_2_0 Multiply_PixelShader8(); // 36
        ZEnable = 1;
        ZFunc = 4;
        ZWriteEnable = 0;
        CullMode = 1;
        AlphaBlendEnable = 1;
        SrcBlend = 9;
        DestBlend = 1;
        AlphaTestEnable = 0;
    }
}

technique Additive_M
{
    pass P0
    {
        VertexShader = VS_Array[Additive_M_Expression7()]; // 37
        PixelShader = compile ps_2_0 Additive_M_PixelShader6(); // 38
        ZEnable = 1;
        ZFunc = 4;
        ZWriteEnable = 0;
        CullMode = 1;
        AlphaBlendEnable = 1;
        SrcBlend = 2;
        DestBlend = 2;
        AlphaTestEnable = 0;
    }
}

technique Multiply_M
{
    pass P0
    {
        VertexShader = VS_Array[Multiply_M_Expression5()]; // 39
        PixelShader = compile ps_2_0 Multiply_M_PixelShader4(); // 40
        ZEnable = 1;
        ZFunc = 4;
        ZWriteEnable = 0;
        CullMode = 1;
        AlphaBlendEnable = 1;
        SrcBlend = 9;
        DestBlend = 1;
        AlphaTestEnable = 0;
    }
}