Skip to content

Instantly share code, notes, and snippets.

@nekodjin
Created October 24, 2021 17:01
Show Gist options
  • Save nekodjin/ef915aa6a4bdeb307a6e6f7dd198bf61 to your computer and use it in GitHub Desktop.
Save nekodjin/ef915aa6a4bdeb307a6e6f7dd198bf61 to your computer and use it in GitHub Desktop.
Demo of Rust Compilation Chain

Rust:

fn main() {
    for i in 1..=10 {
        println!("{}", i);
    }
}

HIR:

#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
fn main() {
    {
        let _t = match #[lang = "into_iter"](#[lang = "range_inclusive_new"] (1, 10)) {
            mut iter => loop {
                let mut __next;
                match #[lang = "next"](&mut iter) {
                    #[lang = "Some"] { 0: val } => __next = val,
                    #[lang = "None"] {  } => break ,
                }
                let i = __next;
                {
                    {
                        ::std::io::_print(
                            ::core::fmt::Arguments::new_v1(
                                &["", "\n"],
                                &match (&i,) {
                                    (arg0,) => [
                                        ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Display::fmt)
                                    ],
                                }
                            )
                        );
                    };
                }
            },
        };
        _t
    }
}

MIR:

// WARNING: This output format is intended for human consumers only
// and is subject to change without notice. Knock yourself out.
fn main() -> () {
    let mut _0: ();                      // return place in scope 0 at src/main.rs:1:11: 1:11
    let mut _1: std::ops::RangeInclusive<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _2: std::ops::RangeInclusive<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _3: std::ops::RangeInclusive<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _5: std::option::Option<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _6: &mut std::ops::RangeInclusive<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _7: &mut std::ops::RangeInclusive<i32>; // in scope 0 at src/main.rs:2:14: 2:20
    let mut _8: isize;                   // in scope 0 at src/main.rs:2:9: 2:10
    let mut _10: i32;                    // in scope 0 at src/main.rs:2:9: 2:10
    let _12: ();                         // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:9: 97:62
    let mut _13: std::fmt::Arguments;    // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let mut _14: &[&str];                // in scope 0 at src/main.rs:3:18: 3:22
    let mut _15: &[&str; 2];             // in scope 0 at src/main.rs:3:18: 3:22
    let _16: &[&str; 2];                 // in scope 0 at src/main.rs:3:18: 3:22
    let mut _17: &[std::fmt::ArgumentV1]; // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let mut _18: &[std::fmt::ArgumentV1; 1]; // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let _19: &[std::fmt::ArgumentV1; 1]; // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let _20: [std::fmt::ArgumentV1; 1];  // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let mut _21: (&i32,);                // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let mut _22: &i32;                   // in scope 0 at src/main.rs:3:24: 3:25
    let mut _24: std::fmt::ArgumentV1;   // in scope 0 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
    let mut _25: &i32;                   // in scope 0 at src/main.rs:3:24: 3:25
    let mut _26: for<'r, 's, 't0> fn(&'r i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at src/main.rs:3:24: 3:25
    scope 1 {
        debug iter => _3;                // in scope 1 at src/main.rs:2:14: 2:20
        let mut _4: i32;                 // in scope 1 at src/main.rs:2:14: 2:20
        scope 2 {
            debug __next => _4;          // in scope 2 at src/main.rs:2:14: 2:20
            let _9: i32;                 // in scope 2 at src/main.rs:2:9: 2:10
            let _11: i32;                // in scope 2 at src/main.rs:2:9: 2:10
            scope 3 {
                debug val => _9;         // in scope 3 at src/main.rs:2:9: 2:10
            }
            scope 4 {
                debug i => _11;          // in scope 4 at src/main.rs:2:9: 2:10
                let _23: &i32;           // in scope 4 at src/main.rs:3:24: 3:25
                let mut _27: &[&str; 2]; // in scope 4 at src/main.rs:3:18: 3:22
                scope 5 {
                    debug arg0 => _23;   // in scope 5 at src/main.rs:3:24: 3:25
                }
            }
        }
    }

    bb0: {
        _2 = RangeInclusive::<i32>::new(const 1_i32, const 10_i32) -> bb1; // scope 0 at src/main.rs:2:14: 2:20
                                         // mir::Constant
                                         // + span: src/main.rs:2:14: 2:20
                                         // + literal: Const { ty: fn(i32, i32) -> std::ops::RangeInclusive<i32> {std::ops::RangeInclusive::<i32>::new}, val: Value(Scalar(<ZST>)) }
    }

    bb1: {
        _1 = <RangeInclusive<i32> as IntoIterator>::into_iter(move _2) -> bb2; // scope 0 at src/main.rs:2:14: 2:20
                                         // mir::Constant
                                         // + span: src/main.rs:2:14: 2:20
                                         // + literal: Const { ty: fn(std::ops::RangeInclusive<i32>) -> <std::ops::RangeInclusive<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::RangeInclusive<i32> as std::iter::IntoIterator>::into_iter}, val: Value(Scalar(<ZST>)) }
    }

    bb2: {
        _3 = move _1;                    // scope 0 at src/main.rs:2:14: 2:20
        goto -> bb3;                     // scope 1 at src/main.rs:2:5: 4:6
    }

    bb3: {
        _7 = &mut _3;                    // scope 2 at src/main.rs:2:14: 2:20
        _6 = &mut (*_7);                 // scope 2 at src/main.rs:2:14: 2:20
        _5 = <RangeInclusive<i32> as Iterator>::next(move _6) -> bb4; // scope 2 at src/main.rs:2:14: 2:20
                                         // mir::Constant
                                         // + span: src/main.rs:2:14: 2:20
                                         // + literal: Const { ty: for<'r> fn(&'r mut std::ops::RangeInclusive<i32>) -> std::option::Option<<std::ops::RangeInclusive<i32> as std::iter::Iterator>::Item> {<std::ops::RangeInclusive<i32> as std::iter::Iterator>::next}, val: Value(Scalar(<ZST>)) }
    }

    bb4: {
        _8 = discriminant(_5);           // scope 2 at src/main.rs:2:14: 2:20
        switchInt(move _8) -> [0_isize: bb5, 1_isize: bb7, otherwise: bb6]; // scope 2 at src/main.rs:2:14: 2:20
    }

    bb5: {
        return;                          // scope 0 at src/main.rs:5:2: 5:2
    }

    bb6: {
        unreachable;                     // scope 2 at src/main.rs:2:14: 2:20
    }

    bb7: {
        _9 = ((_5 as Some).0: i32);      // scope 2 at src/main.rs:2:9: 2:10
        _10 = _9;                        // scope 3 at src/main.rs:2:9: 2:10
        _4 = move _10;                   // scope 3 at src/main.rs:2:9: 2:10
        _11 = _4;                        // scope 2 at src/main.rs:2:14: 2:20
        _27 = const main::promoted[0];   // scope 4 at src/main.rs:3:18: 3:22
                                         // ty::Const
                                         // + ty: &[&str; 2]
                                         // + val: Unevaluated(main, [], Some(promoted[0]))
                                         // mir::Constant
                                         // + span: src/main.rs:3:18: 3:22
                                         // + literal: Const { ty: &[&str; 2], val: Unevaluated(Unevaluated { def: WithOptConstParam { did: DefId(0:3 ~ playground[6f7e]::main), const_param_did: None }, substs_: Some([]), promoted: Some(promoted[0]) }) }
        _16 = _27;                       // scope 4 at src/main.rs:3:18: 3:22
        _15 = _16;                       // scope 4 at src/main.rs:3:18: 3:22
        _14 = move _15 as &[&str] (Pointer(Unsize)); // scope 4 at src/main.rs:3:18: 3:22
        _22 = &_11;                      // scope 4 at src/main.rs:3:24: 3:25
        (_21.0: &i32) = move _22;        // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
        _23 = (_21.0: &i32);             // scope 4 at src/main.rs:3:24: 3:25
        _25 = _23;                       // scope 5 at src/main.rs:3:24: 3:25
        _26 = <i32 as std::fmt::Display>::fmt as for<'r, 's, 't0> fn(&'r i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at src/main.rs:3:24: 3:25
                                         // mir::Constant
                                         // + span: src/main.rs:3:24: 3:25
                                         // + literal: Const { ty: for<'r, 's, 't0> fn(&'r i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<i32 as std::fmt::Display>::fmt}, val: Value(Scalar(<ZST>)) }
        _24 = ArgumentV1::new::<i32>(move _25, move _26) -> bb8; // scope 5 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
                                         // mir::Constant
                                         // + span: /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
                                         // + user_ty: UserType(1)
                                         // + literal: Const { ty: for<'b> fn(&'b i32, for<'r, 's, 't0> fn(&'r i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> std::fmt::ArgumentV1<'b> {std::fmt::ArgumentV1::new::<i32>}, val: Value(Scalar(<ZST>)) }
    }

    bb8: {
        _20 = [move _24];                // scope 5 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
        _19 = &_20;                      // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
        _18 = _19;                       // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
        _17 = move _18 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
        _13 = Arguments::new_v1(move _14, move _17) -> bb9; // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
                                         // mir::Constant
                                         // + span: /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:28: 97:61
                                         // + user_ty: UserType(0)
                                         // + literal: Const { ty: fn(&[&'static str], &[std::fmt::ArgumentV1]) -> std::fmt::Arguments {std::fmt::Arguments::new_v1}, val: Value(Scalar(<ZST>)) }
    }

    bb9: {
        _12 = _print(move _13) -> bb3;   // scope 4 at /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:9: 97:62
                                         // mir::Constant
                                         // + span: /rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs:97:9: 97:27
                                         // + literal: Const { ty: for<'r> fn(std::fmt::Arguments<'r>) {std::io::_print}, val: Value(Scalar(<ZST>)) }
    }
}

promoted[0] in main: &[&str; 2] = {
    let mut _0: &[&str; 2];              // return place in scope 0 at src/main.rs:3:18: 3:22
    let mut _1: [&str; 2];               // in scope 0 at src/main.rs:3:18: 3:22

    bb0: {
        _1 = [const "", const "\n"];     // scope 0 at src/main.rs:3:18: 3:22
                                         // ty::Const
                                         // + ty: &str
                                         // + val: Value(Slice { data: Allocation { bytes: [], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [], len: Size { raw: 0 } }, align: Align { pow2: 0 }, mutability: Not, extra: () }, start: 0, end: 0 })
                                         // mir::Constant
                                         // + span: src/main.rs:3:18: 3:22
                                         // + literal: Const { ty: &str, val: Value(Slice { data: Allocation { bytes: [], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [], len: Size { raw: 0 } }, align: Align { pow2: 0 }, mutability: Not, extra: () }, start: 0, end: 0 }) }
                                         // ty::Const
                                         // + ty: &str
                                         // + val: Value(Slice { data: Allocation { bytes: [10], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [1], len: Size { raw: 1 } }, align: Align { pow2: 0 }, mutability: Not, extra: () }, start: 0, end: 1 })
                                         // mir::Constant
                                         // + span: src/main.rs:3:18: 3:22
                                         // + literal: Const { ty: &str, val: Value(Slice { data: Allocation { bytes: [10], relocations: Relocations(SortedMap { data: [] }), init_mask: InitMask { blocks: [1], len: Size { raw: 1 } }, align: Align { pow2: 0 }, mutability: Not, extra: () }, start: 0, end: 1 }) }
        _0 = &_1;                        // scope 0 at src/main.rs:3:18: 3:22
        return;                          // scope 0 at src/main.rs:3:18: 3:22
    }
}

LLVM IR:

; ModuleID = 'playground.e15dcff8-cgu.0'
source_filename = "playground.e15dcff8-cgu.0"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"core::ops::range::RangeInclusive<i32>" = type { i32, i32, i8, [3 x i8] }
%"core::option::Option<i32>::Some" = type { [1 x i32], i32 }
%"core::fmt::Formatter" = type { { i64, i64 }, { i64, i64 }, { {}*, [3 x i64]* }, i32, i32, i8, [7 x i8] }
%"core::fmt::Opaque" = type {}
%"core::fmt::Arguments" = type { { [0 x { [0 x i8]*, i64 }]*, i64 }, { i64*, i64 }, { [0 x { i8*, i64* }]*, i64 } }
%"core::panic::location::Location" = type { { [0 x i8]*, i64 }, i32, i32 }
%"unwind::libunwind::_Unwind_Exception" = type { i64, void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [6 x i64] }
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] }

@vtable.0 = private unnamed_addr constant <{ i8*, [16 x i8], i8*, i8*, i8*, [0 x i8] }> <{ i8* bitcast (void (i64**)* @"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3915719e248dede1E" to i8*), [16 x i8] c"\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00", i8* bitcast (i32 (i64**)* @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6c2c84984480ea31E" to i8*), i8* bitcast (i32 (i64**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h911bc1c217c1290cE" to i8*), i8* bitcast (i32 (i64**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h911bc1c217c1290cE" to i8*), [0 x i8] zeroinitializer }>, align 8, !dbg !0
@alloc34 = private unnamed_addr constant <{ [12 x i8] }> <{ [12 x i8] c"invalid args" }>, align 1
@alloc35 = private unnamed_addr constant <{ [75 x i8] }> <{ [75 x i8] c"/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/fmt/mod.rs" }>, align 1
@alloc36 = private unnamed_addr constant <{ i8*, [16 x i8] }> <{ i8* getelementptr inbounds (<{ [75 x i8] }>, <{ [75 x i8] }>* @alloc35, i32 0, i32 0, i32 0), [16 x i8] c"K\00\00\00\00\00\00\00k\01\00\00\0D\00\00\00" }>, align 8
@alloc37 = private unnamed_addr constant <{ [75 x i8] }> <{ [75 x i8] c"/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/ptr/mod.rs" }>, align 1
@alloc38 = private unnamed_addr constant <{ i8*, [16 x i8] }> <{ i8* getelementptr inbounds (<{ [75 x i8] }>, <{ [75 x i8] }>* @alloc37, i32 0, i32 0, i32 0), [16 x i8] c"K\00\00\00\00\00\00\00\BC\02\00\00\0D\00\00\00" }>, align 8
@alloc2 = private unnamed_addr constant <{ [0 x i8] }> zeroinitializer, align 1
@alloc4 = private unnamed_addr constant <{ [1 x i8] }> <{ [1 x i8] c"\0A" }>, align 1
@alloc3 = private unnamed_addr constant <{ i8*, [8 x i8], i8*, [8 x i8] }> <{ i8* getelementptr inbounds (<{ [0 x i8] }>, <{ [0 x i8] }>* @alloc2, i32 0, i32 0, i32 0), [8 x i8] zeroinitializer, i8* getelementptr inbounds (<{ [1 x i8] }>, <{ [1 x i8] }>* @alloc4, i32 0, i32 0, i32 0), [8 x i8] c"\01\00\00\00\00\00\00\00" }>, align 8
@__rustc_debug_gdb_scripts_section__ = linkonce_odr unnamed_addr constant [34 x i8] c"\01gdb_load_rust_pretty_printers.py\00", section ".debug_gdb_scripts", align 1

; <core::ops::range::RangeInclusive<T> as core::iter::range::RangeInclusiveIteratorImpl>::spec_next
; Function Attrs: inlinehint nonlazybind uwtable
define internal { i32, i32 } @"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$9spec_next17h8e3e7ff7ce9769faE"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %self) unnamed_addr #0 !dbg !32 {
start:
  %n.dbg.spill = alloca i32, align 4
  %is_iterating.dbg.spill = alloca i8, align 1
  %self.dbg.spill = alloca %"core::ops::range::RangeInclusive<i32>"*, align 8
  %_7 = alloca i32, align 4
  %0 = alloca { i32, i32 }, align 4
  store %"core::ops::range::RangeInclusive<i32>"* %self, %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, metadata !68, metadata !DIExpression()), !dbg !73
; call core::ops::range::RangeInclusive<Idx>::is_empty
  %_2 = call zeroext i1 @"_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$8is_empty17ha9ee05d41a3bd578E"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %self), !dbg !74
  br label %bb1, !dbg !74

bb1:                                              ; preds = %start
  br i1 %_2, label %bb2, label %bb3, !dbg !74

bb3:                                              ; preds = %bb1
  %_5 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i32*, !dbg !75
  %_6 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %self, i32 0, i32 1, !dbg !76
; call core::cmp::impls::<impl core::cmp::PartialOrd for i32>::lt
  %is_iterating = call zeroext i1 @"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h3b55dba9ab46e68cE"(i32* align 4 dereferenceable(4) %_5, i32* align 4 dereferenceable(4) %_6), !dbg !75
  %1 = zext i1 %is_iterating to i8, !dbg !75
  store i8 %1, i8* %is_iterating.dbg.spill, align 1, !dbg !75
  call void @llvm.dbg.declare(metadata i8* %is_iterating.dbg.spill, metadata !69, metadata !DIExpression()), !dbg !77
  br label %bb4, !dbg !75

bb2:                                              ; preds = %bb1
  %2 = bitcast { i32, i32 }* %0 to i32*, !dbg !78
  store i32 0, i32* %2, align 4, !dbg !78
  br label %bb12, !dbg !79

bb12:                                             ; preds = %bb11, %bb2
  %3 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %0, i32 0, i32 0, !dbg !79
  %4 = load i32, i32* %3, align 4, !dbg !79, !range !80
  %5 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %0, i32 0, i32 1, !dbg !79
  %6 = load i32, i32* %5, align 4, !dbg !79
  %7 = insertvalue { i32, i32 } undef, i32 %4, 0, !dbg !79
  %8 = insertvalue { i32, i32 } %7, i32 %6, 1, !dbg !79
  ret { i32, i32 } %8, !dbg !79

bb4:                                              ; preds = %bb3
  br i1 %is_iterating, label %bb5, label %bb9, !dbg !81

bb9:                                              ; preds = %bb4
  %9 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %self, i32 0, i32 2, !dbg !82
  store i8 1, i8* %9, align 4, !dbg !82
  %_15 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i32*, !dbg !83
; call core::clone::impls::<impl core::clone::Clone for i32>::clone
  %10 = call i32 @"_ZN4core5clone5impls52_$LT$impl$u20$core..clone..Clone$u20$for$u20$i32$GT$5clone17h85acc95589e22befE"(i32* align 4 dereferenceable(4) %_15), !dbg !83
  store i32 %10, i32* %_7, align 4, !dbg !83
  br label %bb10, !dbg !83

bb5:                                              ; preds = %bb4
  %_11 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i32*, !dbg !84
; call core::clone::impls::<impl core::clone::Clone for i32>::clone
  %_10 = call i32 @"_ZN4core5clone5impls52_$LT$impl$u20$core..clone..Clone$u20$for$u20$i32$GT$5clone17h85acc95589e22befE"(i32* align 4 dereferenceable(4) %_11), !dbg !84
  br label %bb6, !dbg !84

bb6:                                              ; preds = %bb5
; call <i32 as core::iter::range::Step>::forward_unchecked
  %n = call i32 @"_ZN47_$LT$i32$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17hb65db05a78cf033fE"(i32 %_10, i64 1), !dbg !85
  store i32 %n, i32* %n.dbg.spill, align 4, !dbg !85
  call void @llvm.dbg.declare(metadata i32* %n.dbg.spill, metadata !71, metadata !DIExpression()), !dbg !86
  br label %bb7, !dbg !85

bb7:                                              ; preds = %bb6
  %_13 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i32*, !dbg !87
; call core::mem::replace
  %11 = call i32 @_ZN4core3mem7replace17he9d4dcb34a4ae394E(i32* align 4 dereferenceable(4) %_13, i32 %n), !dbg !88
  store i32 %11, i32* %_7, align 4, !dbg !88
  br label %bb8, !dbg !88

bb8:                                              ; preds = %bb7
  br label %bb11, !dbg !89

