{
    function a() {
        if calldataload(0) {
            revert(0, 0)
        }
        reg()
        b()
    }
    function b() {
        a()
        return(0, 0)
    }
    function c() {
        c()
        revert(0, 0)
    }
    function d() {
        switch calldataload(0)
        case 0 { x() }
        case 1 { y() reg() revert(0, 0) }
        default { z() }
    }
    function x() { d() revert(0, 0) }
    function y() { reg() x() }
    function z() { y() }

    function reg() {}
}
// ----
// a: can revert
// b: can revert
// c:
// d:
// x:
// y:
// z:
// reg: can continue