struct {
};

struct {
    bool b;
};

struct myS {
    bool b, c;
    float4 a, d;
};

myS s1;

struct {
    float4 i;
} s2;

struct IN_S {
    linear float4 a;
    nointerpolation bool b;
    noperspective centroid float1 c;
    sample centroid float2 d;
    bool ff1 : SV_IsFrontFace;
    bool ff2 : packoffset(c0.y);
    bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ;
    float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
};

float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]);
float3 ff6 : packoffset(c2.y) : register(s3[5]);

float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
{
    struct FS {
        bool3 b3;
    } s3;

    s3 == s3;
    s2.i = s.ff4;

    return input;
}