bb11:                                             ; preds = %bb10, %bb8
  %12 = bitcast { i32, i32 }* %0 to %"core::option::Option<i32>::Some"*, !dbg !90
  %13 = getelementptr inbounds %"core::option::Option<i32>::Some", %"core::option::Option<i32>::Some"* %12, i32 0, i32 1, !dbg !90
  %14 = load i32, i32* %_7, align 4, !dbg !90
  store i32 %14, i32* %13, align 4, !dbg !90
  %15 = bitcast { i32, i32 }* %0 to i32*, !dbg !90
  store i32 1, i32* %15, align 4, !dbg !90
  br label %bb12, !dbg !79

bb10:                                             ; preds = %bb9
  br label %bb11, !dbg !89
}

; std::sys_common::backtrace::__rust_begin_short_backtrace
; Function Attrs: noinline nonlazybind uwtable
define internal void @_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h4e9f6f38fdde0982E(void ()* nonnull %f) unnamed_addr #1 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !dbg !91 {
start:
  %0 = alloca { i8*, i32 }, align 8
  %f.dbg.spill = alloca void ()*, align 8
  %result.dbg.spill = alloca {}, align 1
  call void @llvm.dbg.declare(metadata {}* %result.dbg.spill, metadata !103, metadata !DIExpression()), !dbg !108
  store void ()* %f, void ()** %f.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata void ()** %f.dbg.spill, metadata !102, metadata !DIExpression()), !dbg !109
; call core::ops::function::FnOnce::call_once
  call void @_ZN4core3ops8function6FnOnce9call_once17h18c2ac22b80f40d9E(void ()* nonnull %f), !dbg !110
  br label %bb1, !dbg !110

bb1:                                              ; preds = %start
; invoke core::hint::black_box
  invoke void @_ZN4core4hint9black_box17h7b40df1726849b56E()
          to label %bb2 unwind label %cleanup, !dbg !111

bb2:                                              ; preds = %bb1
  ret void, !dbg !112

bb3:                                              ; preds = %cleanup
  br label %bb4, !dbg !113

cleanup:                                          ; preds = %bb1
  %1 = landingpad { i8*, i32 }
          cleanup
  %2 = extractvalue { i8*, i32 } %1, 0
  %3 = extractvalue { i8*, i32 } %1, 1
  %4 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 0
  store i8* %2, i8** %4, align 8
  %5 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 1
  store i32 %3, i32* %5, align 8
  br label %bb3

bb4:                                              ; preds = %bb3
  %6 = bitcast { i8*, i32 }* %0 to i8**, !dbg !114
  %7 = load i8*, i8** %6, align 8, !dbg !114
  %8 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 1, !dbg !114
  %9 = load i32, i32* %8, align 8, !dbg !114
  %10 = insertvalue { i8*, i32 } undef, i8* %7, 0, !dbg !114
  %11 = insertvalue { i8*, i32 } %10, i32 %9, 1, !dbg !114
  resume { i8*, i32 } %11, !dbg !114
}

; std::rt::lang_start
; Function Attrs: nonlazybind uwtable
define hidden i64 @_ZN3std2rt10lang_start17hb11772460dd040a5E(void ()* nonnull %main, i64 %argc, i8** %argv) unnamed_addr #2 !dbg !115 {
start:
  %v.dbg.spill = alloca i64, align 8
  %argv.dbg.spill = alloca i8**, align 8
  %argc.dbg.spill = alloca i64, align 8
  %main.dbg.spill = alloca void ()*, align 8
  %_8 = alloca i64*, align 8
  %_4 = alloca i64, align 8
  store void ()* %main, void ()** %main.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata void ()** %main.dbg.spill, metadata !124, metadata !DIExpression()), !dbg !130
  store i64 %argc, i64* %argc.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i64* %argc.dbg.spill, metadata !125, metadata !DIExpression()), !dbg !131
  store i8** %argv, i8*** %argv.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i8*** %argv.dbg.spill, metadata !126, metadata !DIExpression()), !dbg !132
  %0 = bitcast i64** %_8 to void ()**, !dbg !133
  store void ()* %main, void ()** %0, align 8, !dbg !133
  %_5.0 = bitcast i64** %_8 to {}*, !dbg !134
; call std::rt::lang_start_internal
  %1 = call i64 @_ZN3std2rt19lang_start_internal17h699f3530566c1833E({}* nonnull align 1 %_5.0, [3 x i64]* align 8 dereferenceable(24) bitcast (<{ i8*, [16 x i8], i8*, i8*, i8*, [0 x i8] }>* @vtable.0 to [3 x i64]*), i64 %argc, i8** %argv), !dbg !135
  store i64 %1, i64* %_4, align 8, !dbg !135
  br label %bb1, !dbg !135

bb1:                                              ; preds = %start
  %v = load i64, i64* %_4, align 8, !dbg !136
  store i64 %v, i64* %v.dbg.spill, align 8, !dbg !136
  call void @llvm.dbg.declare(metadata i64* %v.dbg.spill, metadata !127, metadata !DIExpression()), !dbg !137
  ret i64 %v, !dbg !138
}

; std::rt::lang_start::{{closure}}
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h911bc1c217c1290cE"(i64** align 8 dereferenceable(8) %_1) unnamed_addr #0 !dbg !139 {
start:
  %_1.dbg.spill = alloca i64**, align 8
  store i64** %_1, i64*** %_1.dbg.spill, align 8
  %0 = load i64**, i64*** %_1.dbg.spill, align 8, !nonnull !46
  %1 = bitcast i64** %0 to void ()**
  call void @llvm.dbg.declare(metadata i64*** %_1.dbg.spill, metadata !148, metadata !DIExpression(DW_OP_deref)), !dbg !149
  %2 = bitcast i64** %_1 to void ()**, !dbg !150
  %_3 = load void ()*, void ()** %2, align 8, !dbg !150, !nonnull !46
; call std::sys_common::backtrace::__rust_begin_short_backtrace
  call void @_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h4e9f6f38fdde0982E(void ()* nonnull %_3), !dbg !151
  br label %bb1, !dbg !151

bb1:                                              ; preds = %start
; call <() as std::process::Termination>::report
  %3 = call i32 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h2a77a2c7dc791a56E"(), !dbg !151
  br label %bb2, !dbg !151

bb2:                                              ; preds = %bb1
  ret i32 %3, !dbg !152
}

; std::sys::unix::process::process_common::ExitCode::as_i32
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217hd13b8893498ff873E(i8* align 1 dereferenceable(1) %self) unnamed_addr #0 !dbg !153 {
start:
  %self.dbg.spill = alloca i8*, align 8
  store i8* %self, i8** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i8** %self.dbg.spill, metadata !166, metadata !DIExpression()), !dbg !167
  %_2 = load i8, i8* %self, align 1, !dbg !168
  %0 = zext i8 %_2 to i32, !dbg !168
  ret i32 %0, !dbg !169
}

; <i32 as core::iter::range::Step>::forward_unchecked
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN47_$LT$i32$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17hb65db05a78cf033fE"(i32 %start1, i64 %n) unnamed_addr #0 !dbg !170 {
start:
  %0 = alloca i32, align 4
  %rhs.dbg.spill.i = alloca i32, align 4
  %self.dbg.spill.i = alloca i32, align 4
  %n.dbg.spill = alloca i64, align 8
  %start.dbg.spill = alloca i32, align 4
  store i32 %start1, i32* %start.dbg.spill, align 4
  call void @llvm.dbg.declare(metadata i32* %start.dbg.spill, metadata !176, metadata !DIExpression()), !dbg !178
  store i64 %n, i64* %n.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i64* %n.dbg.spill, metadata !177, metadata !DIExpression()), !dbg !179
  %_4 = trunc i64 %n to i32, !dbg !180
  store i32 %start1, i32* %self.dbg.spill.i, align 4
  call void @llvm.dbg.declare(metadata i32* %self.dbg.spill.i, metadata !181, metadata !DIExpression()), !dbg !190
  store i32 %_4, i32* %rhs.dbg.spill.i, align 4
  call void @llvm.dbg.declare(metadata i32* %rhs.dbg.spill.i, metadata !189, metadata !DIExpression()), !dbg !192
  %1 = add nsw i32 %start1, %_4, !dbg !193
  store i32 %1, i32* %0, align 4, !dbg !193
  %2 = load i32, i32* %0, align 4, !dbg !193
  br label %bb1, !dbg !194

bb1:                                              ; preds = %start
  ret i32 %2, !dbg !195
}

; core::cmp::impls::<impl core::cmp::PartialOrd for i32>::le
; Function Attrs: inlinehint nonlazybind uwtable
define internal zeroext i1 @"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2le17h28177f5bc7fa17dfE"(i32* align 4 dereferenceable(4) %self, i32* align 4 dereferenceable(4) %other) unnamed_addr #0 !dbg !196 {
start:
  %other.dbg.spill = alloca i32*, align 8
  %self.dbg.spill = alloca i32*, align 8
  store i32* %self, i32** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %self.dbg.spill, metadata !205, metadata !DIExpression()), !dbg !207
  store i32* %other, i32** %other.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %other.dbg.spill, metadata !206, metadata !DIExpression()), !dbg !208
  %_3 = load i32, i32* %self, align 4, !dbg !209
  %_4 = load i32, i32* %other, align 4, !dbg !210
  %0 = icmp sle i32 %_3, %_4, !dbg !209
  ret i1 %0, !dbg !211
}

; core::cmp::impls::<impl core::cmp::PartialOrd for i32>::lt
; Function Attrs: inlinehint nonlazybind uwtable
define internal zeroext i1 @"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h3b55dba9ab46e68cE"(i32* align 4 dereferenceable(4) %self, i32* align 4 dereferenceable(4) %other) unnamed_addr #0 !dbg !212 {
start:
  %other.dbg.spill = alloca i32*, align 8
  %self.dbg.spill = alloca i32*, align 8
  store i32* %self, i32** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %self.dbg.spill, metadata !214, metadata !DIExpression()), !dbg !216
  store i32* %other, i32** %other.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %other.dbg.spill, metadata !215, metadata !DIExpression()), !dbg !217
  %_3 = load i32, i32* %self, align 4, !dbg !218
  %_4 = load i32, i32* %other, align 4, !dbg !219
  %0 = icmp slt i32 %_3, %_4, !dbg !218
  ret i1 %0, !dbg !220
}

; core::fmt::ArgumentV1::new
; Function Attrs: nonlazybind uwtable
define internal { i8*, i64* } @_ZN4core3fmt10ArgumentV13new17h37be4d5dded1d744E(i32* align 4 dereferenceable(4) %x, i1 (i32*, %"core::fmt::Formatter"*)* nonnull %f) unnamed_addr #2 !dbg !221 {
start:
  %0 = alloca %"core::fmt::Opaque"*, align 8
  %1 = alloca i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)*, align 8
  %f.dbg.spill = alloca i1 (i32*, %"core::fmt::Formatter"*)*, align 8
  %x.dbg.spill = alloca i32*, align 8
  %2 = alloca { i8*, i64* }, align 8
  store i32* %x, i32** %x.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %x.dbg.spill, metadata !271, metadata !DIExpression()), !dbg !273
  store i1 (i32*, %"core::fmt::Formatter"*)* %f, i1 (i32*, %"core::fmt::Formatter"*)** %f.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i1 (i32*, %"core::fmt::Formatter"*)** %f.dbg.spill, metadata !272, metadata !DIExpression()), !dbg !274
  %3 = bitcast i1 (i32*, %"core::fmt::Formatter"*)* %f to i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)*, !dbg !275
  store i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)* %3, i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)** %1, align 8, !dbg !275
  %_3 = load i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)*, i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)** %1, align 8, !dbg !275, !nonnull !46
  br label %bb1, !dbg !275

bb1:                                              ; preds = %start
  %4 = bitcast i32* %x to %"core::fmt::Opaque"*, !dbg !276
  store %"core::fmt::Opaque"* %4, %"core::fmt::Opaque"** %0, align 8, !dbg !276
  %_5 = load %"core::fmt::Opaque"*, %"core::fmt::Opaque"** %0, align 8, !dbg !276, !nonnull !46
  br label %bb2, !dbg !276

bb2:                                              ; preds = %bb1
  %5 = bitcast { i8*, i64* }* %2 to %"core::fmt::Opaque"**, !dbg !277
  store %"core::fmt::Opaque"* %_5, %"core::fmt::Opaque"** %5, align 8, !dbg !277
  %6 = getelementptr inbounds { i8*, i64* }, { i8*, i64* }* %2, i32 0, i32 1, !dbg !277
  %7 = bitcast i64** %6 to i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)**, !dbg !277
  store i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)* %_3, i1 (%"core::fmt::Opaque"*, %"core::fmt::Formatter"*)** %7, align 8, !dbg !277
  %8 = getelementptr inbounds { i8*, i64* }, { i8*, i64* }* %2, i32 0, i32 0, !dbg !278
  %9 = load i8*, i8** %8, align 8, !dbg !278, !nonnull !46
  %10 = getelementptr inbounds { i8*, i64* }, { i8*, i64* }* %2, i32 0, i32 1, !dbg !278
  %11 = load i64*, i64** %10, align 8, !dbg !278, !nonnull !46
  %12 = insertvalue { i8*, i64* } undef, i8* %9, 0, !dbg !278
  %13 = insertvalue { i8*, i64* } %12, i64* %11, 1, !dbg !278
  ret { i8*, i64* } %13, !dbg !278
}

; core::fmt::Arguments::new_v1
; Function Attrs: inlinehint nonlazybind uwtable
define internal void @_ZN4core3fmt9Arguments6new_v117h4acf08bc939b8403E(%"core::fmt::Arguments"* noalias nocapture sret(%"core::fmt::Arguments") dereferenceable(48) %0, [0 x { [0 x i8]*, i64 }]* nonnull align 8 %pieces.0, i64 %pieces.1, [0 x { i8*, i64* }]* nonnull align 8 %args.0, i64 %args.1) unnamed_addr #0 !dbg !279 {
start:
  %args.dbg.spill = alloca { [0 x { i8*, i64* }]*, i64 }, align 8
  %pieces.dbg.spill = alloca { [0 x { [0 x i8]*, i64 }]*, i64 }, align 8
  %_16 = alloca { i64*, i64 }, align 8
  %_3 = alloca i8, align 1
  %1 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %pieces.dbg.spill, i32 0, i32 0
  store [0 x { [0 x i8]*, i64 }]* %pieces.0, [0 x { [0 x i8]*, i64 }]** %1, align 8
  %2 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %pieces.dbg.spill, i32 0, i32 1
  store i64 %pieces.1, i64* %2, align 8
  call void @llvm.dbg.declare(metadata { [0 x { [0 x i8]*, i64 }]*, i64 }* %pieces.dbg.spill, metadata !345, metadata !DIExpression()), !dbg !347
  %3 = getelementptr inbounds { [0 x { i8*, i64* }]*, i64 }, { [0 x { i8*, i64* }]*, i64 }* %args.dbg.spill, i32 0, i32 0
  store [0 x { i8*, i64* }]* %args.0, [0 x { i8*, i64* }]** %3, align 8
  %4 = getelementptr inbounds { [0 x { i8*, i64* }]*, i64 }, { [0 x { i8*, i64* }]*, i64 }* %args.dbg.spill, i32 0, i32 1
  store i64 %args.1, i64* %4, align 8
  call void @llvm.dbg.declare(metadata { [0 x { i8*, i64* }]*, i64 }* %args.dbg.spill, metadata !346, metadata !DIExpression()), !dbg !348
  %_4 = icmp ult i64 %pieces.1, %args.1, !dbg !349
  br i1 %_4, label %bb1, label %bb2, !dbg !349

bb2:                                              ; preds = %start
  %_12 = add i64 %args.1, 1, !dbg !350
  %_9 = icmp ugt i64 %pieces.1, %_12, !dbg !351
  %5 = zext i1 %_9 to i8, !dbg !349
  store i8 %5, i8* %_3, align 1, !dbg !349
  br label %bb3, !dbg !349

bb1:                                              ; preds = %start
  store i8 1, i8* %_3, align 1, !dbg !349
  br label %bb3, !dbg !349

bb3:                                              ; preds = %bb2, %bb1
  %6 = load i8, i8* %_3, align 1, !dbg !349, !range !352
  %7 = trunc i8 %6 to i1, !dbg !349
  br i1 %7, label %bb4, label %bb5, !dbg !349

bb5:                                              ; preds = %bb3
  %8 = bitcast { i64*, i64 }* %_16 to {}**, !dbg !353
  store {}* null, {}** %8, align 8, !dbg !353
  %9 = bitcast %"core::fmt::Arguments"* %0 to { [0 x { [0 x i8]*, i64 }]*, i64 }*, !dbg !354
  %10 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %9, i32 0, i32 0, !dbg !354
  store [0 x { [0 x i8]*, i64 }]* %pieces.0, [0 x { [0 x i8]*, i64 }]** %10, align 8, !dbg !354
  %11 = getelementptr inbounds { [0 x { [0 x i8]*, i64 }]*, i64 }, { [0 x { [0 x i8]*, i64 }]*, i64 }* %9, i32 0, i32 1, !dbg !354
  store i64 %pieces.1, i64* %11, align 8, !dbg !354
  %12 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 1, !dbg !354
  %13 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %_16, i32 0, i32 0, !dbg !354
  %14 = load i64*, i64** %13, align 8, !dbg !354
  %15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %_16, i32 0, i32 1, !dbg !354
  %16 = load i64, i64* %15, align 8, !dbg !354
  %17 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 0, !dbg !354
  store i64* %14, i64** %17, align 8, !dbg !354
  %18 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %12, i32 0, i32 1, !dbg !354
  store i64 %16, i64* %18, align 8, !dbg !354
  %19 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %0, i32 0, i32 2, !dbg !354
  %20 = getelementptr inbounds { [0 x { i8*, i64* }]*, i64 }, { [0 x { i8*, i64* }]*, i64 }* %19, i32 0, i32 0, !dbg !354
  store [0 x { i8*, i64* }]* %args.0, [0 x { i8*, i64* }]** %20, align 8, !dbg !354
  %21 = getelementptr inbounds { [0 x { i8*, i64* }]*, i64 }, { [0 x { i8*, i64* }]*, i64 }* %19, i32 0, i32 1, !dbg !354
  store i64 %args.1, i64* %21, align 8, !dbg !354
  ret void, !dbg !355

bb4:                                              ; preds = %bb3
; call core::panicking::panic
  call void @_ZN4core9panicking5panic17h50b51d19800453c0E([0 x i8]* nonnull align 1 bitcast (<{ [12 x i8] }>* @alloc34 to [0 x i8]*), i64 12, %"core::panic::location::Location"* align 8 dereferenceable(24) bitcast (<{ i8*, [16 x i8] }>* @alloc36 to %"core::panic::location::Location"*)) #7, !dbg !356
  unreachable, !dbg !356
}

; core::mem::replace
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @_ZN4core3mem7replace17he9d4dcb34a4ae394E(i32* align 4 dereferenceable(4) %dest, i32 %src) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !dbg !357 {
start:
  %result.dbg.spill = alloca i32, align 4
  %0 = alloca { i8*, i32 }, align 8
  %src.dbg.spill = alloca i32, align 4
  %dest.dbg.spill = alloca i32*, align 8
  %_7 = alloca i8, align 1
  store i32* %dest, i32** %dest.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %dest.dbg.spill, metadata !364, metadata !DIExpression()), !dbg !368
  store i32 %src, i32* %src.dbg.spill, align 4
  call void @llvm.dbg.declare(metadata i32* %src.dbg.spill, metadata !365, metadata !DIExpression()), !dbg !369
  store i8 0, i8* %_7, align 1, !dbg !370
  store i8 1, i8* %_7, align 1, !dbg !370
