// MIR for `option_direct` after PreCodegen

fn option_direct(_1: Option<u32>) -> Option<u32> {
    debug x => _1;
    let mut _0: std::option::Option<u32>;
    let mut _2: isize;
    let _3: u32;
    let mut _4: u32;
    scope 1 {
        debug x => _3;
    }

    bb0: {
        _2 = discriminant(_1);
        switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4];
    }

    bb1: {
        _0 = Option::<u32>::None;
        goto -> bb3;
    }

    bb2: {
        _3 = copy ((_1 as Some).0: u32);
        _4 = Not(copy _3);
        _0 = Option::<u32>::Some(move _4);
        goto -> bb3;
    }

    bb3: {
        return;
    }

    bb4: {
        unreachable;
    }
}
