RWByteAddressBuffer bar : register(u0);
RWByteAddressBuffer foo : register(u1);

void _main()
{
    [unroll]
    for (int i = 0; i < 16; i++)
    {
        bar.Store4(i * 16 + 0, asuint(asfloat(foo.Load4(i * 16 + 0))));
    }
    [loop]
    for (int i_1 = 0; i_1 < 16; i_1++)
    {
        bar.Store4((15 - i_1) * 16 + 0, asuint(asfloat(foo.Load4(i_1 * 16 + 0))));
    }
    float v = asfloat(bar.Load(160));
    float w = asfloat(foo.Load(160));
    [branch]
    if (v > 10.0f)
    {
        foo.Store4(320, asuint(5.0f.xxxx));
    }
    float value = 20.0f;
    [flatten]
    if (w > 40.0f)
    {
        value = 20.0f;
    }
    foo.Store4(320, asuint(value.xxxx));
}

void comp_main()
{
    _main();
}

[numthreads(1, 1, 1)]
void main()
{
    comp_main();
}