; invoke core::ptr::read
  %result = invoke i32 @_ZN4core3ptr4read17hc3739d5fa6d04dd3E(i32* %dest)
          to label %bb1 unwind label %cleanup, !dbg !371

bb1:                                              ; preds = %start
  store i32 %result, i32* %result.dbg.spill, align 4, !dbg !371
  call void @llvm.dbg.declare(metadata i32* %result.dbg.spill, metadata !366, metadata !DIExpression()), !dbg !372
  store i8 0, i8* %_7, align 1, !dbg !373
; invoke core::ptr::write
  invoke void @_ZN4core3ptr5write17h7770e0bcdd7264bbE(i32* %dest, i32 %src)
          to label %bb2 unwind label %cleanup1, !dbg !374

bb6:                                              ; preds = %bb3, %cleanup
  %1 = load i8, i8* %_7, align 1, !dbg !375, !range !352
  %2 = trunc i8 %1 to i1, !dbg !375
  br i1 %2, label %bb5, label %bb4, !dbg !375

cleanup:                                          ; preds = %start
  %3 = landingpad { i8*, i32 }
          cleanup
  %4 = extractvalue { i8*, i32 } %3, 0
  %5 = extractvalue { i8*, i32 } %3, 1
  %6 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 0
  store i8* %4, i8** %6, align 8
  %7 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 1
  store i32 %5, i32* %7, align 8
  br label %bb6

bb2:                                              ; preds = %bb1
  ret i32 %result, !dbg !376

bb3:                                              ; preds = %cleanup1
  br label %bb6, !dbg !377

cleanup1:                                         ; preds = %bb1
  %8 = landingpad { i8*, i32 }
          cleanup
  %9 = extractvalue { i8*, i32 } %8, 0
  %10 = extractvalue { i8*, i32 } %8, 1
  %11 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 0
  store i8* %9, i8** %11, align 8
  %12 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 1
  store i32 %10, i32* %12, align 8
  br label %bb3

bb4:                                              ; preds = %bb5, %bb6
  %13 = bitcast { i8*, i32 }* %0 to i8**, !dbg !378
  %14 = load i8*, i8** %13, align 8, !dbg !378
  %15 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %0, i32 0, i32 1, !dbg !378
  %16 = load i32, i32* %15, align 8, !dbg !378
  %17 = insertvalue { i8*, i32 } undef, i8* %14, 0, !dbg !378
  %18 = insertvalue { i8*, i32 } %17, i32 %16, 1, !dbg !378
  resume { i8*, i32 } %18, !dbg !378

bb5:                                              ; preds = %bb6
  br label %bb4, !dbg !375
}

; core::ops::range::RangeInclusive<Idx>::new
; Function Attrs: inlinehint nonlazybind uwtable
define internal i96 @"_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$3new17h2849cd64748fe5c1E"(i32 %start1, i32 %end) unnamed_addr #0 !dbg !379 {
start:
  %end.dbg.spill = alloca i32, align 4
  %start.dbg.spill = alloca i32, align 4
  %0 = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  store i32 %start1, i32* %start.dbg.spill, align 4
  call void @llvm.dbg.declare(metadata i32* %start.dbg.spill, metadata !384, metadata !DIExpression()), !dbg !386
  store i32 %end, i32* %end.dbg.spill, align 4
  call void @llvm.dbg.declare(metadata i32* %end.dbg.spill, metadata !385, metadata !DIExpression()), !dbg !387
  %1 = bitcast %"core::ops::range::RangeInclusive<i32>"* %0 to i32*, !dbg !388
  store i32 %start1, i32* %1, align 4, !dbg !388
  %2 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %0, i32 0, i32 1, !dbg !388
  store i32 %end, i32* %2, align 4, !dbg !388
  %3 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %0, i32 0, i32 2, !dbg !388
  store i8 0, i8* %3, align 4, !dbg !388
  %4 = bitcast %"core::ops::range::RangeInclusive<i32>"* %0 to i96*, !dbg !389
  %5 = load i96, i96* %4, align 4, !dbg !389
  ret i96 %5, !dbg !389
}

; core::ops::range::RangeInclusive<Idx>::is_empty
; Function Attrs: inlinehint nonlazybind uwtable
define internal zeroext i1 @"_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$8is_empty17ha9ee05d41a3bd578E"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %self) unnamed_addr #0 !dbg !390 {
start:
  %self.dbg.spill = alloca %"core::ops::range::RangeInclusive<i32>"*, align 8
  %0 = alloca i8, align 1
  store %"core::ops::range::RangeInclusive<i32>"* %self, %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, metadata !395, metadata !DIExpression()), !dbg !396
  %1 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %self, i32 0, i32 2, !dbg !397
  %2 = load i8, i8* %1, align 4, !dbg !397, !range !352
  %_2 = trunc i8 %2 to i1, !dbg !397
  br i1 %_2, label %bb1, label %bb2, !dbg !397

bb2:                                              ; preds = %start
  %_5 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i32*, !dbg !398
  %_6 = getelementptr inbounds %"core::ops::range::RangeInclusive<i32>", %"core::ops::range::RangeInclusive<i32>"* %self, i32 0, i32 1, !dbg !399
; call core::cmp::impls::<impl core::cmp::PartialOrd for i32>::le
  %_4 = call zeroext i1 @"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2le17h28177f5bc7fa17dfE"(i32* align 4 dereferenceable(4) %_5, i32* align 4 dereferenceable(4) %_6), !dbg !400
  br label %bb4, !dbg !400

bb1:                                              ; preds = %start
  store i8 1, i8* %0, align 1, !dbg !397
  br label %bb3, !dbg !397

bb3:                                              ; preds = %bb4, %bb1
  %3 = load i8, i8* %0, align 1, !dbg !401, !range !352
  %4 = trunc i8 %3 to i1, !dbg !401
  ret i1 %4, !dbg !401

bb4:                                              ; preds = %bb2
  %_3 = xor i1 %_4, true, !dbg !402
  %5 = zext i1 %_3 to i8, !dbg !397
  store i8 %5, i8* %0, align 1, !dbg !397
  br label %bb3, !dbg !397
}

; core::ops::function::FnOnce::call_once{{vtable.shim}}
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6c2c84984480ea31E"(i64** %_1) unnamed_addr #0 !dbg !403 {
start:
  %_1.dbg.spill = alloca i64**, align 8
  %_2 = alloca {}, align 1
  store i64** %_1, i64*** %_1.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i64*** %_1.dbg.spill, metadata !411, metadata !DIExpression()), !dbg !416
  call void @llvm.dbg.declare(metadata {}* %_2, metadata !412, metadata !DIExpression()), !dbg !416
  %0 = load i64*, i64** %_1, align 8, !dbg !416, !nonnull !46
; call core::ops::function::FnOnce::call_once
  %1 = call i32 @_ZN4core3ops8function6FnOnce9call_once17hbd05cccd3153e2b1E(i64* nonnull %0), !dbg !416
  br label %bb1, !dbg !416

bb1:                                              ; preds = %start
  ret i32 %1, !dbg !416
}

; core::ops::function::FnOnce::call_once
; Function Attrs: inlinehint nonlazybind uwtable
define internal void @_ZN4core3ops8function6FnOnce9call_once17h18c2ac22b80f40d9E(void ()* nonnull %_1) unnamed_addr #0 !dbg !417 {
start:
  %_1.dbg.spill = alloca void ()*, align 8
  %_2 = alloca {}, align 1
  store void ()* %_1, void ()** %_1.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata void ()** %_1.dbg.spill, metadata !419, metadata !DIExpression()), !dbg !423
  call void @llvm.dbg.declare(metadata {}* %_2, metadata !420, metadata !DIExpression()), !dbg !423
  call void %_1(), !dbg !423
  br label %bb1, !dbg !423

bb1:                                              ; preds = %start
  ret void, !dbg !423
}

; core::ops::function::FnOnce::call_once
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @_ZN4core3ops8function6FnOnce9call_once17hbd05cccd3153e2b1E(i64* nonnull %0) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !dbg !424 {
start:
  %1 = alloca { i8*, i32 }, align 8
  %_2 = alloca {}, align 1
  %_1 = alloca i64*, align 8
  store i64* %0, i64** %_1, align 8
  call void @llvm.dbg.declare(metadata i64** %_1, metadata !428, metadata !DIExpression()), !dbg !430
  call void @llvm.dbg.declare(metadata {}* %_2, metadata !429, metadata !DIExpression()), !dbg !430
; invoke std::rt::lang_start::{{closure}}
  %2 = invoke i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h911bc1c217c1290cE"(i64** align 8 dereferenceable(8) %_1)
          to label %bb1 unwind label %cleanup, !dbg !430

bb1:                                              ; preds = %start
  br label %bb2, !dbg !430

bb3:                                              ; preds = %cleanup
  br label %bb4, !dbg !430

cleanup:                                          ; preds = %start
  %3 = landingpad { i8*, i32 }
          cleanup
  %4 = extractvalue { i8*, i32 } %3, 0
  %5 = extractvalue { i8*, i32 } %3, 1
  %6 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %1, i32 0, i32 0
  store i8* %4, i8** %6, align 8
  %7 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %1, i32 0, i32 1
  store i32 %5, i32* %7, align 8
  br label %bb3

bb4:                                              ; preds = %bb3
  %8 = bitcast { i8*, i32 }* %1 to i8**, !dbg !430
  %9 = load i8*, i8** %8, align 8, !dbg !430
  %10 = getelementptr inbounds { i8*, i32 }, { i8*, i32 }* %1, i32 0, i32 1, !dbg !430
  %11 = load i32, i32* %10, align 8, !dbg !430
  %12 = insertvalue { i8*, i32 } undef, i8* %9, 0, !dbg !430
  %13 = insertvalue { i8*, i32 } %12, i32 %11, 1, !dbg !430
  resume { i8*, i32 } %13, !dbg !430

bb2:                                              ; preds = %bb1
  ret i32 %2, !dbg !430
}

; core::ptr::read
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @_ZN4core3ptr4read17hc3739d5fa6d04dd3E(i32* %src) unnamed_addr #0 !dbg !431 {
start:
  %slot.dbg.spill.i = alloca i32, align 4
  %0 = alloca i32, align 4
  %self.dbg.spill.i1 = alloca i32, align 4
  %self.dbg.spill.i = alloca i32*, align 8
  %src.dbg.spill = alloca i32*, align 8
  %tmp = alloca i32, align 4
  store i32* %src, i32** %src.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %src.dbg.spill, metadata !438, metadata !DIExpression()), !dbg !450
  call void @llvm.dbg.declare(metadata i32* %tmp, metadata !439, metadata !DIExpression()), !dbg !451
  %1 = bitcast i32* %0 to {}*, !dbg !452
  %2 = load i32, i32* %0, align 4, !dbg !458
  store i32 %2, i32* %tmp, align 4, !dbg !459
  br label %bb1, !dbg !459

bb1:                                              ; preds = %start
  store i32* %tmp, i32** %self.dbg.spill.i, align 8
  call void @llvm.dbg.declare(metadata i32** %self.dbg.spill.i, metadata !460, metadata !DIExpression()), !dbg !467
  br label %bb2, !dbg !469

bb2:                                              ; preds = %bb1
  %3 = bitcast i32* %tmp to i8*, !dbg !470
  %4 = bitcast i32* %src to i8*, !dbg !470
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %3, i8* align 4 %4, i64 4, i1 false), !dbg !470
  %_6 = load i32, i32* %tmp, align 4, !dbg !471
  store i32 %_6, i32* %self.dbg.spill.i1, align 4
  call void @llvm.dbg.declare(metadata i32* %self.dbg.spill.i1, metadata !472, metadata !DIExpression()), !dbg !485
  store i32 %_6, i32* %slot.dbg.spill.i, align 4
  call void @llvm.dbg.declare(metadata i32* %slot.dbg.spill.i, metadata !487, metadata !DIExpression()), !dbg !493
  br label %bb3, !dbg !471

bb3:                                              ; preds = %bb2
  ret i32 %_6, !dbg !495
}

; core::ptr::write
; Function Attrs: inlinehint nonlazybind uwtable
define internal void @_ZN4core3ptr5write17h7770e0bcdd7264bbE(i32* %dst, i32 %0) unnamed_addr #0 !dbg !496 {
start:
  %dst.dbg.spill = alloca i32*, align 8
  %src = alloca i32, align 4
  store i32 %0, i32* %src, align 4
  store i32* %dst, i32** %dst.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %dst.dbg.spill, metadata !500, metadata !DIExpression()), !dbg !502
  call void @llvm.dbg.declare(metadata i32* %src, metadata !501, metadata !DIExpression()), !dbg !503
  %1 = bitcast i32* %dst to i8*, !dbg !504
  %2 = bitcast i32* %src to i8*, !dbg !504
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %1, i8* align 4 %2, i64 4, i1 false), !dbg !504
  ret void, !dbg !505
}

; core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>
; Function Attrs: inlinehint nonlazybind uwtable
define internal void @"_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3915719e248dede1E"(i64** %_1) unnamed_addr #0 !dbg !506 {
start:
  %_1.dbg.spill = alloca i64**, align 8
  store i64** %_1, i64*** %_1.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i64*** %_1.dbg.spill, metadata !510, metadata !DIExpression()), !dbg !513
  ret void, !dbg !513
}

; core::hint::black_box
; Function Attrs: inlinehint nonlazybind uwtable
define internal void @_ZN4core4hint9black_box17h7b40df1726849b56E() unnamed_addr #0 !dbg !514 {
start:
  %dummy.dbg.spill = alloca {}, align 1
  call void @llvm.dbg.declare(metadata {}* %dummy.dbg.spill, metadata !520, metadata !DIExpression()), !dbg !521
  call void asm sideeffect "", "r,~{memory}"({}* undef), !dbg !522, !srcloc !523
  br label %bb1, !dbg !522

bb1:                                              ; preds = %start
  ret void, !dbg !524
}

; core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::RangeInclusive<A>>::next
; Function Attrs: inlinehint nonlazybind uwtable
define internal { i32, i32 } @"_ZN4core4iter5range110_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..RangeInclusive$LT$A$GT$$GT$4next17h3cc42889a4f33368E"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %self) unnamed_addr #0 !dbg !525 {
start:
  %self.dbg.spill = alloca %"core::ops::range::RangeInclusive<i32>"*, align 8
  store %"core::ops::range::RangeInclusive<i32>"* %self, %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata %"core::ops::range::RangeInclusive<i32>"** %self.dbg.spill, metadata !528, metadata !DIExpression()), !dbg !531
; call <core::ops::range::RangeInclusive<T> as core::iter::range::RangeInclusiveIteratorImpl>::spec_next
  %0 = call { i32, i32 } @"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$9spec_next17h8e3e7ff7ce9769faE"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %self), !dbg !532
  %1 = extractvalue { i32, i32 } %0, 0, !dbg !532
  %2 = extractvalue { i32, i32 } %0, 1, !dbg !532
  br label %bb1, !dbg !532

bb1:                                              ; preds = %start
  %3 = insertvalue { i32, i32 } undef, i32 %1, 0, !dbg !533
  %4 = insertvalue { i32, i32 } %3, i32 %2, 1, !dbg !533
  ret { i32, i32 } %4, !dbg !533
}

; core::clone::impls::<impl core::clone::Clone for i32>::clone
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN4core5clone5impls52_$LT$impl$u20$core..clone..Clone$u20$for$u20$i32$GT$5clone17h85acc95589e22befE"(i32* align 4 dereferenceable(4) %self) unnamed_addr #0 !dbg !534 {
start:
  %self.dbg.spill = alloca i32*, align 8
  store i32* %self, i32** %self.dbg.spill, align 8
  call void @llvm.dbg.declare(metadata i32** %self.dbg.spill, metadata !542, metadata !DIExpression()), !dbg !543
  %0 = load i32, i32* %self, align 4, !dbg !544
  ret i32 %0, !dbg !545
}

; <() as std::process::Termination>::report
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h2a77a2c7dc791a56E"() unnamed_addr #0 !dbg !546 {
start:
  %self.dbg.spill = alloca {}, align 1
  call void @llvm.dbg.declare(metadata {}* %self.dbg.spill, metadata !553, metadata !DIExpression()), !dbg !554
; call <std::process::ExitCode as std::process::Termination>::report
  %0 = call i32 @"_ZN68_$LT$std..process..ExitCode$u20$as$u20$std..process..Termination$GT$6report17h30388115231fc605E"(i8 0), !dbg !555
  br label %bb1, !dbg !555

bb1:                                              ; preds = %start
  ret i32 %0, !dbg !556
}

; <I as core::iter::traits::collect::IntoIterator>::into_iter
; Function Attrs: inlinehint nonlazybind uwtable
define internal i96 @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h1577d21432db53acE"(i96 %0) unnamed_addr #0 !dbg !557 {
start:
  %1 = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  %2 = alloca i96, align 8
  %self = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  store i96 %0, i96* %2, align 8
  %3 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i8*
  %4 = bitcast i96* %2 to i8*
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %3, i8* align 8 %4, i64 12, i1 false)
  call void @llvm.dbg.declare(metadata %"core::ops::range::RangeInclusive<i32>"* %self, metadata !565, metadata !DIExpression()), !dbg !568
  %5 = bitcast %"core::ops::range::RangeInclusive<i32>"* %1 to i8*, !dbg !569
  %6 = bitcast %"core::ops::range::RangeInclusive<i32>"* %self to i8*, !dbg !569
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %5, i8* align 4 %6, i64 12, i1 false), !dbg !569
  %7 = bitcast %"core::ops::range::RangeInclusive<i32>"* %1 to i96*, !dbg !570
  %8 = load i96, i96* %7, align 4, !dbg !570
  ret i96 %8, !dbg !570
}

; <std::process::ExitCode as std::process::Termination>::report
; Function Attrs: inlinehint nonlazybind uwtable
define internal i32 @"_ZN68_$LT$std..process..ExitCode$u20$as$u20$std..process..Termination$GT$6report17h30388115231fc605E"(i8 %0) unnamed_addr #0 !dbg !571 {
start:
  %self = alloca i8, align 1
  store i8 %0, i8* %self, align 1
  call void @llvm.dbg.declare(metadata i8* %self, metadata !579, metadata !DIExpression()), !dbg !580
; call std::sys::unix::process::process_common::ExitCode::as_i32
  %1 = call i32 @_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217hd13b8893498ff873E(i8* align 1 dereferenceable(1) %self), !dbg !581
  br label %bb1, !dbg !581

bb1:                                              ; preds = %start
  ret i32 %1, !dbg !582
}

; playground::main
; Function Attrs: nonlazybind uwtable
define internal void @_ZN10playground4main17hbf379cdc43ed47d6E() unnamed_addr #2 !dbg !583 {
start:
  %arg0.dbg.spill = alloca i32*, align 8
  %__next.dbg.spill = alloca i32, align 4
  %val.dbg.spill = alloca i32, align 4
  %0 = alloca i96, align 8
  %1 = alloca i96, align 8
  %_21 = alloca i32*, align 8
  %_20 = alloca [1 x { i8*, i64* }], align 8
  %_13 = alloca %"core::fmt::Arguments", align 8
  %i = alloca i32, align 4
  %_5 = alloca { i32, i32 }, align 4
  %iter = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  %_2 = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  %_1 = alloca %"core::ops::range::RangeInclusive<i32>", align 4
  call void @llvm.dbg.declare(metadata %"core::ops::range::RangeInclusive<i32>"* %iter, metadata !587, metadata !DIExpression()), !dbg !599
  call void @llvm.dbg.declare(metadata i32* %i, metadata !593, metadata !DIExpression()), !dbg !600
