{
    function recursive() { recursive() }
    function terminating() { stop() }
    function maybeReverting() { if calldataload(0) { revert(0, 0) } }

    let a := calldataload(7)
    if a { recursive() }

    a := calldataload(a)
    if a { maybeReverting() }

    a := calldataload(a)
    if a { terminating() }

    sstore(0, a)
}
// ----
// step: conditionalSimplifier
//
// {
//     function recursive()
//     { recursive() }
//     function terminating()
//     { stop() }
//     function maybeReverting()
//     {
//         if calldataload(0) { revert(0, 0) }
//     }
//     let a := calldataload(7)
//     if a { recursive() }
//     a := 0
//     a := calldataload(a)
//     if a { maybeReverting() }
//     a := calldataload(a)
//     if a { terminating() }
//     a := 0
//     sstore(0, a)
// }
