contract C {
    struct X {
        uint256 x1;
        uint256 x2;
    }
    struct S {
        uint256 s1;
        uint256[3] s2;
        X s3;
    }
    S s;

    constructor() {
        uint256[3] memory s2;
        s2[1] = 9;
        s = S(1, s2, X(4, 5));
    }

    function get()
        public
        returns (uint256 s1, uint256[3] memory s2, uint256 x1, uint256 x2)
    {
        s1 = s.s1;
        s2 = s.s2;
        x1 = s.s3.x1;
        x2 = s.s3.x2;
    }
}
// ----
// get() -> 0x01, 0x00, 0x09, 0x00, 0x04, 0x05