; call core::ops::range::RangeInclusive<Idx>::new
  %2 = call i96 @"_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$3new17h2849cd64748fe5c1E"(i32 1, i32 10), !dbg !601
  store i96 %2, i96* %1, align 8, !dbg !601
  %3 = bitcast %"core::ops::range::RangeInclusive<i32>"* %_2 to i8*, !dbg !601
  %4 = bitcast i96* %1 to i8*, !dbg !601
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %3, i8* align 8 %4, i64 12, i1 false), !dbg !601
  br label %bb1, !dbg !601

bb1:                                              ; preds = %start
  %5 = bitcast %"core::ops::range::RangeInclusive<i32>"* %_2 to i96*, !dbg !601
  %6 = load i96, i96* %5, align 4, !dbg !601
; call <I as core::iter::traits::collect::IntoIterator>::into_iter
  %7 = call i96 @"_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h1577d21432db53acE"(i96 %6), !dbg !601
  store i96 %7, i96* %0, align 8, !dbg !601
  %8 = bitcast %"core::ops::range::RangeInclusive<i32>"* %_1 to i8*, !dbg !601
  %9 = bitcast i96* %0 to i8*, !dbg !601
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %8, i8* align 8 %9, i64 12, i1 false), !dbg !601
  br label %bb2, !dbg !601

bb2:                                              ; preds = %bb1
  %10 = bitcast %"core::ops::range::RangeInclusive<i32>"* %iter to i8*, !dbg !601
  %11 = bitcast %"core::ops::range::RangeInclusive<i32>"* %_1 to i8*, !dbg !601
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %10, i8* align 4 %11, i64 12, i1 false), !dbg !601
  br label %bb3, !dbg !602

bb3:                                              ; preds = %bb9, %bb2
; call core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::RangeInclusive<A>>::next
  %12 = call { i32, i32 } @"_ZN4core4iter5range110_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..RangeInclusive$LT$A$GT$$GT$4next17h3cc42889a4f33368E"(%"core::ops::range::RangeInclusive<i32>"* align 4 dereferenceable(12) %iter), !dbg !603
  store { i32, i32 } %12, { i32, i32 }* %_5, align 4, !dbg !603
  br label %bb4, !dbg !603

bb4:                                              ; preds = %bb3
  %13 = bitcast { i32, i32 }* %_5 to i32*, !dbg !603
  %14 = load i32, i32* %13, align 4, !dbg !603, !range !80
  %_8 = zext i32 %14 to i64, !dbg !603
  switch i64 %_8, label %bb6 [
    i64 0, label %bb5
    i64 1, label %bb7
  ], !dbg !603

bb6:                                              ; preds = %bb4
  unreachable, !dbg !603

bb5:                                              ; preds = %bb4
  ret void, !dbg !604

bb7:                                              ; preds = %bb4
  %15 = bitcast { i32, i32 }* %_5 to %"core::option::Option<i32>::Some"*, !dbg !605
  %16 = getelementptr inbounds %"core::option::Option<i32>::Some", %"core::option::Option<i32>::Some"* %15, i32 0, i32 1, !dbg !605
  %val = load i32, i32* %16, align 4, !dbg !605
  store i32 %val, i32* %val.dbg.spill, align 4, !dbg !605
  call void @llvm.dbg.declare(metadata i32* %val.dbg.spill, metadata !591, metadata !DIExpression()), !dbg !606
  store i32 %val, i32* %__next.dbg.spill, align 4, !dbg !606
  call void @llvm.dbg.declare(metadata i32* %__next.dbg.spill, metadata !589, metadata !DIExpression()), !dbg !603
  store i32 %val, i32* %i, align 4, !dbg !603
  store i32* %i, i32** %_21, align 8, !dbg !607
  %arg0 = load i32*, i32** %_21, align 8, !dbg !607, !nonnull !46
  store i32* %arg0, i32** %arg0.dbg.spill, align 8, !dbg !607
  call void @llvm.dbg.declare(metadata i32** %arg0.dbg.spill, metadata !595, metadata !DIExpression()), !dbg !608
; call core::fmt::ArgumentV1::new
  %17 = call { i8*, i64* } @_ZN4core3fmt10ArgumentV13new17h37be4d5dded1d744E(i32* align 4 dereferenceable(4) %arg0, i1 (i32*, %"core::fmt::Formatter"*)* nonnull @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h41290ab1b0057a2bE"), !dbg !608
  %_24.0 = extractvalue { i8*, i64* } %17, 0, !dbg !608
  %_24.1 = extractvalue { i8*, i64* } %17, 1, !dbg !608
  br label %bb8, !dbg !608

bb8:                                              ; preds = %bb7
  %18 = bitcast [1 x { i8*, i64* }]* %_20 to { i8*, i64* }*, !dbg !608
  %19 = getelementptr inbounds { i8*, i64* }, { i8*, i64* }* %18, i32 0, i32 0, !dbg !608
  store i8* %_24.0, i8** %19, align 8, !dbg !608
  %20 = getelementptr inbounds { i8*, i64* }, { i8*, i64* }* %18, i32 0, i32 1, !dbg !608
  store i64* %_24.1, i64** %20, align 8, !dbg !608
  %_17.0 = bitcast [1 x { i8*, i64* }]* %_20 to [0 x { i8*, i64* }]*, !dbg !607
; call core::fmt::Arguments::new_v1
  call void @_ZN4core3fmt9Arguments6new_v117h4acf08bc939b8403E(%"core::fmt::Arguments"* noalias nocapture sret(%"core::fmt::Arguments") dereferenceable(48) %_13, [0 x { [0 x i8]*, i64 }]* nonnull align 8 bitcast (<{ i8*, [8 x i8], i8*, [8 x i8] }>* @alloc3 to [0 x { [0 x i8]*, i64 }]*), i64 2, [0 x { i8*, i64* }]* nonnull align 8 %_17.0, i64 1), !dbg !607
  br label %bb9, !dbg !607

bb9:                                              ; preds = %bb8
; call std::io::stdio::_print
  call void @_ZN3std2io5stdio6_print17h3d88b3fb4ed618baE(%"core::fmt::Arguments"* noalias nocapture dereferenceable(48) %_13), !dbg !607
  br label %bb3, !dbg !607
}

; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
declare void @llvm.dbg.declare(metadata, metadata, metadata) #3

; Function Attrs: nonlazybind uwtable
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr #2

; std::rt::lang_start_internal
; Function Attrs: nonlazybind uwtable
declare i64 @_ZN3std2rt19lang_start_internal17h699f3530566c1833E({}* nonnull align 1, [3 x i64]* align 8 dereferenceable(24), i64, i8**) unnamed_addr #2

; core::panicking::panic
; Function Attrs: cold noinline noreturn nonlazybind uwtable
declare void @_ZN4core9panicking5panic17h50b51d19800453c0E([0 x i8]* nonnull align 1, i64, %"core::panic::location::Location"* align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: argmemonly nofree nounwind willreturn
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #5

; core::fmt::num::imp::<impl core::fmt::Display for i32>::fmt
; Function Attrs: nonlazybind uwtable
declare zeroext i1 @"_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h41290ab1b0057a2bE"(i32* align 4 dereferenceable(4), %"core::fmt::Formatter"* align 8 dereferenceable(64)) unnamed_addr #2

; std::io::stdio::_print
; Function Attrs: nonlazybind uwtable
declare void @_ZN3std2io5stdio6_print17h3d88b3fb4ed618baE(%"core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #2

; Function Attrs: nonlazybind
define i32 @main(i32 %0, i8** %1) unnamed_addr #6 {
top:
  %2 = load volatile i8, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @__rustc_debug_gdb_scripts_section__, i32 0, i32 0), align 1
  %3 = sext i32 %0 to i64
; call std::rt::lang_start
  %4 = call i64 @_ZN3std2rt10lang_start17hb11772460dd040a5E(void ()* @_ZN10playground4main17hbf379cdc43ed47d6E, i64 %3, i8** %1)
  %5 = trunc i64 %4 to i32
  ret i32 %5
}

attributes #0 = { inlinehint nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" }
attributes #1 = { noinline nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" }
attributes #2 = { nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" }
attributes #3 = { nofree nosync nounwind readnone speculatable willreturn }
attributes #4 = { cold noinline noreturn nonlazybind uwtable "probe-stack"="__rust_probestack" "target-cpu"="x86-64" }
attributes #5 = { argmemonly nofree nounwind willreturn }
attributes #6 = { nonlazybind "target-cpu"="x86-64" }
attributes #7 = { noreturn }

!llvm.module.flags = !{!8, !9, !10, !11}
!llvm.dbg.cu = !{!12}

