contract C {
    function f() public pure returns (bytes32 r) {
        bytes4 x = 0xffffffff;
        bytes2 y = bytes2(x);
        assembly {
            r := y
        }
        // At this point, r and y both store four bytes, but
        // y is properly cleaned before the equality check
        require(y == bytes2(0xffff));
    }
}
// ====
// compileViaYul: false
// ----
// f() -> 0xffffffff00000000000000000000000000000000000000000000000000000000
