{
    let a := mload(0)
    let b := mload(1)
    switch mload(2)
    case 0 {
        a := mload(b)
        b := mload(a)
        a := mload(b)
        b := mload(a)
    }
    default {
        b := mload(a)
        a := mload(b)
        b := mload(a)
        a := mload(b)
    }
    mstore(a, b)
}
// ----
// step: ssaAndBack
//
// {
//     let a := mload(0)
//     let b := mload(1)
//     switch mload(2)
//     case 0 {
//         let a_3 := mload(b)
//         let b_4 := mload(a_3)
//         a := mload(b_4)
//         b := mload(a)
//     }
//     default {
//         let b_7 := mload(a)
//         let a_8 := mload(b_7)
//         b := mload(a_8)
//         a := mload(b)
//     }
//     mstore(a, b)
// }