!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
!1 = distinct !DIGlobalVariable(name: "<std::rt::lang_start::{closure#0} as core::ops::function::Fn<()>>::{vtable}", scope: null, file: !2, type: !3, isLocal: true, isDefinition: true)
!2 = !DIFile(filename: "<unknown>", directory: "")
!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 384, align: 64, elements: !6)
!4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const ()", baseType: !5, size: 64, align: 64, dwarfAddressSpace: 0)
!5 = !DIBasicType(name: "()", encoding: DW_ATE_unsigned)
!6 = !{!7}
!7 = !DISubrange(count: 6, lowerBound: 0)
!8 = !{i32 7, !"PIC Level", i32 2}
!9 = !{i32 7, !"PIE Level", i32 2}
!10 = !{i32 2, !"RtLibUseGOT", i32 1}
!11 = !{i32 2, !"Debug Info Version", i32 3}
!12 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !13, producer: "clang LLVM (rustc version 1.58.0-nightly (514b38779 2021-10-22))", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !14, globals: !31)
!13 = !DIFile(filename: "src/main.rs", directory: "/playground")
!14 = !{!15, !22}
!15 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Result", scope: !16, file: !2, baseType: !18, size: 8, align: 8, flags: DIFlagEnumClass, elements: !19)
!16 = !DINamespace(name: "result", scope: !17)
!17 = !DINamespace(name: "core", scope: null)
!18 = !DIBasicType(name: "u8", size: 8, encoding: DW_ATE_unsigned)
!19 = !{!20, !21}
!20 = !DIEnumerator(name: "Ok", value: 0)
!21 = !DIEnumerator(name: "Err", value: 1)
!22 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Alignment", scope: !23, file: !2, baseType: !18, size: 8, align: 8, flags: DIFlagEnumClass, elements: !26)
!23 = !DINamespace(name: "v1", scope: !24)
!24 = !DINamespace(name: "rt", scope: !25)
!25 = !DINamespace(name: "fmt", scope: !17)
!26 = !{!27, !28, !29, !30}
!27 = !DIEnumerator(name: "Left", value: 0)
!28 = !DIEnumerator(name: "Right", value: 1)
!29 = !DIEnumerator(name: "Center", value: 2)
!30 = !DIEnumerator(name: "Unknown", value: 3)
!31 = !{!0}
!32 = distinct !DISubprogram(name: "spec_next<i32>", linkageName: "_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$9spec_next17h8e3e7ff7ce9769faE", scope: !34, file: !33, line: 1005, type: !37, scopeLine: 1005, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !67)
!33 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/iter/range.rs", directory: "", checksumkind: CSK_MD5, checksum: "45fcb37f1eabc668842daa3fc437ff9a")
!34 = !DINamespace(name: "{impl#11}", scope: !35)
!35 = !DINamespace(name: "range", scope: !36)
!36 = !DINamespace(name: "iter", scope: !17)
!37 = !DISubroutineType(types: !38)
!38 = !{!39, !56}
!39 = !DICompositeType(tag: DW_TAG_structure_type, name: "Option<i32>", scope: !40, file: !2, size: 64, align: 32, elements: !41, identifier: "520e2877000f087132f8c57f5456517e")
!40 = !DINamespace(name: "option", scope: !17)
!41 = !{!42}
!42 = !DICompositeType(tag: DW_TAG_variant_part, scope: !40, file: !2, size: 64, align: 32, elements: !43, templateParams: !47, identifier: "520e2877000f087132f8c57f5456517e_variant_part", discriminator: !54)
!43 = !{!44, !50}
!44 = !DIDerivedType(tag: DW_TAG_member, name: "None", scope: !42, file: !2, baseType: !45, size: 64, align: 32, extraData: i64 0)
!45 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !39, file: !2, size: 64, align: 32, elements: !46, templateParams: !47, identifier: "520e2877000f087132f8c57f5456517e::None")
!46 = !{}
!47 = !{!48}
!48 = !DITemplateTypeParameter(name: "T", type: !49)
!49 = !DIBasicType(name: "i32", size: 32, encoding: DW_ATE_signed)
!50 = !DIDerivedType(tag: DW_TAG_member, name: "Some", scope: !42, file: !2, baseType: !51, size: 64, align: 32, extraData: i64 1)
!51 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !39, file: !2, size: 64, align: 32, elements: !52, templateParams: !47, identifier: "520e2877000f087132f8c57f5456517e::Some")
!52 = !{!53}
!53 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !51, file: !2, baseType: !49, size: 32, align: 32, offset: 32)
!54 = !DIDerivedType(tag: DW_TAG_member, scope: !40, file: !2, baseType: !55, size: 32, align: 32, flags: DIFlagArtificial)
!55 = !DIBasicType(name: "u32", size: 32, encoding: DW_ATE_unsigned)
!56 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&mut RangeInclusive<i32>", baseType: !57, size: 64, align: 64, dwarfAddressSpace: 0)
!57 = !DICompositeType(tag: DW_TAG_structure_type, name: "RangeInclusive<i32>", scope: !58, file: !2, size: 96, align: 32, elements: !60, templateParams: !65, identifier: "90b9de7dfa46524ba1a7fa25ada17edd")
!58 = !DINamespace(name: "range", scope: !59)
!59 = !DINamespace(name: "ops", scope: !17)
!60 = !{!61, !62, !63}
!61 = !DIDerivedType(tag: DW_TAG_member, name: "start", scope: !57, file: !2, baseType: !49, size: 32, align: 32)
!62 = !DIDerivedType(tag: DW_TAG_member, name: "end", scope: !57, file: !2, baseType: !49, size: 32, align: 32, offset: 32)
!63 = !DIDerivedType(tag: DW_TAG_member, name: "exhausted", scope: !57, file: !2, baseType: !64, size: 8, align: 8, offset: 64)
!64 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
!65 = !{!66}
!66 = !DITemplateTypeParameter(name: "Idx", type: !49)
!67 = !{!68, !69, !71}
!68 = !DILocalVariable(name: "self", arg: 1, scope: !32, file: !33, line: 1005, type: !56)
!69 = !DILocalVariable(name: "is_iterating", scope: !70, file: !33, line: 1009, type: !64, align: 1)
!70 = distinct !DILexicalBlock(scope: !32, file: !33, line: 1009, column: 9)
!71 = !DILocalVariable(name: "n", scope: !72, file: !33, line: 1012, type: !49, align: 4)
!72 = distinct !DILexicalBlock(scope: !70, file: !33, line: 1012, column: 13)
!73 = !DILocation(line: 1005, column: 18, scope: !32)
!74 = !DILocation(line: 1006, column: 12, scope: !32)
!75 = !DILocation(line: 1009, column: 28, scope: !32)
!76 = !DILocation(line: 1009, column: 41, scope: !32)
!77 = !DILocation(line: 1009, column: 13, scope: !70)
!78 = !DILocation(line: 1007, column: 20, scope: !32)
!79 = !DILocation(line: 1018, column: 6, scope: !32)
!80 = !{i32 0, i32 2}
!81 = !DILocation(line: 1010, column: 17, scope: !70)
!82 = !DILocation(line: 1015, column: 13, scope: !70)
!83 = !DILocation(line: 1016, column: 13, scope: !70)
!84 = !DILocation(line: 1012, column: 54, scope: !70)
!85 = !DILocation(line: 1012, column: 30, scope: !70)
!86 = !DILocation(line: 1012, column: 17, scope: !72)
!87 = !DILocation(line: 1013, column: 26, scope: !72)
!88 = !DILocation(line: 1013, column: 13, scope: !72)
!89 = !DILocation(line: 1010, column: 14, scope: !70)
!90 = !DILocation(line: 1010, column: 9, scope: !70)
!91 = distinct !DISubprogram(name: "__rust_begin_short_backtrace<fn(), ()>", linkageName: "_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h4e9f6f38fdde0982E", scope: !93, file: !92, line: 119, type: !96, scopeLine: 119, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !105, retainedNodes: !101)
!92 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/sys_common/backtrace.rs", directory: "", checksumkind: CSK_MD5, checksum: "6a433c65ecb3674065f414f3ec71fc02")
!93 = !DINamespace(name: "backtrace", scope: !94)
!94 = !DINamespace(name: "sys_common", scope: !95)
!95 = !DINamespace(name: "std", scope: null)
!96 = !DISubroutineType(types: !97)
!97 = !{null, !98}
!98 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "fn()", baseType: !99, size: 64, align: 64, dwarfAddressSpace: 0)
!99 = !DISubroutineType(types: !100)
!100 = !{null}
!101 = !{!102, !103}
!102 = !DILocalVariable(name: "f", arg: 1, scope: !91, file: !92, line: 119, type: !98)
!103 = !DILocalVariable(name: "result", scope: !104, file: !92, line: 123, type: !5, align: 1)
!104 = distinct !DILexicalBlock(scope: !91, file: !92, line: 123, column: 5)
!105 = !{!106, !107}
!106 = !DITemplateTypeParameter(name: "F", type: !98)
!107 = !DITemplateTypeParameter(name: "T", type: !5)
!108 = !DILocation(line: 123, column: 9, scope: !104)
!109 = !DILocation(line: 119, column: 43, scope: !91)
!110 = !DILocation(line: 123, column: 18, scope: !91)
!111 = !DILocation(line: 126, column: 5, scope: !104)
!112 = !DILocation(line: 129, column: 2, scope: !91)
!113 = !DILocation(line: 129, column: 1, scope: !91)
!114 = !DILocation(line: 119, column: 1, scope: !91)
!115 = distinct !DISubprogram(name: "lang_start<()>", linkageName: "_ZN3std2rt10lang_start17hb11772460dd040a5E", scope: !117, file: !116, line: 140, type: !118, scopeLine: 140, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !129, retainedNodes: !123)
!116 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/rt.rs", directory: "", checksumkind: CSK_MD5, checksum: "9c219f2a7a078f72d46cde0ab6c1673d")
!117 = !DINamespace(name: "rt", scope: !95)
!118 = !DISubroutineType(types: !119)
!119 = !{!120, !98, !120, !121}
!120 = !DIBasicType(name: "isize", size: 64, encoding: DW_ATE_signed)
!121 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const *const u8", baseType: !122, size: 64, align: 64, dwarfAddressSpace: 0)
!122 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const u8", baseType: !18, size: 64, align: 64, dwarfAddressSpace: 0)
!123 = !{!124, !125, !126, !127}
!124 = !DILocalVariable(name: "main", arg: 1, scope: !115, file: !116, line: 141, type: !98)
!125 = !DILocalVariable(name: "argc", arg: 2, scope: !115, file: !116, line: 142, type: !120)
!126 = !DILocalVariable(name: "argv", arg: 3, scope: !115, file: !116, line: 143, type: !121)
!127 = !DILocalVariable(name: "v", scope: !128, file: !116, line: 145, type: !120, align: 8)
!128 = distinct !DILexicalBlock(scope: !115, file: !116, line: 145, column: 5)
!129 = !{!107}
!130 = !DILocation(line: 141, column: 5, scope: !115)
!131 = !DILocation(line: 142, column: 5, scope: !115)
!132 = !DILocation(line: 143, column: 5, scope: !115)
!133 = !DILocation(line: 146, column: 10, scope: !115)
!134 = !DILocation(line: 146, column: 9, scope: !115)
!135 = !DILocation(line: 145, column: 17, scope: !115)
!136 = !DILocation(line: 145, column: 12, scope: !115)
!137 = !DILocation(line: 145, column: 12, scope: !128)
!138 = !DILocation(line: 151, column: 2, scope: !115)
!139 = distinct !DISubprogram(name: "{closure#0}<()>", linkageName: "_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h911bc1c217c1290cE", scope: !140, file: !116, line: 146, type: !141, scopeLine: 146, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !129, retainedNodes: !147)
!140 = !DINamespace(name: "lang_start", scope: !117)
!141 = !DISubroutineType(types: !142)
!142 = !{!49, !143}
!143 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&{closure#0}", baseType: !144, size: 64, align: 64, dwarfAddressSpace: 0)
!144 = !DICompositeType(tag: DW_TAG_structure_type, name: "{closure#0}", scope: !140, file: !2, size: 64, align: 64, elements: !145, templateParams: !46, identifier: "e4bf03276215ab50a77042643bc6c774")
!145 = !{!146}
!146 = !DIDerivedType(tag: DW_TAG_member, name: "main", scope: !144, file: !2, baseType: !98, size: 64, align: 64)
!147 = !{!148}
!148 = !DILocalVariable(name: "main", scope: !139, file: !116, line: 141, type: !98, align: 8)
!149 = !DILocation(line: 141, column: 5, scope: !139)
!150 = !DILocation(line: 146, column: 77, scope: !139)
!151 = !DILocation(line: 146, column: 18, scope: !139)
!152 = !DILocation(line: 146, column: 91, scope: !139)
!153 = distinct !DISubprogram(name: "as_i32", linkageName: "_ZN3std3sys4unix7process14process_common8ExitCode6as_i3217hd13b8893498ff873E", scope: !155, file: !154, line: 474, type: !162, scopeLine: 474, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !165)
!154 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/sys/unix/process/process_common.rs", directory: "", checksumkind: CSK_MD5, checksum: "cfab9a537a845e5d2a97a9ac6ebb2d63")
!155 = !DICompositeType(tag: DW_TAG_structure_type, name: "ExitCode", scope: !156, file: !2, size: 8, align: 8, elements: !160, templateParams: !46, identifier: "ca1e859fa2776d27d52773dbcbe2ccd6")
!156 = !DINamespace(name: "process_common", scope: !157)
!157 = !DINamespace(name: "process", scope: !158)
!158 = !DINamespace(name: "unix", scope: !159)
!159 = !DINamespace(name: "sys", scope: !95)
!160 = !{!161}
!161 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !155, file: !2, baseType: !18, size: 8, align: 8)
!162 = !DISubroutineType(types: !163)
!163 = !{!49, !164}
!164 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&ExitCode", baseType: !155, size: 64, align: 64, dwarfAddressSpace: 0)
!165 = !{!166}
!166 = !DILocalVariable(name: "self", arg: 1, scope: !153, file: !154, line: 474, type: !164)
!167 = !DILocation(line: 474, column: 19, scope: !153)
!168 = !DILocation(line: 475, column: 9, scope: !153)
!169 = !DILocation(line: 476, column: 6, scope: !153)
!170 = distinct !DISubprogram(name: "forward_unchecked", linkageName: "_ZN47_$LT$i32$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17hb65db05a78cf033fE", scope: !171, file: !33, line: 189, type: !172, scopeLine: 189, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !175)
!171 = !DINamespace(name: "{impl#34}", scope: !35)
!172 = !DISubroutineType(types: !173)
!173 = !{!49, !49, !174}
!174 = !DIBasicType(name: "usize", size: 64, encoding: DW_ATE_unsigned)
!175 = !{!176, !177}
!176 = !DILocalVariable(name: "start", arg: 1, scope: !170, file: !33, line: 189, type: !49)
!177 = !DILocalVariable(name: "n", arg: 2, scope: !170, file: !33, line: 189, type: !174)
!178 = !DILocation(line: 189, column: 37, scope: !170)
!179 = !DILocation(line: 189, column: 50, scope: !170)
!180 = !DILocation(line: 191, column: 42, scope: !170)
!181 = !DILocalVariable(name: "self", arg: 1, scope: !182, file: !183, line: 451, type: !49)
!182 = distinct !DISubprogram(name: "unchecked_add", linkageName: "_ZN4core3num21_$LT$impl$u20$i32$GT$13unchecked_add17hd599cda7ea5a4a57E", scope: !184, file: !183, line: 451, type: !186, scopeLine: 451, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !188)
!183 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/num/int_macros.rs", directory: "", checksumkind: CSK_MD5, checksum: "97efe768035c6cdeeb8134901fc16322")
!184 = !DINamespace(name: "{impl#2}", scope: !185)
!185 = !DINamespace(name: "num", scope: !17)
!186 = !DISubroutineType(types: !187)
!187 = !{!49, !49, !49}
!188 = !{!181, !189}
!189 = !DILocalVariable(name: "rhs", arg: 2, scope: !182, file: !183, line: 451, type: !49)
!190 = !DILocation(line: 451, column: 43, scope: !182, inlinedAt: !191)
!191 = distinct !DILocation(line: 191, column: 22, scope: !170)
!192 = !DILocation(line: 451, column: 49, scope: !182, inlinedAt: !191)
!193 = !DILocation(line: 454, column: 22, scope: !182, inlinedAt: !191)
!194 = !DILocation(line: 191, column: 22, scope: !170)
!195 = !DILocation(line: 192, column: 10, scope: !170)
!196 = distinct !DISubprogram(name: "le", linkageName: "_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2le17h28177f5bc7fa17dfE", scope: !198, file: !197, line: 1329, type: !201, scopeLine: 1329, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !204)
!197 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/cmp.rs", directory: "", checksumkind: CSK_MD5, checksum: "e2c34f30182490ef541be96b28e616cf")
!198 = !DINamespace(name: "{impl#72}", scope: !199)
!199 = !DINamespace(name: "impls", scope: !200)
!200 = !DINamespace(name: "cmp", scope: !17)
!201 = !DISubroutineType(types: !202)
!202 = !{!64, !203, !203}
!203 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&i32", baseType: !49, size: 64, align: 64, dwarfAddressSpace: 0)
!204 = !{!205, !206}
!205 = !DILocalVariable(name: "self", arg: 1, scope: !196, file: !197, line: 1329, type: !203)
!206 = !DILocalVariable(name: "other", arg: 2, scope: !196, file: !197, line: 1329, type: !203)
!207 = !DILocation(line: 1329, column: 23, scope: !196)
!208 = !DILocation(line: 1329, column: 30, scope: !196)
!209 = !DILocation(line: 1329, column: 52, scope: !196)
!210 = !DILocation(line: 1329, column: 63, scope: !196)
!211 = !DILocation(line: 1329, column: 73, scope: !196)
!212 = distinct !DISubprogram(name: "lt", linkageName: "_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h3b55dba9ab46e68cE", scope: !198, file: !197, line: 1327, type: !201, scopeLine: 1327, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !213)
!213 = !{!214, !215}
!214 = !DILocalVariable(name: "self", arg: 1, scope: !212, file: !197, line: 1327, type: !203)
!215 = !DILocalVariable(name: "other", arg: 2, scope: !212, file: !197, line: 1327, type: !203)
!216 = !DILocation(line: 1327, column: 23, scope: !212)
!217 = !DILocation(line: 1327, column: 30, scope: !212)
!218 = !DILocation(line: 1327, column: 52, scope: !212)
!219 = !DILocation(line: 1327, column: 62, scope: !212)
!220 = !DILocation(line: 1327, column: 72, scope: !212)
!221 = distinct !DISubprogram(name: "new<i32>", linkageName: "_ZN4core3fmt10ArgumentV13new17h37be4d5dded1d744E", scope: !223, file: !222, line: 314, type: !265, scopeLine: 314, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !270)
!222 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/fmt/mod.rs", directory: "", checksumkind: CSK_MD5, checksum: "8e7ebdafdaa535d03fe8490be5d0b5ea")
!223 = !DICompositeType(tag: DW_TAG_structure_type, name: "ArgumentV1", scope: !25, file: !2, size: 128, align: 64, elements: !224, templateParams: !46, identifier: "ac010a02bd9b96aa19aa232e12654739")
!224 = !{!225, !228}
!225 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !223, file: !2, baseType: !226, size: 64, align: 64)
!226 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&Opaque", baseType: !227, size: 64, align: 64, dwarfAddressSpace: 0)
!227 = !DICompositeType(tag: DW_TAG_structure_type, name: "Opaque", file: !2, align: 8, elements: !46, identifier: "d46c5fede2d672f276c459bb9be69e5b")
!228 = !DIDerivedType(tag: DW_TAG_member, name: "formatter", scope: !223, file: !2, baseType: !229, size: 64, align: 64, offset: 64)
!229 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "fn(&core::fmt::::Opaque, &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error>", baseType: !230, size: 64, align: 64, dwarfAddressSpace: 0)
!230 = !DISubroutineType(types: !231)
!231 = !{!15, !226, !232}
!232 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&mut Formatter", baseType: !233, size: 64, align: 64, dwarfAddressSpace: 0)
!233 = !DICompositeType(tag: DW_TAG_structure_type, name: "Formatter", scope: !25, file: !2, size: 512, align: 64, elements: !234, templateParams: !46, identifier: "eeb2c223a1c55549d9d68e916bdb5863")
!234 = !{!235, !236, !238, !239, !254, !255}
!235 = !DIDerivedType(tag: DW_TAG_member, name: "flags", scope: !233, file: !2, baseType: !55, size: 32, align: 32, offset: 384)
!236 = !DIDerivedType(tag: DW_TAG_member, name: "fill", scope: !233, file: !2, baseType: !237, size: 32, align: 32, offset: 416)
!237 = !DIBasicType(name: "char", size: 32, encoding: DW_ATE_unsigned_char)
!238 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !233, file: !2, baseType: !22, size: 8, align: 8, offset: 448)
!239 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !233, file: !2, baseType: !240, size: 128, align: 64)
!240 = !DICompositeType(tag: DW_TAG_structure_type, name: "Option<usize>", scope: !40, file: !2, size: 128, align: 64, elements: !241, identifier: "11257ec9ef907446ca7fd243dc2b39f3")
!241 = !{!242}
!242 = !DICompositeType(tag: DW_TAG_variant_part, scope: !40, file: !2, size: 128, align: 64, elements: !243, templateParams: !246, identifier: "11257ec9ef907446ca7fd243dc2b39f3_variant_part", discriminator: !252)
!243 = !{!244, !248}
!244 = !DIDerivedType(tag: DW_TAG_member, name: "None", scope: !242, file: !2, baseType: !245, size: 128, align: 64, extraData: i64 0)
!245 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !240, file: !2, size: 128, align: 64, elements: !46, templateParams: !246, identifier: "11257ec9ef907446ca7fd243dc2b39f3::None")
!246 = !{!247}
!247 = !DITemplateTypeParameter(name: "T", type: !174)
!248 = !DIDerivedType(tag: DW_TAG_member, name: "Some", scope: !242, file: !2, baseType: !249, size: 128, align: 64, extraData: i64 1)
!249 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !240, file: !2, size: 128, align: 64, elements: !250, templateParams: !246, identifier: "11257ec9ef907446ca7fd243dc2b39f3::Some")
!250 = !{!251}
!251 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !249, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!252 = !DIDerivedType(tag: DW_TAG_member, scope: !40, file: !2, baseType: !253, size: 64, align: 64, flags: DIFlagArtificial)
!253 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
!254 = !DIDerivedType(tag: DW_TAG_member, name: "precision", scope: !233, file: !2, baseType: !240, size: 128, align: 64, offset: 128)
!255 = !DIDerivedType(tag: DW_TAG_member, name: "buf", scope: !233, file: !2, baseType: !256, size: 128, align: 64, offset: 256)
!256 = !DICompositeType(tag: DW_TAG_structure_type, name: "&mut dyn core::fmt::Write", file: !2, size: 128, align: 64, elements: !257, templateParams: !46, identifier: "487e8b1fb6484ac9c147b9169fe7341")
!257 = !{!258, !260}
!258 = !DIDerivedType(tag: DW_TAG_member, name: "pointer", scope: !256, file: !2, baseType: !259, size: 64, align: 64, flags: DIFlagArtificial)
!259 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*mut u8", baseType: !18, size: 64, align: 64, dwarfAddressSpace: 0)
!260 = !DIDerivedType(tag: DW_TAG_member, name: "vtable", scope: !256, file: !2, baseType: !261, size: 64, align: 64, offset: 64, flags: DIFlagArtificial)
!261 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&[usize; 3]", baseType: !262, size: 64, align: 64, dwarfAddressSpace: 0)
!262 = !DICompositeType(tag: DW_TAG_array_type, baseType: !174, size: 192, align: 64, elements: !263)
!263 = !{!264}
!264 = !DISubrange(count: 3, lowerBound: 0)
!265 = !DISubroutineType(types: !266)
!266 = !{!223, !203, !267}
!267 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "fn(&i32, &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error>", baseType: !268, size: 64, align: 64, dwarfAddressSpace: 0)
!268 = !DISubroutineType(types: !269)
!269 = !{!15, !203, !232}
!270 = !{!271, !272}
!271 = !DILocalVariable(name: "x", arg: 1, scope: !221, file: !222, line: 314, type: !203)
!272 = !DILocalVariable(name: "f", arg: 2, scope: !221, file: !222, line: 314, type: !267)
!273 = !DILocation(line: 314, column: 23, scope: !221)
!274 = !DILocation(line: 314, column: 33, scope: !221)
!275 = !DILocation(line: 323, column: 42, scope: !221)
!276 = !DILocation(line: 323, column: 68, scope: !221)
!277 = !DILocation(line: 323, column: 18, scope: !221)
!278 = !DILocation(line: 324, column: 6, scope: !221)
!279 = distinct !DISubprogram(name: "new_v1", linkageName: "_ZN4core3fmt9Arguments6new_v117h4acf08bc939b8403E", scope: !280, file: !222, line: 361, type: !342, scopeLine: 361, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !344)
!280 = !DICompositeType(tag: DW_TAG_structure_type, name: "Arguments", scope: !25, file: !2, size: 384, align: 64, elements: !281, templateParams: !46, identifier: "e6d3679adb93c37775e378ef88403188")
!281 = !{!282, !292, !336}
!282 = !DIDerivedType(tag: DW_TAG_member, name: "pieces", scope: !280, file: !2, baseType: !283, size: 128, align: 64)
!283 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[&str]", file: !2, size: 128, align: 64, elements: !284, templateParams: !46, identifier: "e5181a2ba73cefd2b9372dc5646453a9")
!284 = !{!285, !291}
!285 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !283, file: !2, baseType: !286, size: 64, align: 64)
!286 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const &str", baseType: !287, size: 64, align: 64, dwarfAddressSpace: 0)
!287 = !DICompositeType(tag: DW_TAG_structure_type, name: "&str", file: !2, size: 128, align: 64, elements: !288, templateParams: !46, identifier: "7ef2a91eecc7bcf4b4aaea2dbce79437")
!288 = !{!289, !290}
!289 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !287, file: !2, baseType: !122, size: 64, align: 64)
!290 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !287, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!291 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !283, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!292 = !DIDerivedType(tag: DW_TAG_member, name: "fmt", scope: !280, file: !2, baseType: !293, size: 128, align: 64, offset: 128)
!293 = !DICompositeType(tag: DW_TAG_structure_type, name: "Option<&[core::fmt::rt::v1::Argument]>", scope: !40, file: !2, size: 128, align: 64, elements: !294, identifier: "31a009a38fcfa5d258e21ede6787dd5")
!294 = !{!295}
!295 = !DICompositeType(tag: DW_TAG_variant_part, scope: !40, file: !2, size: 128, align: 64, elements: !296, templateParams: !299, identifier: "31a009a38fcfa5d258e21ede6787dd5_variant_part", discriminator: !252)
!296 = !{!297, !332}
!297 = !DIDerivedType(tag: DW_TAG_member, name: "None", scope: !295, file: !2, baseType: !298, size: 128, align: 64, extraData: i64 0)
!298 = !DICompositeType(tag: DW_TAG_structure_type, name: "None", scope: !293, file: !2, size: 128, align: 64, elements: !46, templateParams: !299, identifier: "31a009a38fcfa5d258e21ede6787dd5::None")
!299 = !{!300}
!300 = !DITemplateTypeParameter(name: "T", type: !301)
!301 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[core::fmt::rt::v1::Argument]", file: !2, size: 128, align: 64, elements: !302, templateParams: !46, identifier: "4c36353985b6a8c2673f57552eba944f")
!302 = !{!303, !331}
!303 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !301, file: !2, baseType: !304, size: 64, align: 64)
!304 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const Argument", baseType: !305, size: 64, align: 64, dwarfAddressSpace: 0)
!305 = !DICompositeType(tag: DW_TAG_structure_type, name: "Argument", scope: !23, file: !2, size: 448, align: 64, elements: !306, templateParams: !46, identifier: "65f314ae43c98b4dc1fc5bba5faf3d14")
!306 = !{!307, !308}
!307 = !DIDerivedType(tag: DW_TAG_member, name: "position", scope: !305, file: !2, baseType: !174, size: 64, align: 64)
!308 = !DIDerivedType(tag: DW_TAG_member, name: "format", scope: !305, file: !2, baseType: !309, size: 384, align: 64, offset: 64)
!309 = !DICompositeType(tag: DW_TAG_structure_type, name: "FormatSpec", scope: !23, file: !2, size: 384, align: 64, elements: !310, templateParams: !46, identifier: "58e8b708e3b9d3b396f7b9f69c273605")
!310 = !{!311, !312, !313, !314, !330}
!311 = !DIDerivedType(tag: DW_TAG_member, name: "fill", scope: !309, file: !2, baseType: !237, size: 32, align: 32, offset: 256)
!312 = !DIDerivedType(tag: DW_TAG_member, name: "align", scope: !309, file: !2, baseType: !22, size: 8, align: 8, offset: 320)
!313 = !DIDerivedType(tag: DW_TAG_member, name: "flags", scope: !309, file: !2, baseType: !55, size: 32, align: 32, offset: 288)
!314 = !DIDerivedType(tag: DW_TAG_member, name: "precision", scope: !309, file: !2, baseType: !315, size: 128, align: 64)
!315 = !DICompositeType(tag: DW_TAG_structure_type, name: "Count", scope: !23, file: !2, size: 128, align: 64, elements: !316, identifier: "be69290f282e8ede7492423d8ac36353")
!316 = !{!317}
!317 = !DICompositeType(tag: DW_TAG_variant_part, scope: !23, file: !2, size: 128, align: 64, elements: !318, templateParams: !46, identifier: "be69290f282e8ede7492423d8ac36353_variant_part", discriminator: !329)
!318 = !{!319, !323, !327}
!319 = !DIDerivedType(tag: DW_TAG_member, name: "Is", scope: !317, file: !2, baseType: !320, size: 128, align: 64, extraData: i64 0)
!320 = !DICompositeType(tag: DW_TAG_structure_type, name: "Is", scope: !315, file: !2, size: 128, align: 64, elements: !321, templateParams: !46, identifier: "be69290f282e8ede7492423d8ac36353::Is")
!321 = !{!322}
!322 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !320, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!323 = !DIDerivedType(tag: DW_TAG_member, name: "Param", scope: !317, file: !2, baseType: !324, size: 128, align: 64, extraData: i64 1)
!324 = !DICompositeType(tag: DW_TAG_structure_type, name: "Param", scope: !315, file: !2, size: 128, align: 64, elements: !325, templateParams: !46, identifier: "be69290f282e8ede7492423d8ac36353::Param")
!325 = !{!326}
!326 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !324, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!327 = !DIDerivedType(tag: DW_TAG_member, name: "Implied", scope: !317, file: !2, baseType: !328, size: 128, align: 64, extraData: i64 2)
!328 = !DICompositeType(tag: DW_TAG_structure_type, name: "Implied", scope: !315, file: !2, size: 128, align: 64, elements: !46, templateParams: !46, identifier: "be69290f282e8ede7492423d8ac36353::Implied")
!329 = !DIDerivedType(tag: DW_TAG_member, scope: !23, file: !2, baseType: !253, size: 64, align: 64, flags: DIFlagArtificial)
!330 = !DIDerivedType(tag: DW_TAG_member, name: "width", scope: !309, file: !2, baseType: !315, size: 128, align: 64, offset: 128)
!331 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !301, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!332 = !DIDerivedType(tag: DW_TAG_member, name: "Some", scope: !295, file: !2, baseType: !333, size: 128, align: 64)
!333 = !DICompositeType(tag: DW_TAG_structure_type, name: "Some", scope: !293, file: !2, size: 128, align: 64, elements: !334, templateParams: !299, identifier: "31a009a38fcfa5d258e21ede6787dd5::Some")
!334 = !{!335}
!335 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !333, file: !2, baseType: !301, size: 128, align: 64)
!336 = !DIDerivedType(tag: DW_TAG_member, name: "args", scope: !280, file: !2, baseType: !337, size: 128, align: 64, offset: 256)
!337 = !DICompositeType(tag: DW_TAG_structure_type, name: "&[core::fmt::ArgumentV1]", file: !2, size: 128, align: 64, elements: !338, templateParams: !46, identifier: "9dc5fb40bee74a1aa75875a4d6f45f73")
!338 = !{!339, !341}
!339 = !DIDerivedType(tag: DW_TAG_member, name: "data_ptr", scope: !337, file: !2, baseType: !340, size: 64, align: 64)
!340 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const ArgumentV1", baseType: !223, size: 64, align: 64, dwarfAddressSpace: 0)
!341 = !DIDerivedType(tag: DW_TAG_member, name: "length", scope: !337, file: !2, baseType: !174, size: 64, align: 64, offset: 64)
!342 = !DISubroutineType(types: !343)
!343 = !{!280, !283, !337}
!344 = !{!345, !346}
!345 = !DILocalVariable(name: "pieces", arg: 1, scope: !279, file: !222, line: 361, type: !283)
!346 = !DILocalVariable(name: "args", arg: 2, scope: !279, file: !222, line: 361, type: !337)
!347 = !DILocation(line: 361, column: 25, scope: !279)
!348 = !DILocation(line: 361, column: 53, scope: !279)
!349 = !DILocation(line: 362, column: 12, scope: !279)
!350 = !DILocation(line: 362, column: 56, scope: !279)
!351 = !DILocation(line: 362, column: 41, scope: !279)
!352 = !{i8 0, i8 2}
!353 = !DILocation(line: 365, column: 34, scope: !279)
!354 = !DILocation(line: 365, column: 9, scope: !279)
!355 = !DILocation(line: 366, column: 6, scope: !279)
!356 = !DILocation(line: 363, column: 13, scope: !279)
!357 = distinct !DISubprogram(name: "replace<i32>", linkageName: "_ZN4core3mem7replace17he9d4dcb34a4ae394E", scope: !359, file: !358, line: 823, type: !360, scopeLine: 823, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !363)
!358 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/mem/mod.rs", directory: "", checksumkind: CSK_MD5, checksum: "883d51e5f943e6c9bb03927c5ddb0f4d")
!359 = !DINamespace(name: "mem", scope: !17)
!360 = !DISubroutineType(types: !361)
!361 = !{!49, !362, !49}
!362 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&mut i32", baseType: !49, size: 64, align: 64, dwarfAddressSpace: 0)
!363 = !{!364, !365, !366}
!364 = !DILocalVariable(name: "dest", arg: 1, scope: !357, file: !358, line: 823, type: !362)
!365 = !DILocalVariable(name: "src", arg: 2, scope: !357, file: !358, line: 823, type: !49)
!366 = !DILocalVariable(name: "result", scope: !367, file: !358, line: 828, type: !49, align: 4)
!367 = distinct !DILexicalBlock(scope: !357, file: !358, line: 828, column: 9)
!368 = !DILocation(line: 823, column: 25, scope: !357)
!369 = !DILocation(line: 823, column: 39, scope: !357)
!370 = !DILocation(line: 828, column: 13, scope: !357)
!371 = !DILocation(line: 828, column: 22, scope: !357)
!372 = !DILocation(line: 828, column: 13, scope: !367)
!373 = !DILocation(line: 829, column: 26, scope: !367)
!374 = !DILocation(line: 829, column: 9, scope: !367)
!375 = !DILocation(line: 832, column: 1, scope: !357)
!376 = !DILocation(line: 832, column: 2, scope: !357)
!377 = !DILocation(line: 831, column: 5, scope: !357)
!378 = !DILocation(line: 823, column: 1, scope: !357)
!379 = distinct !DISubprogram(name: "new<i32>", linkageName: "_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$3new17h2849cd64748fe5c1E", scope: !57, file: !380, line: 374, type: !381, scopeLine: 374, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !65, retainedNodes: !383)
!380 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/ops/range.rs", directory: "", checksumkind: CSK_MD5, checksum: "8be113bc81207e75a8f9e27eced95822")
!381 = !DISubroutineType(types: !382)
!382 = !{!57, !49, !49}
!383 = !{!384, !385}
!384 = !DILocalVariable(name: "start", arg: 1, scope: !379, file: !380, line: 374, type: !49)
!385 = !DILocalVariable(name: "end", arg: 2, scope: !379, file: !380, line: 374, type: !49)
!386 = !DILocation(line: 374, column: 22, scope: !379)
!387 = !DILocation(line: 374, column: 34, scope: !379)
!388 = !DILocation(line: 375, column: 9, scope: !379)
!389 = !DILocation(line: 376, column: 6, scope: !379)
!390 = distinct !DISubprogram(name: "is_empty<i32>", linkageName: "_ZN4core3ops5range25RangeInclusive$LT$Idx$GT$8is_empty17ha9ee05d41a3bd578E", scope: !57, file: !380, line: 539, type: !391, scopeLine: 539, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !65, retainedNodes: !394)
!391 = !DISubroutineType(types: !392)
!392 = !{!64, !393}
!393 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&RangeInclusive<i32>", baseType: !57, size: 64, align: 64, dwarfAddressSpace: 0)
!394 = !{!395}
!395 = !DILocalVariable(name: "self", arg: 1, scope: !390, file: !380, line: 539, type: !393)
!396 = !DILocation(line: 539, column: 21, scope: !390)
!397 = !DILocation(line: 540, column: 9, scope: !390)
!398 = !DILocation(line: 540, column: 29, scope: !390)
!399 = !DILocation(line: 540, column: 43, scope: !390)
!400 = !DILocation(line: 540, column: 28, scope: !390)
!401 = !DILocation(line: 541, column: 6, scope: !390)
!402 = !DILocation(line: 540, column: 27, scope: !390)
!403 = distinct !DISubprogram(name: "call_once<std::rt::lang_start::{closure#0}, ()>", linkageName: "_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h6c2c84984480ea31E", scope: !405, file: !404, line: 227, type: !407, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !413, retainedNodes: !410)
!404 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/ops/function.rs", directory: "", checksumkind: CSK_MD5, checksum: "1a40c014f8a7b8b7cd612b461a47e902")
!405 = !DINamespace(name: "FnOnce", scope: !406)
!406 = !DINamespace(name: "function", scope: !59)
!407 = !DISubroutineType(types: !408)
!408 = !{!49, !409}
!409 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*mut {closure#0}", baseType: !144, size: 64, align: 64, dwarfAddressSpace: 0)
!410 = !{!411, !412}
!411 = !DILocalVariable(arg: 1, scope: !403, file: !404, line: 227, type: !409)
!412 = !DILocalVariable(arg: 2, scope: !403, file: !404, line: 227, type: !5)
!413 = !{!414, !415}
!414 = !DITemplateTypeParameter(name: "Self", type: !144)
!415 = !DITemplateTypeParameter(name: "Args", type: !5)
!416 = !DILocation(line: 227, column: 5, scope: !403)
!417 = distinct !DISubprogram(name: "call_once<fn(), ()>", linkageName: "_ZN4core3ops8function6FnOnce9call_once17h18c2ac22b80f40d9E", scope: !405, file: !404, line: 227, type: !96, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !421, retainedNodes: !418)
!418 = !{!419, !420}
!419 = !DILocalVariable(arg: 1, scope: !417, file: !404, line: 227, type: !98)
!420 = !DILocalVariable(arg: 2, scope: !417, file: !404, line: 227, type: !5)
!421 = !{!422, !415}
!422 = !DITemplateTypeParameter(name: "Self", type: !98)
!423 = !DILocation(line: 227, column: 5, scope: !417)
!424 = distinct !DISubprogram(name: "call_once<std::rt::lang_start::{closure#0}, ()>", linkageName: "_ZN4core3ops8function6FnOnce9call_once17hbd05cccd3153e2b1E", scope: !405, file: !404, line: 227, type: !425, scopeLine: 227, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !413, retainedNodes: !427)
!425 = !DISubroutineType(types: !426)
!426 = !{!49, !144}
!427 = !{!428, !429}
!428 = !DILocalVariable(arg: 1, scope: !424, file: !404, line: 227, type: !144)
!429 = !DILocalVariable(arg: 2, scope: !424, file: !404, line: 227, type: !5)
!430 = !DILocation(line: 227, column: 5, scope: !424)
!431 = distinct !DISubprogram(name: "read<i32>", linkageName: "_ZN4core3ptr4read17hc3739d5fa6d04dd3E", scope: !433, file: !432, line: 683, type: !434, scopeLine: 683, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !437)
!432 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/ptr/mod.rs", directory: "", checksumkind: CSK_MD5, checksum: "207736266ff0d04d675044b37a0a2de6")
!433 = !DINamespace(name: "ptr", scope: !17)
!434 = !DISubroutineType(types: !435)
!435 = !{!49, !436}
!436 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*const i32", baseType: !49, size: 64, align: 64, dwarfAddressSpace: 0)
!437 = !{!438, !439}
!438 = !DILocalVariable(name: "src", arg: 1, scope: !431, file: !432, line: 683, type: !436)
!439 = !DILocalVariable(name: "tmp", scope: !440, file: !432, line: 691, type: !441, align: 4)
!440 = distinct !DILexicalBlock(scope: !431, file: !432, line: 691, column: 5)
!441 = !DICompositeType(tag: DW_TAG_union_type, name: "MaybeUninit<i32>", scope: !442, file: !2, size: 32, align: 32, elements: !443, templateParams: !47, identifier: "66e75c82d90d226e8e77c522990a166a")
!442 = !DINamespace(name: "maybe_uninit", scope: !359)
!443 = !{!444, !445}
!444 = !DIDerivedType(tag: DW_TAG_member, name: "uninit", scope: !441, file: !2, baseType: !5, align: 8)
!445 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !441, file: !2, baseType: !446, size: 32, align: 32)
!446 = !DICompositeType(tag: DW_TAG_structure_type, name: "ManuallyDrop<i32>", scope: !447, file: !2, size: 32, align: 32, elements: !448, templateParams: !47, identifier: "a4316a105d289e2ec476219e899a3171")
!447 = !DINamespace(name: "manually_drop", scope: !359)
!448 = !{!449}
!449 = !DIDerivedType(tag: DW_TAG_member, name: "value", scope: !446, file: !2, baseType: !49, size: 32, align: 32)
!450 = !DILocation(line: 683, column: 29, scope: !431)
!451 = !DILocation(line: 691, column: 9, scope: !440)
!452 = !DILocation(line: 320, column: 9, scope: !453, inlinedAt: !457)
!453 = distinct !DISubprogram(name: "uninit<i32>", linkageName: "_ZN4core3mem12maybe_uninit20MaybeUninit$LT$T$GT$6uninit17h8ebaab96a4cb3e59E", scope: !441, file: !454, line: 319, type: !455, scopeLine: 319, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !46)
!454 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/mem/maybe_uninit.rs", directory: "", checksumkind: CSK_MD5, checksum: "d44050704bbee448fe46fd3678200ab5")
!455 = !DISubroutineType(types: !456)
!456 = !{!441}
!457 = distinct !DILocation(line: 691, column: 19, scope: !431)
!458 = !DILocation(line: 321, column: 6, scope: !453, inlinedAt: !457)
!459 = !DILocation(line: 691, column: 19, scope: !431)
!460 = !DILocalVariable(name: "self", arg: 1, scope: !461, file: !454, line: 572, type: !465)
!461 = distinct !DISubprogram(name: "as_mut_ptr<i32>", linkageName: "_ZN4core3mem12maybe_uninit20MaybeUninit$LT$T$GT$10as_mut_ptr17h76fcf45bfc4328a4E", scope: !441, file: !454, line: 572, type: !462, scopeLine: 572, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !466)
!462 = !DISubroutineType(types: !463)
!463 = !{!464, !465}
!464 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "*mut i32", baseType: !49, size: 64, align: 64, dwarfAddressSpace: 0)
!465 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&mut MaybeUninit<i32>", baseType: !441, size: 64, align: 64, dwarfAddressSpace: 0)
!466 = !{!460}
!467 = !DILocation(line: 572, column: 29, scope: !461, inlinedAt: !468)
!468 = distinct !DILocation(line: 699, column: 34, scope: !440)
!469 = !DILocation(line: 699, column: 34, scope: !440)
!470 = !DILocation(line: 699, column: 9, scope: !440)
!471 = !DILocation(line: 700, column: 9, scope: !440)
!472 = !DILocalVariable(name: "self", arg: 1, scope: !473, file: !454, line: 627, type: !441)
!473 = distinct !DISubprogram(name: "assume_init<i32>", linkageName: "_ZN4core3mem12maybe_uninit20MaybeUninit$LT$T$GT$11assume_init17h8895432f87aef6bbE", scope: !441, file: !454, line: 627, type: !474, scopeLine: 627, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !484)
!474 = !DISubroutineType(types: !475)
!475 = !{!49, !441, !476}
!476 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&Location", baseType: !477, size: 64, align: 64, dwarfAddressSpace: 0)
!477 = !DICompositeType(tag: DW_TAG_structure_type, name: "Location", scope: !478, file: !2, size: 192, align: 64, elements: !480, templateParams: !46, identifier: "4a07edf916eb65d5eaff3de67e773412")
!478 = !DINamespace(name: "location", scope: !479)
!479 = !DINamespace(name: "panic", scope: !17)
!480 = !{!481, !482, !483}
!481 = !DIDerivedType(tag: DW_TAG_member, name: "file", scope: !477, file: !2, baseType: !287, size: 128, align: 64)
!482 = !DIDerivedType(tag: DW_TAG_member, name: "line", scope: !477, file: !2, baseType: !55, size: 32, align: 32, offset: 128)
!483 = !DIDerivedType(tag: DW_TAG_member, name: "col", scope: !477, file: !2, baseType: !55, size: 32, align: 32, offset: 160)
!484 = !{!472}
!485 = !DILocation(line: 627, column: 37, scope: !473, inlinedAt: !486)
!486 = distinct !DILocation(line: 700, column: 9, scope: !440)
!487 = !DILocalVariable(name: "slot", arg: 1, scope: !488, file: !489, line: 87, type: !446)
!488 = distinct !DISubprogram(name: "into_inner<i32>", linkageName: "_ZN4core3mem13manually_drop21ManuallyDrop$LT$T$GT$10into_inner17h40bbb50fef1b9779E", scope: !446, file: !489, line: 87, type: !490, scopeLine: 87, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !492)
!489 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/mem/manually_drop.rs", directory: "", checksumkind: CSK_MD5, checksum: "3ee3636c2454161473c2353da5f45532")
!490 = !DISubroutineType(types: !491)
!491 = !{!49, !446}
!492 = !{!487}
!493 = !DILocation(line: 87, column: 29, scope: !488, inlinedAt: !494)
!494 = distinct !DILocation(line: 632, column: 13, scope: !473, inlinedAt: !486)
!495 = !DILocation(line: 702, column: 2, scope: !431)
!496 = distinct !DISubprogram(name: "write<i32>", linkageName: "_ZN4core3ptr5write17h7770e0bcdd7264bbE", scope: !433, file: !432, line: 878, type: !497, scopeLine: 878, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !47, retainedNodes: !499)
!497 = !DISubroutineType(types: !498)
!498 = !{null, !464, !49}
!499 = !{!500, !501}
!500 = !DILocalVariable(name: "dst", arg: 1, scope: !496, file: !432, line: 878, type: !464)
!501 = !DILocalVariable(name: "src", arg: 2, scope: !496, file: !432, line: 878, type: !49)
!502 = !DILocation(line: 878, column: 30, scope: !496)
!503 = !DILocation(line: 878, column: 43, scope: !496)
!504 = !DILocation(line: 890, column: 9, scope: !496)
!505 = !DILocation(line: 893, column: 2, scope: !496)
!506 = distinct !DISubprogram(name: "drop_in_place<std::rt::lang_start::{closure#0}>", linkageName: "_ZN4core3ptr85drop_in_place$LT$std..rt..lang_start$LT$$LP$$RP$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$17h3915719e248dede1E", scope: !433, file: !432, line: 188, type: !507, scopeLine: 188, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !511, retainedNodes: !509)
!507 = !DISubroutineType(types: !508)
!508 = !{null, !409}
!509 = !{!510}
!510 = !DILocalVariable(arg: 1, scope: !506, file: !432, line: 188, type: !409)
!511 = !{!512}
!512 = !DITemplateTypeParameter(name: "T", type: !144)
!513 = !DILocation(line: 188, column: 1, scope: !506)
!514 = distinct !DISubprogram(name: "black_box<()>", linkageName: "_ZN4core4hint9black_box17h7b40df1726849b56E", scope: !516, file: !515, line: 157, type: !517, scopeLine: 157, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !129, retainedNodes: !519)
!515 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/hint.rs", directory: "", checksumkind: CSK_MD5, checksum: "353ba7433a0379654c9fa1a930951b37")
!516 = !DINamespace(name: "hint", scope: !17)
!517 = !DISubroutineType(types: !518)
!518 = !{null, !5}
!519 = !{!520}
!520 = !DILocalVariable(name: "dummy", arg: 1, scope: !514, file: !515, line: 157, type: !5)
!521 = !DILocation(line: 157, column: 21, scope: !514)
!522 = !DILocation(line: 158, column: 5, scope: !514)
!523 = !{i32 3165097}
!524 = !DILocation(line: 159, column: 2, scope: !514)
!525 = distinct !DISubprogram(name: "next<i32>", linkageName: "_ZN4core4iter5range110_$LT$impl$u20$core..iter..traits..iterator..Iterator$u20$for$u20$core..ops..range..RangeInclusive$LT$A$GT$$GT$4next17h3cc42889a4f33368E", scope: !526, file: !33, line: 1100, type: !37, scopeLine: 1100, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !529, retainedNodes: !527)
!526 = !DINamespace(name: "{impl#12}", scope: !35)
!527 = !{!528}
!528 = !DILocalVariable(name: "self", arg: 1, scope: !525, file: !33, line: 1100, type: !56)
!529 = !{!530}
!530 = !DITemplateTypeParameter(name: "A", type: !49)
!531 = !DILocation(line: 1100, column: 13, scope: !525)
!532 = !DILocation(line: 1101, column: 9, scope: !525)
!533 = !DILocation(line: 1102, column: 6, scope: !525)
!534 = distinct !DISubprogram(name: "clone", linkageName: "_ZN4core5clone5impls52_$LT$impl$u20$core..clone..Clone$u20$for$u20$i32$GT$5clone17h85acc95589e22befE", scope: !536, file: !535, line: 184, type: !539, scopeLine: 184, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !541)
!535 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/clone.rs", directory: "", checksumkind: CSK_MD5, checksum: "f2881393f8ff88a77af3b00f49edee0f")
!536 = !DINamespace(name: "{impl#14}", scope: !537)
!537 = !DINamespace(name: "impls", scope: !538)
!538 = !DINamespace(name: "clone", scope: !17)
!539 = !DISubroutineType(types: !540)
!540 = !{!49, !203}
!541 = !{!542}
!542 = !DILocalVariable(name: "self", arg: 1, scope: !534, file: !535, line: 184, type: !203)
!543 = !DILocation(line: 184, column: 30, scope: !534)
!544 = !DILocation(line: 185, column: 25, scope: !534)
!545 = !DILocation(line: 186, column: 22, scope: !534)
!546 = distinct !DISubprogram(name: "report", linkageName: "_ZN54_$LT$$LP$$RP$$u20$as$u20$std..process..Termination$GT$6report17h2a77a2c7dc791a56E", scope: !548, file: !547, line: 2019, type: !550, scopeLine: 2019, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !552)
!547 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/process.rs", directory: "", checksumkind: CSK_MD5, checksum: "f1040f95df6eac9bb0d3ca98d8a7ea2c")
!548 = !DINamespace(name: "{impl#48}", scope: !549)
!549 = !DINamespace(name: "process", scope: !95)
!550 = !DISubroutineType(types: !551)
!551 = !{!49, !5}
!552 = !{!553}
!553 = !DILocalVariable(name: "self", arg: 1, scope: !546, file: !547, line: 2019, type: !5)
!554 = !DILocation(line: 2019, column: 15, scope: !546)
!555 = !DILocation(line: 2020, column: 9, scope: !546)
!556 = !DILocation(line: 2021, column: 6, scope: !546)
!557 = distinct !DISubprogram(name: "into_iter<core::ops::range::RangeInclusive<i32>>", linkageName: "_ZN63_$LT$I$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h1577d21432db53acE", scope: !559, file: !558, line: 243, type: !562, scopeLine: 243, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !566, retainedNodes: !564)
!558 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/iter/traits/collect.rs", directory: "", checksumkind: CSK_MD5, checksum: "46be48ef08ae744b2af0ec194db882b2")
!559 = !DINamespace(name: "{impl#0}", scope: !560)
!560 = !DINamespace(name: "collect", scope: !561)
!561 = !DINamespace(name: "traits", scope: !36)
!562 = !DISubroutineType(types: !563)
!563 = !{!57, !57}
!564 = !{!565}
!565 = !DILocalVariable(name: "self", arg: 1, scope: !557, file: !558, line: 243, type: !57)
!566 = !{!567}
!567 = !DITemplateTypeParameter(name: "I", type: !57)
!568 = !DILocation(line: 243, column: 18, scope: !557)
!569 = !DILocation(line: 244, column: 9, scope: !557)
!570 = !DILocation(line: 245, column: 6, scope: !557)
!571 = distinct !DISubprogram(name: "report", linkageName: "_ZN68_$LT$std..process..ExitCode$u20$as$u20$std..process..Termination$GT$6report17h30388115231fc605E", scope: !572, file: !547, line: 2053, type: !573, scopeLine: 2053, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !12, templateParams: !46, retainedNodes: !578)
!572 = !DINamespace(name: "{impl#52}", scope: !549)
!573 = !DISubroutineType(types: !574)
!574 = !{!49, !575}
!575 = !DICompositeType(tag: DW_TAG_structure_type, name: "ExitCode", scope: !549, file: !2, size: 8, align: 8, elements: !576, templateParams: !46, identifier: "149fcddb424ba2e53106e0c2bb3adcab")
!576 = !{!577}
!577 = !DIDerivedType(tag: DW_TAG_member, name: "__0", scope: !575, file: !2, baseType: !155, size: 8, align: 8)
!578 = !{!579}
!579 = !DILocalVariable(name: "self", arg: 1, scope: !571, file: !547, line: 2053, type: !575)
!580 = !DILocation(line: 2053, column: 15, scope: !571)
!581 = !DILocation(line: 2054, column: 9, scope: !571)
!582 = !DILocation(line: 2055, column: 6, scope: !571)
!583 = distinct !DISubprogram(name: "main", linkageName: "_ZN10playground4main17hbf379cdc43ed47d6E", scope: !585, file: !584, line: 1, type: !99, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagMainSubprogram, unit: !12, templateParams: !46, retainedNodes: !586)
!584 = !DIFile(filename: "src/main.rs", directory: "/playground", checksumkind: CSK_MD5, checksum: "7dd448afdb92ab97670143dc9caee84e")
!585 = !DINamespace(name: "playground", scope: null)
!586 = !{!587, !589, !591, !593, !595}
!587 = !DILocalVariable(name: "iter", scope: !588, file: !584, line: 2, type: !57, align: 4)
!588 = distinct !DILexicalBlock(scope: !583, file: !584, line: 2, column: 5)
!589 = !DILocalVariable(name: "__next", scope: !590, file: !584, line: 2, type: !49, align: 4)
!590 = distinct !DILexicalBlock(scope: !588, file: !584, line: 2, column: 14)
!591 = !DILocalVariable(name: "val", scope: !592, file: !584, line: 2, type: !49, align: 4)
!592 = distinct !DILexicalBlock(scope: !590, file: !584, line: 2, column: 9)
!593 = !DILocalVariable(name: "i", scope: !594, file: !584, line: 2, type: !49, align: 4)
!594 = distinct !DILexicalBlock(scope: !590, file: !584, line: 2, column: 14)
!595 = !DILocalVariable(name: "arg0", scope: !596, file: !584, line: 3, type: !203, align: 8)
!596 = !DILexicalBlockFile(scope: !597, file: !584, discriminator: 0)
!597 = distinct !DILexicalBlock(scope: !594, file: !598, line: 97, column: 28)
!598 = !DIFile(filename: "/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/std/src/macros.rs", directory: "", checksumkind: CSK_MD5, checksum: "f9ab6ee5184127263a2fc1cebde8cacf")
!599 = !DILocation(line: 2, column: 14, scope: !588)
!600 = !DILocation(line: 2, column: 9, scope: !594)
!601 = !DILocation(line: 2, column: 14, scope: !583)
!602 = !DILocation(line: 2, column: 5, scope: !588)
!603 = !DILocation(line: 2, column: 14, scope: !590)
!604 = !DILocation(line: 5, column: 2, scope: !583)
!605 = !DILocation(line: 2, column: 9, scope: !590)
!606 = !DILocation(line: 2, column: 9, scope: !592)
!607 = !DILocation(line: 3, column: 9, scope: !594)
!608 = !DILocation(line: 3, column: 9, scope: !596)

