// MIR for `main::{closure#0}::{closure#0}::{closure#1}` after built

fn main::{closure#0}::{closure#0}::{closure#1}(_1: {async closure body@$DIR/async_closure_shims.rs:54:53: 57:10}, _2: ResumeTy) -> ()
yields ()
 {
    debug _task_context => _2;
    debug a => (_1.0: i32);
    debug b => (_1.1: i32);
    let mut _0: ();
    let _3: i32;
    scope 1 {
        debug a => _3;
        let _4: &i32;
        scope 2 {
            debug a => _4;
            let _5: &i32;
            scope 3 {
                debug b => _5;
            }
        }
    }

    bb0: {
        StorageLive(_3);
        _3 = copy (_1.0: i32);
        FakeRead(ForLet(None), _3);
        StorageLive(_4);
        _4 = &_3;
        FakeRead(ForLet(None), _4);
        StorageLive(_5);
        _5 = &(_1.1: i32);
        FakeRead(ForLet(None), _5);
        _0 = const ();
        StorageDead(_5);
        StorageDead(_4);
        StorageDead(_3);
        drop(_1) -> [return: bb1, unwind: bb2];
    }

    bb1: {
        return;
    }

    bb2 (cleanup): {
        resume;
    }
}
