// MIR for `main` after built

fn main() -> () {
    let mut _0: ();
    let mut _1: ();
    let _2: i32;
    let mut _3: bool;
    let mut _4: !;
    let _5: ();
    let mut _6: &i32;
    scope 1 {
        debug beacon => _2;
    }

    bb0: {
        goto -> bb1;
    }

    bb1: {
        falseUnwind -> [real: bb2, unwind: bb14];
    }

    bb2: {
        StorageLive(_2);
        StorageLive(_3);
        _3 = const true;
        PlaceMention(_3);
        switchInt(copy _3) -> [0: bb4, otherwise: bb6];
    }

    bb3: {
        FakeRead(ForMatchedPlace(None), _3);
        unreachable;
    }

    bb4: {
        falseEdge -> [real: bb8, imaginary: bb6];
    }

    bb5: {
        goto -> bb3;
    }

    bb6: {
        _0 = const ();
        goto -> bb13;
    }

    bb7: {
        goto -> bb3;
    }

    bb8: {
        _2 = const 4_i32;
        goto -> bb11;
    }

    bb9: {
        unreachable;
    }

    bb10: {
        goto -> bb11;
    }

    bb11: {
        FakeRead(ForLet(None), _2);
        StorageDead(_3);
        StorageLive(_5);
        StorageLive(_6);
        _6 = &_2;
        _5 = std::mem::drop::<&i32>(move _6) -> [return: bb12, unwind: bb14];
    }

    bb12: {
        StorageDead(_6);
        StorageDead(_5);
        _1 = const ();
        StorageDead(_2);
        goto -> bb1;
    }

    bb13: {
        StorageDead(_3);
        StorageDead(_2);
        return;
    }

    bb14 (cleanup): {
        resume;
    }
}