ASM:

<core::ops::range::RangeInclusive<T> as core::iter::range::RangeInclusiveIteratorImpl>::spec_next: # @"<core::ops::range::RangeInclusive<T> as core::iter::range::RangeInclusiveIteratorImpl>::spec_next"
# %bb.0:
	subq	$72, %rsp
	movq	%rdi, 24(%rsp)                  # 8-byte Spill
	movq	%rdi, 56(%rsp)
	callq	core::ops::range::RangeInclusive<Idx>::is_empty
	movb	%al, 39(%rsp)                   # 1-byte Spill
# %bb.1:
	movb	39(%rsp), %al                   # 1-byte Reload
	testb	$1, %al
	jne	.LBB0_3
	jmp	.LBB0_2

.LBB0_2:
	movq	24(%rsp), %rsi                  # 8-byte Reload
	movq	%rsi, %rdi
	addq	$4, %rsi
	callq	core::cmp::impls::<impl core::cmp::PartialOrd for i32>::lt
	movb	%al, 23(%rsp)                   # 1-byte Spill
	andb	$1, %al
	movb	%al, 67(%rsp)
	jmp	.LBB0_5

.LBB0_3:
	movl	$0, 40(%rsp)

.LBB0_4:
	movl	40(%rsp), %eax
	movl	44(%rsp), %edx
	addq	$72, %rsp
	retq

.LBB0_5:
	movb	23(%rsp), %al                   # 1-byte Reload
	testb	$1, %al
	jne	.LBB0_7
	jmp	.LBB0_6

.LBB0_6:
	movq	24(%rsp), %rdi                  # 8-byte Reload
	movb	$1, 8(%rdi)
	callq	core::clone::impls::<impl core::clone::Clone for i32>::clone
	movl	%eax, 52(%rsp)
	jmp	.LBB0_12

.LBB0_7:
	movq	24(%rsp), %rdi                  # 8-byte Reload
	callq	core::clone::impls::<impl core::clone::Clone for i32>::clone
	movl	%eax, 16(%rsp)                  # 4-byte Spill
# %bb.8:
	movl	16(%rsp), %edi                  # 4-byte Reload
	movl	$1, %esi
	callq	<i32 as core::iter::range::Step>::forward_unchecked
	movl	%eax, 12(%rsp)                  # 4-byte Spill
	movl	%eax, 68(%rsp)
# %bb.9:
	movl	12(%rsp), %esi                  # 4-byte Reload
	movq	24(%rsp), %rdi                  # 8-byte Reload
	callq	core::mem::replace
	movl	%eax, 52(%rsp)
# %bb.10:
	jmp	.LBB0_11

.LBB0_11:
	movl	52(%rsp), %eax
	movl	%eax, 44(%rsp)
	movl	$1, 40(%rsp)
	jmp	.LBB0_4

.LBB0_12:
	jmp	.LBB0_11
                                        # -- End function

std::sys_common::backtrace::__rust_begin_short_backtrace: # @std::sys_common::backtrace::__rust_begin_short_backtrace
# %bb.0:
	subq	$40, %rsp
	movq	%rdi, 16(%rsp)
	callq	core::ops::function::FnOnce::call_once
# %bb.1:
	callq	core::hint::black_box
	jmp	.LBB1_2

.LBB1_2:
	addq	$40, %rsp
	retq

.LBB1_3:
	jmp	.LBB1_5
	movq	%rax, %rcx
	movl	%edx, %eax
	movq	%rcx, 24(%rsp)
	movl	%eax, 32(%rsp)
	jmp	.LBB1_3

.LBB1_5:
	movq	24(%rsp), %rdi
	callq	_Unwind_Resume@PLT
	ud2
                                        # -- End function

std::rt::lang_start: # @std::rt::lang_start
# %bb.0:
	subq	$56, %rsp
	movq	%rdx, %rcx
	movq	%rsi, %rdx
	movq	%rdi, 24(%rsp)
	movq	%rdx, 32(%rsp)
	movq	%rcx, 40(%rsp)
	movq	%rdi, 16(%rsp)
	leaq	16(%rsp), %rdi
	leaq	.L__unnamed_1(%rip), %rsi
	callq	*std::rt::lang_start_internal@GOTPCREL(%rip)
	movq	%rax, 8(%rsp)
# %bb.1:
	movq	8(%rsp), %rax
	movq	%rax, 48(%rsp)
	addq	$56, %rsp
	retq
                                        # -- End function

std::rt::lang_start::{{closure}}: # @"std::rt::lang_start::{{closure}}"
# %bb.0:
	subq	$24, %rsp
	movq	%rdi, 16(%rsp)
	movq	(%rdi), %rdi
	callq	std::sys_common::backtrace::__rust_begin_short_backtrace
# %bb.1:
	callq	<() as std::process::Termination>::report
	movl	%eax, 12(%rsp)                  # 4-byte Spill
# %bb.2:
	movl	12(%rsp), %eax                  # 4-byte Reload
	addq	$24, %rsp
	retq
                                        # -- End function

std::sys::unix::process::process_common::ExitCode::as_i32: # @std::sys::unix::process::process_common::ExitCode::as_i32
# %bb.0:
	pushq	%rax
	movq	%rdi, (%rsp)
	movzbl	(%rdi), %eax
	popq	%rcx
	retq
                                        # -- End function

<i32 as core::iter::range::Step>::forward_unchecked: # @"<i32 as core::iter::range::Step>::forward_unchecked"
# %bb.0:
	subq	$32, %rsp
	movl	%edi, 4(%rsp)
	movq	%rsi, 8(%rsp)
	movl	%esi, %eax
	movl	%edi, 20(%rsp)
	movl	%eax, 24(%rsp)
	addl	%eax, %edi
	movl	%edi, 28(%rsp)
	movl	28(%rsp), %eax
	movl	%eax, (%rsp)                    # 4-byte Spill
# %bb.1:
	movl	(%rsp), %eax                    # 4-byte Reload
	addq	$32, %rsp
	retq
                                        # -- End function

core::cmp::impls::<impl core::cmp::PartialOrd for i32>::le: # @"core::cmp::impls::<impl core::cmp::PartialOrd for i32>::le"
# %bb.0:
	subq	$16, %rsp
	movq	%rdi, (%rsp)
	movq	%rsi, 8(%rsp)
	movl	(%rdi), %eax
	cmpl	(%rsi), %eax
	setle	%al
	andb	$1, %al
	movzbl	%al, %eax
	addq	$16, %rsp
	retq
                                        # -- End function

core::cmp::impls::<impl core::cmp::PartialOrd for i32>::lt: # @"core::cmp::impls::<impl core::cmp::PartialOrd for i32>::lt"
# %bb.0:
	subq	$16, %rsp
	movq	%rdi, (%rsp)
	movq	%rsi, 8(%rsp)
	movl	(%rdi), %eax
	cmpl	(%rsi), %eax
	setl	%al
	andb	$1, %al
	movzbl	%al, %eax
	addq	$16, %rsp
	retq
                                        # -- End function

core::fmt::ArgumentV1::new: # @core::fmt::ArgumentV1::new
# %bb.0:
	subq	$72, %rsp
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	movq	%rdi, 40(%rsp)
	movq	%rsi, 48(%rsp)
	movq	%rsi, 56(%rsp)
	movq	56(%rsp), %rax
	movq	%rax, 16(%rsp)                  # 8-byte Spill
# %bb.1:
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	%rax, 64(%rsp)
	movq	64(%rsp), %rax
	movq	%rax, (%rsp)                    # 8-byte Spill
# %bb.2:
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	(%rsp), %rcx                    # 8-byte Reload
	movq	%rcx, 24(%rsp)
	movq	%rax, 32(%rsp)
	movq	24(%rsp), %rax
	movq	32(%rsp), %rdx
	addq	$72, %rsp
	retq
                                        # -- End function

core::fmt::Arguments::new_v1: # @core::fmt::Arguments::new_v1
# %bb.0:
	subq	$104, %rsp
	movq	%r8, (%rsp)                     # 8-byte Spill
	movq	%rcx, 8(%rsp)                   # 8-byte Spill
	movq	%rdx, 16(%rsp)                  # 8-byte Spill
	movq	%rsi, 24(%rsp)                  # 8-byte Spill
	movq	%rdi, 32(%rsp)                  # 8-byte Spill
	movq	%rdi, 40(%rsp)                  # 8-byte Spill
	movq	%rsi, 72(%rsp)
	movq	%rdx, 80(%rsp)
	movq	%rcx, 88(%rsp)
	movq	%r8, 96(%rsp)
	cmpq	%r8, %rdx
	jb	.LBB9_2
# %bb.1:
	movq	16(%rsp), %rax                  # 8-byte Reload
	movq	(%rsp), %rcx                    # 8-byte Reload
	addq	$1, %rcx
	cmpq	%rcx, %rax
	seta	%al
	andb	$1, %al
	movb	%al, 55(%rsp)
	jmp	.LBB9_3

.LBB9_2:
	movb	$1, 55(%rsp)

.LBB9_3:
	testb	$1, 55(%rsp)
	jne	.LBB9_5
# %bb.4:
	movq	40(%rsp), %rax                  # 8-byte Reload
	movq	32(%rsp), %rcx                  # 8-byte Reload
	movq	(%rsp), %rdx                    # 8-byte Reload
	movq	8(%rsp), %rsi                   # 8-byte Reload
	movq	16(%rsp), %rdi                  # 8-byte Reload
	movq	24(%rsp), %r8                   # 8-byte Reload
	movq	$0, 56(%rsp)
	movq	%r8, (%rcx)
	movq	%rdi, 8(%rcx)
	movq	56(%rsp), %r8
	movq	64(%rsp), %rdi
	movq	%r8, 16(%rcx)
	movq	%rdi, 24(%rcx)
	movq	%rsi, 32(%rcx)
	movq	%rdx, 40(%rcx)
	addq	$104, %rsp
	retq

.LBB9_5:
	leaq	.L__unnamed_2(%rip), %rdi
	leaq	.L__unnamed_3(%rip), %rdx
	movq	core::panicking::panic@GOTPCREL(%rip), %rax
	movl	$12, %esi
	callq	*%rax
	ud2
                                        # -- End function

core::mem::replace: # @core::mem::replace
# %bb.0:
	subq	$72, %rsp
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	movl	%esi, 20(%rsp)                  # 4-byte Spill
	movq	%rdi, 32(%rsp)
	movl	%esi, 44(%rsp)
	movb	$0, 31(%rsp)
	movb	$1, 31(%rsp)
	callq	core::ptr::read
	movl	%eax, 24(%rsp)                  # 4-byte Spill
	jmp	.LBB10_1

.LBB10_1:
	movl	20(%rsp), %esi                  # 4-byte Reload
	movq	8(%rsp), %rdi                   # 8-byte Reload
	movl	24(%rsp), %eax                  # 4-byte Reload
	movl	%eax, 68(%rsp)
	movb	$0, 31(%rsp)
	callq	core::ptr::write
	jmp	.LBB10_4

.LBB10_2:
	testb	$1, 31(%rsp)
	jne	.LBB10_8
	jmp	.LBB10_7
	movq	%rax, %rcx
	movl	%edx, %eax
	movq	%rcx, 48(%rsp)
	movl	%eax, 56(%rsp)
	jmp	.LBB10_2

.LBB10_4:
	movl	24(%rsp), %eax                  # 4-byte Reload
	addq	$72, %rsp
	retq

.LBB10_5:
	jmp	.LBB10_2
	movq	%rax, %rcx
	movl	%edx, %eax
	movq	%rcx, 48(%rsp)
	movl	%eax, 56(%rsp)
	jmp	.LBB10_5

.LBB10_7:
	movq	48(%rsp), %rdi
	callq	_Unwind_Resume@PLT
	ud2

.LBB10_8:
	jmp	.LBB10_7
                                        # -- End function

core::ops::range::RangeInclusive<Idx>::new: # @"core::ops::range::RangeInclusive<Idx>::new"
# %bb.0:
	subq	$24, %rsp
	movl	%edi, 16(%rsp)
	movl	%esi, 20(%rsp)
	movl	%edi, (%rsp)
	movl	%esi, 4(%rsp)
	movb	$0, 8(%rsp)
	movl	8(%rsp), %eax
	movl	%eax, %edx
	movq	(%rsp), %rax
	addq	$24, %rsp
	retq
                                        # -- End function

core::ops::range::RangeInclusive<Idx>::is_empty: # @"core::ops::range::RangeInclusive<Idx>::is_empty"
# %bb.0:
	subq	$40, %rsp
	movq	%rdi, 16(%rsp)                  # 8-byte Spill
	movq	%rdi, 32(%rsp)
	testb	$1, 8(%rdi)
	jne	.LBB12_2
# %bb.1:
	movq	16(%rsp), %rsi                  # 8-byte Reload
	movq	%rsi, %rdi
	addq	$4, %rsi
	callq	core::cmp::impls::<impl core::cmp::PartialOrd for i32>::le
	movb	%al, 15(%rsp)                   # 1-byte Spill
	jmp	.LBB12_4

.LBB12_2:
	movb	$1, 31(%rsp)

.LBB12_3:
	movb	31(%rsp), %al
	andb	$1, %al
	movzbl	%al, %eax
	addq	$40, %rsp
	retq

.LBB12_4:
	movb	15(%rsp), %al                   # 1-byte Reload
	xorb	$-1, %al
	andb	$1, %al
	movb	%al, 31(%rsp)
	jmp	.LBB12_3
                                        # -- End function

core::ops::function::FnOnce::call_once{{vtable.shim}}: # @"core::ops::function::FnOnce::call_once{{vtable.shim}}"
# %bb.0:
	subq	$24, %rsp
	movq	%rdi, 16(%rsp)
	movq	(%rdi), %rdi
	callq	core::ops::function::FnOnce::call_once
	movl	%eax, 4(%rsp)                   # 4-byte Spill
# %bb.1:
	movl	4(%rsp), %eax                   # 4-byte Reload
	addq	$24, %rsp
	retq
                                        # -- End function

core::ops::function::FnOnce::call_once: # @core::ops::function::FnOnce::call_once
# %bb.0:
	subq	$24, %rsp
	movq	%rdi, 16(%rsp)
	callq	*%rdi
# %bb.1:
	addq	$24, %rsp
	retq
                                        # -- End function

core::ops::function::FnOnce::call_once: # @core::ops::function::FnOnce::call_once
# %bb.0:
	subq	$40, %rsp
	movq	%rdi, 8(%rsp)
	leaq	8(%rsp), %rdi
	callq	std::rt::lang_start::{{closure}}
	movl	%eax, 4(%rsp)                   # 4-byte Spill
	jmp	.LBB15_1

.LBB15_1:
	jmp	.LBB15_5

.LBB15_2:
	jmp	.LBB15_4
	movq	%rax, %rcx
	movl	%edx, %eax
	movq	%rcx, 24(%rsp)
	movl	%eax, 32(%rsp)
	jmp	.LBB15_2

.LBB15_4:
	movq	24(%rsp), %rdi
	callq	_Unwind_Resume@PLT
	ud2

.LBB15_5:
	movl	4(%rsp), %eax                   # 4-byte Reload
	addq	$40, %rsp
	retq
                                        # -- End function

core::ptr::read:  # @core::ptr::read
# %bb.0:
	subq	$56, %rsp
	movq	%rdi, 8(%rsp)                   # 8-byte Spill
	movq	%rdi, 24(%rsp)
	movl	48(%rsp), %eax
	movl	%eax, 20(%rsp)
# %bb.1:
	leaq	20(%rsp), %rax
	movq	%rax, 32(%rsp)
# %bb.2:
	movq	8(%rsp), %rax                   # 8-byte Reload
	movl	(%rax), %eax
	movl	%eax, 20(%rsp)
	movl	20(%rsp), %eax
	movl	%eax, 4(%rsp)                   # 4-byte Spill
	movl	%eax, 44(%rsp)
	movl	%eax, 52(%rsp)
# %bb.3:
	movl	4(%rsp), %eax                   # 4-byte Reload
	addq	$56, %rsp
	retq
                                        # -- End function

core::ptr::write: # @core::ptr::write
# %bb.0:
	subq	$16, %rsp
	movl	%esi, 4(%rsp)
	movq	%rdi, 8(%rsp)
	movl	4(%rsp), %eax
	movl	%eax, (%rdi)
	addq	$16, %rsp
	retq
                                        # -- End function
core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>: # @"core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>"
# %bb.0:
	pushq	%rax
	movq	%rdi, (%rsp)
	popq	%rax
	retq
                                        # -- End function

core::hint::black_box: # @core::hint::black_box
# %bb.0:
	pushq	%rax
                                        # implicit-def: $rax
	#APP
	#NO_APP
# %bb.1:
	popq	%rax
	retq
                                        # -- End function

core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::RangeInclusive<A>>::next: # @"core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::RangeInclusive<A>>::next"
# %bb.0:
	subq	$24, %rsp
	movq	%rdi, 16(%rsp)
	callq	<core::ops::range::RangeInclusive<T> as core::iter::range::RangeInclusiveIteratorImpl>::spec_next
	movl	%eax, 8(%rsp)                   # 4-byte Spill
	movl	%edx, 12(%rsp)                  # 4-byte Spill
# %bb.1:
	movl	12(%rsp), %edx                  # 4-byte Reload
	movl	8(%rsp), %eax                   # 4-byte Reload
	addq	$24, %rsp
	retq
                                        # -- End function

core::clone::impls::<impl core::clone::Clone for i32>::clone: # @"core::clone::impls::<impl core::clone::Clone for i32>::clone"
# %bb.0:
	pushq	%rax
	movq	%rdi, (%rsp)
	movl	(%rdi), %eax
	popq	%rcx
	retq
                                        # -- End function
<() as std::process::Termination>::report: # @"<() as std::process::Termination>::report"
# %bb.0:
	subq	$24, %rsp
	xorl	%edi, %edi
	callq	<std::process::ExitCode as std::process::Termination>::report
	movl	%eax, 12(%rsp)                  # 4-byte Spill
# %bb.1:
	movl	12(%rsp), %eax                  # 4-byte Reload
	addq	$24, %rsp
	retq
                                        # -- End function

<I as core::iter::traits::collect::IntoIterator>::into_iter: # @"<I as core::iter::traits::collect::IntoIterator>::into_iter"
# %bb.0:
	subq	$48, %rsp
	movq	%rdi, 16(%rsp)
	movl	%esi, %eax
	movl	%eax, 24(%rsp)
	movl	24(%rsp), %eax
	movl	%eax, 8(%rsp)
	movq	16(%rsp), %rax
	movq	%rax, (%rsp)
	movl	8(%rsp), %eax
	movl	%eax, 40(%rsp)
	movq	(%rsp), %rax
	movq	%rax, 32(%rsp)
	movl	40(%rsp), %eax
	movl	%eax, %edx
	movq	32(%rsp), %rax
	addq	$48, %rsp
	retq
                                        # -- End function

<std::process::ExitCode as std::process::Termination>::report: # @"<std::process::ExitCode as std::process::Termination>::report"
# %bb.0:
	pushq	%rax
	movb	%dil, %al
	movb	%al, 7(%rsp)
	leaq	7(%rsp), %rdi
	callq	std::sys::unix::process::process_common::ExitCode::as_i32
	movl	%eax, (%rsp)                    # 4-byte Spill
# %bb.1:
	movl	(%rsp), %eax                    # 4-byte Reload
	popq	%rcx
	retq
                                        # -- End function

playground::main: # @playground::main
# %bb.0:
	subq	$200, %rsp
	movl	$1, %edi
	movl	$10, %esi
	callq	core::ops::range::RangeInclusive<Idx>::new
	movq	%rax, 152(%rsp)
	movl	%edx, %eax
	movl	%eax, 160(%rsp)
	movq	152(%rsp), %rax
	movq	%rax, 32(%rsp)
	movl	160(%rsp), %eax
	movl	%eax, 40(%rsp)
# %bb.1:
	movl	40(%rsp), %eax
	movl	%eax, %esi
	movq	32(%rsp), %rdi
	callq	<I as core::iter::traits::collect::IntoIterator>::into_iter
	movq	%rax, 168(%rsp)
	movl	%edx, %eax
	movl	%eax, 176(%rsp)
	movq	168(%rsp), %rax
	movq	%rax, 16(%rsp)
	movl	176(%rsp), %eax
	movl	%eax, 24(%rsp)
# %bb.2:
	movq	16(%rsp), %rax
	movq	%rax, 48(%rsp)
	movl	24(%rsp), %eax
	movl	%eax, 56(%rsp)

.LBB25_3:                               # =>This Inner Loop Header: Depth=1
	leaq	48(%rsp), %rdi
	callq	core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::RangeInclusive<A>>::next
	movl	%edx, 68(%rsp)
	movl	%eax, 64(%rsp)
# %bb.4:                                #   in Loop: Header=BB25_3 Depth=1
	movl	64(%rsp), %eax
                                        # kill: def $rax killed $eax
	testq	%rax, %rax
	je	.LBB25_6
	jmp	.LBB25_10

.LBB25_10:                              #   in Loop: Header=BB25_3 Depth=1
	jmp	.LBB25_7
# %bb.5:
	ud2

.LBB25_6:
	addq	$200, %rsp
	retq

.LBB25_7:                               #   in Loop: Header=BB25_3 Depth=1
	movl	68(%rsp), %eax
	movl	%eax, 184(%rsp)
	movl	%eax, 188(%rsp)
	movl	%eax, 76(%rsp)
	leaq	76(%rsp), %rax
	movq	%rax, 144(%rsp)
	movq	144(%rsp), %rdi
	movq	%rdi, 192(%rsp)
	movq	core::fmt::num::imp::<impl core::fmt::Display for i32>::fmt@GOTPCREL(%rip), %rsi
	callq	core::fmt::ArgumentV1::new
	movq	%rax, (%rsp)                    # 8-byte Spill
	movq	%rdx, 8(%rsp)                   # 8-byte Spill
# %bb.8:                                #   in Loop: Header=BB25_3 Depth=1
	movq	8(%rsp), %rax                   # 8-byte Reload
	movq	(%rsp), %rcx                    # 8-byte Reload
	movq	%rcx, 128(%rsp)
	movq	%rax, 136(%rsp)
	leaq	128(%rsp), %rcx
	leaq	80(%rsp), %rdi
	leaq	.L__unnamed_4(%rip), %rsi
	movl	$2, %edx
	movl	$1, %r8d
	callq	core::fmt::Arguments::new_v1
# %bb.9:                                #   in Loop: Header=BB25_3 Depth=1
	leaq	80(%rsp), %rdi
	callq	*std::io::stdio::_print@GOTPCREL(%rip)
	jmp	.LBB25_3
                                        # -- End function

main:                                   # @main
# %bb.0:
	pushq	%rax
	movq	%rsi, %rdx
	movq	__rustc_debug_gdb_scripts_section__@GOTPCREL(%rip), %rax
	movb	(%rax), %al
	movslq	%edi, %rsi
	leaq	playground::main(%rip), %rdi
	callq	std::rt::lang_start
                                        # kill: def $eax killed $eax killed $rax
	popq	%rcx
	retq
                                        # -- End function

.L__unnamed_1:
	.quad	core::ptr::drop_in_place<std::rt::lang_start<()>::{{closure}}>
	.asciz	"\b\000\000\000\000\000\000\000\b\000\000\000\000\000\000"
	.quad	core::ops::function::FnOnce::call_once{{vtable.shim}}
	.quad	std::rt::lang_start::{{closure}}
	.quad	std::rt::lang_start::{{closure}}

.L__unnamed_2:
	.ascii	"invalid args"

.L__unnamed_5:
	.ascii	"/rustc/514b3877956dc594823106b66c164f8cdbc8b3da/library/core/src/fmt/mod.rs"

.L__unnamed_3:
	.quad	.L__unnamed_5
	.asciz	"K\000\000\000\000\000\000\000k\001\000\000\r\000\000"

.L__unnamed_8:

.L__unnamed_9:
	.byte	10

.L__unnamed_4:
	.quad	.L__unnamed_8
	.zero	8
	.quad	.L__unnamed_9
	.asciz	"\001\000\000\000\000\000\000"

__rustc_debug_gdb_scripts_section__:
	.asciz	"\001gdb_load_rust_pretty_printers.py"
	.byte	1                               # Abbreviation Code
	.byte	17                              # DW_TAG_compile_unit
	.byte	1                               # DW_CHILDREN_yes
	.byte	37                              # DW_AT_producer
	.byte	14                              # DW_FORM_strp
	.byte	19                              # DW_AT_language
	.byte	5                               # DW_FORM_data2
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	16                              # DW_AT_stmt_list
	.byte	23                              # DW_FORM_sec_offset
	.byte	27                              # DW_AT_comp_dir
	.byte	14                              # DW_FORM_strp
	.ascii	"\264B"                         # DW_AT_GNU_pubnames
	.byte	25                              # DW_FORM_flag_present
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	85                              # DW_AT_ranges
	.byte	23                              # DW_FORM_sec_offset
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	2                               # Abbreviation Code
	.byte	52                              # DW_TAG_variable
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	3                               # Abbreviation Code
	.byte	1                               # DW_TAG_array_type
	.byte	1                               # DW_CHILDREN_yes
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	4                               # Abbreviation Code
	.byte	33                              # DW_TAG_subrange_type
	.byte	0                               # DW_CHILDREN_no
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	34                              # DW_AT_lower_bound
	.byte	13                              # DW_FORM_sdata
	.byte	55                              # DW_AT_count
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	5                               # Abbreviation Code
	.byte	15                              # DW_TAG_pointer_type
	.byte	0                               # DW_CHILDREN_no
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	51                              # DW_AT_address_class
	.byte	6                               # DW_FORM_data4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	6                               # Abbreviation Code
	.byte	36                              # DW_TAG_base_type
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	62                              # DW_AT_encoding
	.byte	11                              # DW_FORM_data1
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	7                               # Abbreviation Code
	.byte	36                              # DW_TAG_base_type
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.byte	62                              # DW_AT_encoding
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	8                               # Abbreviation Code
	.byte	57                              # DW_TAG_namespace
	.byte	1                               # DW_CHILDREN_yes
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	9                               # Abbreviation Code
	.byte	4                               # DW_TAG_enumeration_type
	.byte	1                               # DW_CHILDREN_yes
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	109                             # DW_AT_enum_class
	.byte	25                              # DW_FORM_flag_present
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	10                              # Abbreviation Code
	.byte	40                              # DW_TAG_enumerator
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	28                              # DW_AT_const_value
	.byte	15                              # DW_FORM_udata
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	11                              # Abbreviation Code
	.byte	19                              # DW_TAG_structure_type
	.byte	1                               # DW_CHILDREN_yes
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	12                              # Abbreviation Code
	.byte	13                              # DW_TAG_member
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	56                              # DW_AT_data_member_location
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	13                              # Abbreviation Code
	.byte	51                              # DW_TAG_variant_part
	.byte	1                               # DW_CHILDREN_yes
	.byte	21                              # DW_AT_discr
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	14                              # Abbreviation Code
	.byte	13                              # DW_TAG_member
	.byte	0                               # DW_CHILDREN_no
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	56                              # DW_AT_data_member_location
	.byte	11                              # DW_FORM_data1
	.byte	52                              # DW_AT_artificial
	.byte	25                              # DW_FORM_flag_present
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	15                              # Abbreviation Code
	.byte	25                              # DW_TAG_variant
	.byte	1                               # DW_CHILDREN_yes
	.byte	22                              # DW_AT_discr_value
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	16                              # Abbreviation Code
	.byte	19                              # DW_TAG_structure_type
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	17                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	64                              # DW_AT_frame_base
	.byte	24                              # DW_FORM_exprloc
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	18                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	19                              # Abbreviation Code
	.byte	47                              # DW_TAG_template_type_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	20                              # Abbreviation Code
	.byte	11                              # DW_TAG_lexical_block
	.byte	1                               # DW_CHILDREN_yes
	.byte	85                              # DW_AT_ranges
	.byte	23                              # DW_FORM_sec_offset
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	21                              # Abbreviation Code
	.byte	52                              # DW_TAG_variable
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	22                              # Abbreviation Code
	.byte	11                              # DW_TAG_lexical_block
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	23                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	64                              # DW_AT_frame_base
	.byte	24                              # DW_FORM_exprloc
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	24                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	25                              # Abbreviation Code
	.byte	29                              # DW_TAG_inlined_subroutine
	.byte	1                               # DW_CHILDREN_yes
	.byte	49                              # DW_AT_abstract_origin
	.byte	19                              # DW_FORM_ref4
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	88                              # DW_AT_call_file
	.byte	11                              # DW_FORM_data1
	.byte	89                              # DW_AT_call_line
	.byte	11                              # DW_FORM_data1
	.byte	87                              # DW_AT_call_column
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	26                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	49                              # DW_AT_abstract_origin
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	27                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	32                              # DW_AT_inline
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	28                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	29                              # Abbreviation Code
	.byte	25                              # DW_TAG_variant
	.byte	1                               # DW_CHILDREN_yes
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	30                              # Abbreviation Code
	.byte	23                              # DW_TAG_union_type
	.byte	1                               # DW_CHILDREN_yes
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	11                              # DW_AT_byte_size
	.byte	11                              # DW_FORM_data1
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	31                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	32                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	64                              # DW_AT_frame_base
	.byte	24                              # DW_FORM_exprloc
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	33                              # Abbreviation Code
	.byte	29                              # DW_TAG_inlined_subroutine
	.byte	0                               # DW_CHILDREN_no
	.byte	49                              # DW_AT_abstract_origin
	.byte	19                              # DW_FORM_ref4
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	88                              # DW_AT_call_file
	.byte	11                              # DW_FORM_data1
	.byte	89                              # DW_AT_call_line
	.byte	5                               # DW_FORM_data2
	.byte	87                              # DW_AT_call_column
	.byte	11                              # DW_FORM_data1
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	34                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	64                              # DW_AT_frame_base
	.byte	24                              # DW_FORM_exprloc
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	5                               # DW_FORM_data2
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	35                              # Abbreviation Code
	.byte	52                              # DW_TAG_variable
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	36                              # Abbreviation Code
	.byte	52                              # DW_TAG_variable
	.byte	0                               # DW_CHILDREN_no
	.byte	2                               # DW_AT_location
	.byte	24                              # DW_FORM_exprloc
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	37                              # Abbreviation Code
	.byte	21                              # DW_TAG_subroutine_type
	.byte	1                               # DW_CHILDREN_yes
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	38                              # Abbreviation Code
	.byte	5                               # DW_TAG_formal_parameter
	.byte	0                               # DW_CHILDREN_no
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	39                              # Abbreviation Code
	.byte	13                              # DW_TAG_member
	.byte	0                               # DW_CHILDREN_no
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	73                              # DW_AT_type
	.byte	19                              # DW_FORM_ref4
	.ascii	"\210\001"                      # DW_AT_alignment
	.byte	15                              # DW_FORM_udata
	.byte	56                              # DW_AT_data_member_location
	.byte	11                              # DW_FORM_data1
	.byte	52                              # DW_AT_artificial
	.byte	25                              # DW_FORM_flag_present
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	40                              # Abbreviation Code
	.byte	46                              # DW_TAG_subprogram
	.byte	1                               # DW_CHILDREN_yes
	.byte	17                              # DW_AT_low_pc
	.byte	1                               # DW_FORM_addr
	.byte	18                              # DW_AT_high_pc
	.byte	6                               # DW_FORM_data4
	.byte	64                              # DW_AT_frame_base
	.byte	24                              # DW_FORM_exprloc
	.byte	110                             # DW_AT_linkage_name
	.byte	14                              # DW_FORM_strp
	.byte	3                               # DW_AT_name
	.byte	14                              # DW_FORM_strp
	.byte	58                              # DW_AT_decl_file
	.byte	11                              # DW_FORM_data1
	.byte	59                              # DW_AT_decl_line
	.byte	11                              # DW_FORM_data1
	.byte	106                             # DW_AT_main_subprogram
	.byte	25                              # DW_FORM_flag_present
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	41                              # Abbreviation Code
	.byte	21                              # DW_TAG_subroutine_type
	.byte	0                               # DW_CHILDREN_no
	.byte	0                               # EOM(1)
	.byte	0                               # EOM(2)
	.byte	0                               # EOM(3)
                                        # DW_AT_GNU_pubnames
                                        # DW_AT_enum_class
                                        # DW_AT_enum_class
                                        # DW_AT_artificial
                                        # DW_AT_artificial
                                        # DW_AT_artificial
                                        # DW_AT_artificial
                                        # DW_AT_artificial
                                        # DW_AT_artificial
                                        # DW_AT_main_subprogram
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment