; ModuleID = 'ramp.0.rs'
target datalayout = "e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%str_slice = type { i8*, i64 }
%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>" = type { %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* }
%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>" = type { %"1.std::io::stdio::StdoutLock"*, %"2.core::result::Result<(), std::io::error::Error>" }
%"1.std::io::stdio::StdoutLock" = type { %"1.std::sys_common::remutex::ReentrantMutexGuard<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>" }
%"1.std::sys_common::remutex::ReentrantMutexGuard<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>" = type { %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"*, %"1.std::sys_common::poison::Guard", i8 }
%"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>" = type { %"1.std::sys::mutex::ReentrantMutex"*, %"1.std::sys_common::poison::Flag", %"2.core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>", i8 }
%"1.std::sys::mutex::ReentrantMutex" = type { %"2.core::cell::UnsafeCell<std::sys::sync::os::pthread_mutex_t>" }
%"2.core::cell::UnsafeCell<std::sys::sync::os::pthread_mutex_t>" = type { %"1.std::sys::sync::os::pthread_mutex_t" }
%"1.std::sys::sync::os::pthread_mutex_t" = type { i64, [32 x i8] }
%"1.std::sys_common::poison::Flag" = type { %"2.core::cell::Cell<bool>" }
%"2.core::cell::Cell<bool>" = type { %"2.core::cell::UnsafeCell<bool>" }
%"2.core::cell::UnsafeCell<bool>" = type { i8 }
%"2.core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>" = type { %"2.core::cell::Cell<usize>", %"2.core::cell::UnsafeCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>" }
%"2.core::cell::Cell<usize>" = type { %"2.core::cell::UnsafeCell<usize>" }
%"2.core::cell::UnsafeCell<usize>" = type { i64 }
%"2.core::cell::UnsafeCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>" = type { %"1.std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>" }
%"1.std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>" = type { %"1.std::io::buffered::BufWriter<std::io::stdio::StdoutRaw>" }
%"1.std::io::buffered::BufWriter<std::io::stdio::StdoutRaw>" = type { %"2.core::option::Option<std::io::stdio::StdoutRaw>", %"3.collections::vec::Vec<u8>", i8 }
%"2.core::option::Option<std::io::stdio::StdoutRaw>" = type { i8, [0 x i8], [0 x i8] }
%"3.collections::vec::Vec<u8>" = type { %"2.core::ptr::Unique<u8>", i64, i64 }
%"2.core::ptr::Unique<u8>" = type { %"2.core::nonzero::NonZero<*const u8>", %"2.core::marker::PhantomData<u8>" }
%"2.core::nonzero::NonZero<*const u8>" = type { i8* }
%"2.core::marker::PhantomData<u8>" = type {}
%"1.std::sys_common::poison::Guard" = type { i8 }
%"2.core::result::Result<(), std::io::error::Error>" = type { i64, [0 x i64], [2 x i64] }
%"2.core::fmt::Arguments" = type { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>", { %"2.core::fmt::ArgumentV1"*, i64 } }
%"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" = type { { %"2.core::fmt::rt::v1::Argument"*, i64 } }
%"2.core::fmt::rt::v1::Argument" = type { %"2.core::fmt::rt::v1::Position", %"2.core::fmt::rt::v1::FormatSpec" }
%"2.core::fmt::rt::v1::Position" = type { i64, [0 x i64], [1 x i64] }
%"2.core::fmt::rt::v1::FormatSpec" = type { i32, i8, i32, %"2.core::fmt::rt::v1::Count", %"2.core::fmt::rt::v1::Count" }
%"2.core::fmt::rt::v1::Count" = type { i64, [0 x i64], [1 x i64] }
%"2.core::fmt::ArgumentV1" = type { %"2.core::fmt::Void"*, i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* }
%"2.core::fmt::Void" = type {}
%"2.core::fmt::Formatter" = type { i32, i32, i8, %"2.core::option::Option<usize>", %"2.core::option::Option<usize>", { i8*, void (i8*)** }, %"2.core::slice::Iter<core::fmt::ArgumentV1>", { %"2.core::fmt::ArgumentV1"*, i64 } }
%"2.core::option::Option<usize>" = type { i64, [0 x i64], [1 x i64] }
%"2.core::slice::Iter<core::fmt::ArgumentV1>" = type { %"2.core::fmt::ArgumentV1"*, %"2.core::fmt::ArgumentV1"*, %"2.core::marker::PhantomData<&'static core::fmt::ArgumentV1>" }
%"2.core::marker::PhantomData<&'static core::fmt::ArgumentV1>" = type {}
%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>" = type { %"3.collections::string::String"* }
%"3.collections::string::String" = type { %"3.collections::vec::Vec<u8>" }
%"ll::limb::Limb" = type { i64 }
%"mem::Marker" = type { %"mem::Marker"*, i64 }
%"1.std::rt::libunwind::_Unwind_Exception" = type { i64, void (i32, %"1.std::rt::libunwind::_Unwind_Exception"*)*, [6 x i64] }
%"1.std::rt::libunwind::_Unwind_Context" = type {}
%"mem::TmpAllocator" = type { %"mem::Marker"*, i8 }
%"ll::base::Base" = type { i32, %"ll::limb::Limb" }
%"1.std::io::stdio::Stdout" = type { %"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>" }
%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>" = type { %"2.core::nonzero::NonZero<*mut alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>>" }
%"2.core::nonzero::NonZero<*mut alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>>" = type { %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* }
%"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>" = type { %"2.core::atomic::AtomicUsize", %"2.core::atomic::AtomicUsize", %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>" }
%"2.core::atomic::AtomicUsize" = type { %"2.core::cell::UnsafeCell<usize>" }
%"1.std::io::error::Custom" = type { i8, { i8*, void (i8*)** } }
%"2.core::result::Result<usize, std::io::error::Error>" = type { i64, [0 x i64], [2 x i64] }
%"1.std::io::stdio::StdoutRaw" = type { %"1.std::sys::stdio::Stdout" }
%"1.std::sys::stdio::Stdout" = type { {} }
%"1.std::io::error::Error" = type { %"1.std::io::error::Repr" }
%"1.std::io::error::Repr" = type { i8, [7 x i8], [1 x i64] }
%"1.std::io::stdio::Stderr" = type { %"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>" }
%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>" = type { %"2.core::nonzero::NonZero<*mut alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>>" }
%"2.core::nonzero::NonZero<*mut alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>>" = type { %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* }
%"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>" = type { %"2.core::atomic::AtomicUsize", %"2.core::atomic::AtomicUsize", %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>" }
%"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>" = type { %"1.std::sys::mutex::ReentrantMutex"*, %"1.std::sys_common::poison::Flag", %"2.core::cell::RefCell<std::io::stdio::StderrRaw>", i8 }
%"2.core::cell::RefCell<std::io::stdio::StderrRaw>" = type { %"2.core::cell::Cell<usize>", %"2.core::cell::UnsafeCell<std::io::stdio::StderrRaw>" }
%"2.core::cell::UnsafeCell<std::io::stdio::StderrRaw>" = type { %"1.std::io::stdio::StderrRaw" }
%"1.std::io::stdio::StderrRaw" = type { %"1.std::sys::stdio::Stderr" }
%"1.std::sys::stdio::Stderr" = type { {} }
%"int::Int" = type { %"2.core::ptr::Unique<ll::limb::Limb>", i32, i32, i8 }
%"2.core::ptr::Unique<ll::limb::Limb>" = type { %"2.core::nonzero::NonZero<*const ll::limb::Limb>", %"2.core::marker::PhantomData<ll::limb::Limb>" }
%"2.core::nonzero::NonZero<*const ll::limb::Limb>" = type { %"ll::limb::Limb"* }
%"2.core::marker::PhantomData<ll::limb::Limb>" = type {}
%"2.core::result::Result<int::Int, int::ParseIntError>" = type { i8, [7 x i8], [3 x i64] }
%"2.core::str::Bytes" = type { %"2.core::iter::Map<core::slice::Iter<u8>, core::str::BytesDeref>" }
%"2.core::iter::Map<core::slice::Iter<u8>, core::str::BytesDeref>" = type { %"2.core::slice::Iter<u8>", %"2.core::str::BytesDeref" }
%"2.core::slice::Iter<u8>" = type { i8*, i8*, %"2.core::marker::PhantomData<&'static u8>" }
%"2.core::marker::PhantomData<&'static u8>" = type {}
%"2.core::str::BytesDeref" = type {}
%"int::ParseIntError" = type { i8 }
%"2.core::fmt::builders::DebugStruct" = type { %"2.core::fmt::Formatter"*, %"2.core::result::Result<(), core::fmt::Error>", i8 }
%"2.core::result::Result<(), core::fmt::Error>" = type { i8, [0 x i8], [0 x i8] }
%"2.core::fmt::builders::DebugTuple" = type { %"2.core::fmt::Formatter"*, %"2.core::result::Result<(), core::fmt::Error>", i8 }
%"2.core::option::Option<int::Int>" = type { %"int::Int" }
@str8410 = internal constant [16 x i8] c"src/ll/addsub.rs"
@_ZN2ll6addsub5add_n10_FILE_LINE20ha4186fc575371ad9IcaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 74, [4 x i8] undef }
@_ZN2ll6addsub5add_n10_FILE_LINE20ha4186fc575371ad9fdaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 75, [4 x i8] undef }
@_ZN2ll6addsub5add_n10_FILE_LINE20ha4186fc575371ad9MdaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 76, [4 x i8] undef }
@_ZN2ll6addsub3add10_FILE_LINE20ha4186fc575371ad9niaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 172, [4 x i8] undef }
@_ZN2ll6addsub3add10_FILE_LINE20ha4186fc575371ad9RiaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 172, [4 x i8] undef }
@_ZN2ll6addsub3sub10_FILE_LINE20ha4186fc575371ad9blaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 173, [4 x i8] undef }
@_ZN2ll6addsub3sub10_FILE_LINE20ha4186fc575371ad9FlaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([16 x i8]* @str8410, i32 0, i32 0), i64 16 }, i32 173, [4 x i8] undef }
@str8412 = internal constant [13 x i8] c"src/ll/mul.rs"
@_ZN2ll3mul5mul_110_FILE_LINE20ha4186fc575371ad9ouaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([13 x i8]* @str8412, i32 0, i32 0), i64 13 }, i32 56, [4 x i8] undef }
@_ZN2ll3mul5mul_110_FILE_LINE20ha4186fc575371ad9VuaE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([13 x i8]* @str8412, i32 0, i32 0), i64 13 }, i32 57, [4 x i8] undef }
@_ZN2ll4base5BASES20h5887718c5197da9b77bE = constant { { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } } { { i32, { i64 } } zeroinitializer, { i32, { i64 } } zeroinitializer, { i32, { i64 } } { i32 64, { i64 } { i64 1 } }, { i32, { i64 } } { i32 40, { i64 } { i64 -6289078614652622815 } }, { i32, { i64 } } { i32 32, { i64 } { i64 2 } }, { i32, { i64 } } { i32 27, { i64 } { i64 7450580596923828125 } }, { i32, { i64 } } { i32 24, { i64 } { i64 4738381338321616896 } }, { i32, { i64 } } { i32 22, { i64 } { i64 3909821048582988049 } }, { i32, { i64 } } { i32 21, { i64 } { i64 3 } }, { i32, { i64 } } { i32 20, { i64 } { i64 -6289078614652622815 } }, { i32, { i64 } } { i32 19, { i64 } { i64 -8446744073709551616 } }, { i32, { i64 } } { i32 18, { i64 } { i64 5559917313492231481 } }, { i32, { i64 } } { i32 17, { i64 } { i64 2218611106740436992 } }, { i32, { i64 } } { i32 17, { i64 } { i64 8650415919381337933 } }, { i32, { i64 } } { i32 16, { i64 } { i64 2177953337809371136 } }, { i32, { i64 } } { i32 16, { i64 } { i64 6568408355712890625 } }, { i32, { i64 } } { i32 16, { i64 } { i64 4 } }, { i32, { i64 } } { i32 15, { i64 } { i64 2862423051509815793 } }, { i32, { i64 } } { i32 15, { i64 } { i64 6746640616477458432 } }, { i32, { i64 } } { i32 15, { i64 } { i64 -3265617043834753317 } }, { i32, { i64 } } { i32 14, { i64 } { i64 1638400000000000000 } }, { i32, { i64 } } { i32 14, { i64 } { i64 3243919932521508681 } }, { i32, { i64 } } { i32 14, { i64 } { i64 6221821273427820544 } }, { i32, { i64 } } { i32 14, { i64 } { i64 -6853907749170801807 } }, { i32, { i64 } } { i32 13, { i64 } { i64 876488338465357824 } }, { i32, { i64 } } { i32 13, { i64 } { i64 1490116119384765625 } }, { i32, { i64 } } { i32 13, { i64 } { i64 2481152873203736576 } }, { i32, { i64 } } { i32 13, { i64 } { i64 4052555153018976267 } }, { i32, { i64 } } { i32 13, { i64 } { i64 6502111422497947648 } }, { i32, { i64 } } { i32 13, { i64 } { i64 -8186115360750949427 } }, { i32, { i64 } } { i32 13, { i64 } { i64 -2503514073709551616 } }, { i32, { i64 } } { i32 12, { i64 } { i64 787662783788549761 } }, { i32, { i64 } } { i32 12, { i64 } { i64 5 } }, { i32, { i64 } } { i32 12, { i64 } { i64 1667889514952984961 } }, { i32, { i64 } } { i32 12, { i64 } { i64 2386420683693101056 } }, { i32, { i64 } } { i32 12, { i64 } { i64 3379220508056640625 } }, { i32, { i64 } } { i32 12, { i64 } { i64 4738381338321616896 } }, { i32, { i64 } } { i32 12, { i64 } { i64 6582952005840035281 } }, { i32, { i64 } } { i32 12, { i64 } { i64 9065737908494995456 } }, { i32, { i64 } } { i32 12, { i64 } { i64 -6065186418133126495 } }, { i32, { i64 } } { i32 12, { i64 } { i64 -1669528073709551616 } }, { i32, { i64 } } { i32 11, { i64 } { i64 550329031716248441 } }, { i32, { i64 } } { i32 11, { i64 } { i64 717368321110468608 } }, { i32, { i64 } } { i32 11, { i64 } { i64 929293739471222707 } }, { i32, { i64 } } { i32 11, { i64 } { i64 1196683881290399744 } }, { i32, { i64 } } { i32 11, { i64 } { i64 1532278301220703125 } }, { i32, { i64 } } { i32 11, { i64 } { i64 1951354384207722496 } }, { i32, { i64 } } { i32 11, { i64 } { i64 2472159215084012303 } }, { i32, { i64 } } { i32 11, { i64 } { i64 3116402981210161152 } }, { i32, { i64 } } { i32 11, { i64 } { i64 3909821048582988049 } }, { i32, { i64 } } { i32 11, { i64 } { i64 4882812500000000000 } }, { i32, { i64 } } { i32 11, { i64 } { i64 6071163615208263051 } }, { i32, { i64 } } { i32 11, { i64 } { i64 7516865509350965248 } }, { i32, { i64 } } { i32 11, { i64 } { i64 -9177708144337360019 } }, { i32, { i64 } } { i32 11, { i64 } { i64 -7061788033403840512 } }, { i32, { i64 } } { i32 11, { i64 } { i64 -4515510157156817241 } }, { i32, { i64 } } { i32 11, { i64 } { i64 -1461636684327157760 } }, { i32, { i64 } } { i32 10, { i64 } { i64 362033331456891249 } }, { i32, { i64 } } { i32 10, { i64 } { i64 430804206899405824 } }, { i32, { i64 } } { i32 10, { i64 } { i64 511116753300641401 } }, { i32, { i64 } } { i32 10, { i64 } { i64 604661760000000000 } }, { i32, { i64 } } { i32 10, { i64 } { i64 713342911662882601 } }, { i32, { i64 } } { i32 10, { i64 } { i64 839299365868340224 } }, { i32, { i64 } } { i32 10, { i64 } { i64 984930291881790849 } }, { i32, { i64 } } { i32 10, { i64 } { i64 6 } }, { i32, { i64 } } { i32 10, { i64 } { i64 1346274334462890625 } }, { i32, { i64 } } { i32 10, { i64 } { i64 1568336880910795776 } }, { i32, { i64 } } { i32 10, { i64 } { i64 1822837804551761449 } }, { i32, { i64 } } { i32 10, { i64 } { i64 2113922820157210624 } }, { i32, { i64 } } { i32 10, { i64 } { i64 2446194060654759801 } }, { i32, { i64 } } { i32 10, { i64 } { i64 2824752490000000000 } }, { i32, { i64 } } { i32 10, { i64 } { i64 3255243551009881201 } }, { i32, { i64 } } { i32 10, { i64 } { i64 3743906242624487424 } }, { i32, { i64 } } { i32 10, { i64 } { i64 4297625829703557649 } }, { i32, { i64 } } { i32 10, { i64 } { i64 4923990397355877376 } }, { i32, { i64 } } { i32 10, { i64 } { i64 5631351470947265625 } }, { i32, { i64 } } { i32 10, { i64 } { i64 6428888932339941376 } }, { i32, { i64 } } { i32 10, { i64 } { i64 7326680472586200649 } }, { i32, { i64 } } { i32 10, { i64 } { i64 8335775831236199424 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -8978467991082704415 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -7709325833709551616 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -6289078614652622815 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -4701940940113492992 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -2930702886503698167 } }, { i32, { i64 } } { i32 10, { i64 } { i64 -956621197111459840 } }, { i32, { i64 } } { i32 9, { i64 } { i64 231616946283203125 } }, { i32, { i64 } } { i32 9, { i64 } { i64 257327417311663616 } }, { i32, { i64 } } { i32 9, { i64 } { i64 285544154243029527 } }, { i32, { i64 } } { i32 9, { i64 } { i64 316478381828866048 } }, { i32, { i64 } } { i32 9, { i64 } { i64 350356403707485209 } }, { i32, { i64 } } { i32 9, { i64 } { i64 387420489000000000 } }, { i32, { i64 } } { i32 9, { i64 } { i64 427929800129788411 } }, { i32, { i64 } } { i32 9, { i64 } { i64 472161363286556672 } }, { i32, { i64 } } { i32 9, { i64 } { i64 520411082988487293 } }, { i32, { i64 } } { i32 9, { i64 } { i64 572994802228616704 } }, { i32, { i64 } } { i32 9, { i64 } { i64 630249409724609375 } }, { i32, { i64 } } { i32 9, { i64 } { i64 692533995824480256 } }, { i32, { i64 } } { i32 9, { i64 } { i64 760231058654565217 } }, { i32, { i64 } } { i32 9, { i64 } { i64 833747762130149888 } }, { i32, { i64 } } { i32 9, { i64 } { i64 913517247483640899 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1000000000000000000 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1093685272684360901 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1195092568622310912 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1304773183829244583 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1423311812421484544 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1551328215978515625 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1689478959002692096 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1838459212420154507 } }, { i32, { i64 } } { i32 9, { i64 } { i64 1999004627104432128 } }, { i32, { i64 } } { i32 9, { i64 } { i64 2171893279442309389 } }, { i32, { i64 } } { i32 9, { i64 } { i64 2357947691000000000 } }, { i32, { i64 } } { i32 9, { i64 } { i64 2558036924386500591 } }, { i32, { i64 } } { i32 9, { i64 } { i64 2773078757450186752 } }, { i32, { i64 } } { i32 9, { i64 } { i64 3004041937984268273 } }, { i32, { i64 } } { i32 9, { i64 } { i64 3251948521156637184 } }, { i32, { i64 } } { i32 9, { i64 } { i64 3517876291919921875 } }, { i32, { i64 } } { i32 9, { i64 } { i64 3802961274698203136 } }, { i32, { i64 } } { i32 9, { i64 } { i64 4108400332687853397 } }, { i32, { i64 } } { i32 9, { i64 } { i64 4435453859151328768 } }, { i32, { i64 } } { i32 9, { i64 } { i64 4785448563124474679 } }, { i32, { i64 } } { i32 9, { i64 } { i64 5159780352000000000 } }, { i32, { i64 } } { i32 9, { i64 } { i64 5559917313492231481 } }, { i32, { i64 } } { i32 9, { i64 } { i64 5987402799531080192 } }, { i32, { i64 } } { i32 9, { i64 } { i64 6443858614676334363 } }, { i32, { i64 } } { i32 9, { i64 } { i64 6930988311686938624 } }, { i32, { i64 } } { i32 9, { i64 } { i64 7450580596923828125 } }, { i32, { i64 } } { i32 9, { i64 } { i64 8004512848309157376 } }, { i32, { i64 } } { i32 9, { i64 } { i64 8594754748609397887 } }, { i32, { i64 } } { i32 9, { i64 } { i64 7 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -8554213692956670847 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -7842244700709551616 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -7085087419269734045 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -6280251906643984384 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -5425131533801012763 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -4516998462806538752 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -3552998985844317241 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -2530148721937612800 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -1445327668137347639 } }, { i32, { i64 } } { i32 9, { i64 } { i64 -295275101894522368 } }, { i32, { i64 } } { i32 8, { i64 } { i64 139353667211683681 } }, { i32, { i64 } } { i32 8, { i64 } { i64 147578905600000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 156225851787813921 } }, { i32, { i64 } } { i32 8, { i64 } { i64 165312903998914816 } }, { i32, { i64 } } { i32 8, { i64 } { i64 174859124550883201 } }, { i32, { i64 } } { i32 8, { i64 } { i64 184884258895036416 } }, { i32, { i64 } } { i32 8, { i64 } { i64 195408755062890625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 206453783524884736 } }, { i32, { i64 } } { i32 8, { i64 } { i64 218041257467152161 } }, { i32, { i64 } } { i32 8, { i64 } { i64 230193853492166656 } }, { i32, { i64 } } { i32 8, { i64 } { i64 242935032749128801 } }, { i32, { i64 } } { i32 8, { i64 } { i64 256289062500000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 270281038127131201 } }, { i32, { i64 } } { i32 8, { i64 } { i64 284936905588473856 } }, { i32, { i64 } } { i32 8, { i64 } { i64 300283484326400961 } }, { i32, { i64 } } { i32 8, { i64 } { i64 316348490636206336 } }, { i32, { i64 } } { i32 8, { i64 } { i64 333160561500390625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 350749278894882816 } }, { i32, { i64 } } { i32 8, { i64 } { i64 369145194573386401 } }, { i32, { i64 } } { i32 8, { i64 } { i64 388379855336079616 } }, { i32, { i64 } } { i32 8, { i64 } { i64 408485828788939521 } }, { i32, { i64 } } { i32 8, { i64 } { i64 429496729600000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 451447246258894081 } }, { i32, { i64 } } { i32 8, { i64 } { i64 474373168346071296 } }, { i32, { i64 } } { i32 8, { i64 } { i64 498311414318121121 } }, { i32, { i64 } } { i32 8, { i64 } { i64 523300059815673856 } }, { i32, { i64 } } { i32 8, { i64 } { i64 549378366500390625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 576586811427594496 } }, { i32, { i64 } } { i32 8, { i64 } { i64 604967116961135041 } }, { i32, { i64 } } { i32 8, { i64 } { i64 634562281237118976 } }, { i32, { i64 } } { i32 8, { i64 } { i64 665416609183179841 } }, { i32, { i64 } } { i32 8, { i64 } { i64 697575744100000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 731086699811838561 } }, { i32, { i64 } } { i32 8, { i64 } { i64 765997893392859136 } }, { i32, { i64 } } { i32 8, { i64 } { i64 802359178476091681 } }, { i32, { i64 } } { i32 8, { i64 } { i64 840221879151902976 } }, { i32, { i64 } } { i32 8, { i64 } { i64 879638824462890625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 920664383502155776 } }, { i32, { i64 } } { i32 8, { i64 } { i64 963354501121950081 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1007766734259732736 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1053960288888713761 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1101996057600000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1151936657823500641 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1203846470694789376 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1257791680575160641 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1313840315232157696 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1372062286687890625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1432529432742502656 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1495315559180183521 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1560496482665168896 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1628150074335205281 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1698356304100000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1771197285652216321 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1846757322198614016 } }, { i32, { i64 } } { i32 8, { i64 } { i64 1925122952918976001 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2006383000160502016 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2090628617375390625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2177953337809371136 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2268453123948987361 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2362226417735475456 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2459374191553118401 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2560000000000000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2664210032449121601 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2772113166407885056 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2883821021683985761 } }, { i32, { i64 } } { i32 8, { i64 } { i64 2999448015365799936 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3119111417625390625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3242931408352297216 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3371031134626313601 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3503536769037500416 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3640577568861717121 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3782285936100000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 3928797478390152481 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4080251070798954496 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4236788918503437921 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4398556620369715456 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4565703233437890625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4738381338321616896 } }, { i32, { i64 } } { i32 8, { i64 } { i64 4916747105530914241 } }, { i32, { i64 } } { i32 8, { i64 } { i64 5100960362726891776 } }, { i32, { i64 } } { i32 8, { i64 } { i64 5291184662917065441 } }, { i32, { i64 } } { i32 8, { i64 } { i64 5487587353600000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 5690339646868044961 } }, { i32, { i64 } } { i32 8, { i64 } { i64 5899616690476974336 } }, { i32, { i64 } } { i32 8, { i64 } { i64 6115597639891380481 } }, { i32, { i64 } } { i32 8, { i64 } { i64 6338465731314712576 } }, { i32, { i64 } } { i32 8, { i64 } { i64 6568408355712890625 } }, { i32, { i64 } } { i32 8, { i64 } { i64 6805617133840466176 } }, { i32, { i64 } } { i32 8, { i64 } { i64 7050287992278341281 } }, { i32, { i64 } } { i32 8, { i64 } { i64 7302621240492097536 } }, { i32, { i64 } } { i32 8, { i64 } { i64 7562821648920027361 } }, { i32, { i64 } } { i32 8, { i64 } { i64 7831098528100000000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 8107665808844335041 } }, { i32, { i64 } } { i32 8, { i64 } { i64 8392742123471896576 } }, { i32, { i64 } } { i32 8, { i64 } { i64 8686550888106661441 } }, { i32, { i64 } } { i32 8, { i64 } { i64 8989320386052055296 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -9145460221459160991 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -8824064514872770560 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -8492993171912604895 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -8151997584971185920 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -7800823845925284735 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -7439212656109551616 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -7066899235148192895 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -6683613228635078400 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -6289078614652622815 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -5883013609119744000 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -5465130569959160991 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -5035135900074254080 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -4592729949125669055 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -4137606914097807360 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -3669454738645303615 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -3187955011209551616 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -2692782861895299615 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -2183606858097295360 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -1660088898866921055 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -1121884108008718080 } }, { i32, { i64 } } { i32 8, { i64 } { i64 -568640725896660991 } }, { i32, { i64 } } { i32 8, { i64 } { i64 8 } } }
@str8515 = internal constant [14 x i8] c"src/ll/base.rs"
@_ZN2ll4base15num_base_digits10_FILE_LINE20ha4186fc575371ad9LtcE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 40, [4 x i8] undef }
@str8618 = internal constant [27 x i8] c"attempted to divide by zero"
@panic_loc8619 = internal unnamed_addr constant { %str_slice, %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([27 x i8]* @str8618, i32 0, i32 0), i64 27 }, %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 50 }
@_ZN2ll4base18base_digits_to_len10_FILE_LINE20ha4186fc575371ad9WvcE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 64, [4 x i8] undef }
@panic_bounds_check_loc8643 = internal unnamed_addr constant { %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 68 }
@panic_loc8644 = internal unnamed_addr constant { %str_slice, %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([27 x i8]* @str8618, i32 0, i32 0), i64 27 }, %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 70 }
@_ZN2ll4base7to_base10_FILE_LINE20ha4186fc575371ad99wcE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 81, [4 x i8] undef }
@_ZN2ll4base7to_base10_FILE_LINE20ha4186fc575371ad9GxcE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 82, [4 x i8] undef }
@_ZN2ll4base7to_base10_FILE_LINE20ha4186fc575371ad9aycE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 83, [4 x i8] undef }
@_ZN2ll4base12to_base_impl10_FILE_LINE20ha4186fc575371ad91CcE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8515, i32 0, i32 0), i64 14 }, i32 138, [4 x i8] undef }
@str8659 = internal constant [14 x i8] c"src/ll/limb.rs"
@_ZN2ll4limb4Limb6invert10_FILE_LINE20ha4186fc575371ad941cE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 144, [4 x i8] undef }
@"_ZN2ll4limb20Limb.Div$LT$Limb$GT$3div10_FILE_LINE20ha4186fc575371ad9p7cE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 271, [4 x i8] undef }
@"_ZN2ll4limb23Limb.Div$LT$BaseInt$GT$3div10_FILE_LINE20ha4186fc575371ad9r8cE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 282, [4 x i8] undef }
@"_ZN2ll4limb20Limb.Rem$LT$Limb$GT$3rem10_FILE_LINE20ha4186fc575371ad9s9cE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 293, [4 x i8] undef }
@"_ZN2ll4limb23Limb.Rem$LT$BaseInt$GT$3rem10_FILE_LINE20ha4186fc575371ad9uadE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 304, [4 x i8] undef }
@_ZN2ll4limb3div10_FILE_LINE20ha4186fc575371ad98mdE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 682, [4 x i8] undef }
@_ZN2ll4limb3div10_FILE_LINE20ha4186fc575371ad9CndE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([14 x i8]* @str8659, i32 0, i32 0), i64 14 }, i32 683, [4 x i8] undef }
@str8764 = internal constant [13 x i8] c"src/ll/mod.rs"
@_ZN2ll9copy_incr10_FILE_LINE20ha4186fc575371ad9ysdE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([13 x i8]* @str8764, i32 0, i32 0), i64 13 }, i32 64, [4 x i8] undef }
@_ZN2ll9copy_decr10_FILE_LINE20ha4186fc575371ad9KtdE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([13 x i8]* @str8764, i32 0, i32 0), i64 13 }, i32 78, [4 x i8] undef }
@_ZN2ll9normalize10_FILE_LINE20ha4186fc575371ad9nvdE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([13 x i8]* @str8764, i32 0, i32 0), i64 13 }, i32 102, [4 x i8] undef }
@const9023 = internal unnamed_addr constant { i64, {}, [16 x i8] } { i64 0, {} zeroinitializer, [16 x i8] undef }
@"_ZN6option15Option$LT$T$GT$6unwrap14_MSG_FILE_LINE20h6d1c158578d50c6aMVEE" = external global { %str_slice, %str_slice, i32 }
@"_ZN5slice54_$u5b$T$u5d$.ops..Index$LT$ops..Range$LT$usize$GT$$GT$5index14_MSG_FILE_LINE20h6d1c158578d50c6aYHGE" = external global { %str_slice, %str_slice, i32 }
@_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE = external global { %str_slice, %str_slice, i32 }
@_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE = external global { %str_slice*, i64 }
@_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE = external global { %str_slice, i32 }
@str9141 = internal constant [33 x i8] c"failed to write the buffered data"
@const9142 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([33 x i8]* @str9141, i32 0, i32 0), i64 33 }
@str9209 = internal constant [28 x i8] c"failed to write whole buffer"
@const9210 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([28 x i8]* @str9209, i32 0, i32 0), i64 28 }
@const9330 = internal unnamed_addr constant { i64, [8 x i8] } { i64 0, [8 x i8] undef }
@vtable9341 = internal unnamed_addr constant { void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %"2.core::fmt::Arguments"*)* } { void (i8*)* @_ZN2i89drop.933817h33975eb8c0aff282E, i64 8, i64 8, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %str_slice*)* @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str20h5673162548361446408E", i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, i32)* @_ZN3fmt5Write10write_char20h5036093722373872960E, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %"2.core::fmt::Arguments"*)* @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_fmt20h3641120424659247560E" }
@vtable9342 = internal unnamed_addr constant { void (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*)*, i64, i64, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %str_slice*)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, i32)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %"2.core::fmt::Arguments"*)* } { void (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*)* @"_ZN68std..io..Write..write_fmt..Adaptor$LT$std..io..stdio..StdoutLock$GT$9drop.926017h87e28e60a8bd9b1eE", i64 32, i64 8, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %str_slice*)* @"_ZN2io5Write9write_fmt41Adaptor$LT$$u27$a$C$$u20$T$GT$.fmt..Write9write_str20h3780506604220011635E", i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, i32)* @_ZN3fmt5Write10write_char21h10170236358955437752E, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %"2.core::fmt::Arguments"*)* @_ZN3fmt5Write9write_fmt20h5062359944577624900E }
@str9343 = internal constant [3 x i8] c": ("
@str9344 = internal constant [1 x i8] c")"
@ref9345 = internal unnamed_addr constant [2 x %str_slice] [%str_slice { i8* getelementptr inbounds ([3 x i8]* @str9343, i32 0, i32 0), i64 3 }, %str_slice { i8* getelementptr inbounds ([1 x i8]* @str9344, i32 0, i32 0), i64 1 }]
@_ZN2ll4dump15__STATIC_FMTSTR20h988053cd86d698a8mzdE = internal unnamed_addr constant { %str_slice*, i64 } { %str_slice* getelementptr inbounds ([2 x %str_slice]* @ref9345, i32 0, i32 0), i64 2 }
@binary9348 = internal unnamed_addr constant [2 x i8] c"[\0A"
@const9349 = internal unnamed_addr constant { i8*, i64 } { i8* getelementptr inbounds ([2 x i8]* @binary9348, i32 0, i32 0), i64 2 }
@str9356 = internal constant [2 x i8] c"0x"
@ref9357 = internal unnamed_addr constant [1 x %str_slice] [%str_slice { i8* getelementptr inbounds ([2 x i8]* @str9356, i32 0, i32 0), i64 2 }]
@_ZN2ll4dump15__STATIC_FMTSTR20h988053cd86d698a86zdE = internal unnamed_addr constant { %str_slice*, i64 } { %str_slice* getelementptr inbounds ([1 x %str_slice]* @ref9357, i32 0, i32 0), i64 1 }
@ref9360 = internal unnamed_addr constant { { { i64, [8 x i8] }, { i32, i8, i32, { i64, [8 x i8] }, { i64, i64, [0 x i8] } } } } { { { i64, [8 x i8] }, { i32, i8, i32, { i64, [8 x i8] }, { i64, i64, [0 x i8] } } } { { i64, [8 x i8] } { i64 0, [8 x i8] undef }, { i32, i8, i32, { i64, [8 x i8] }, { i64, i64, [0 x i8] } } { i32 48, i8 1, i32 0, { i64, [8 x i8] } { i64 3, [8 x i8] undef }, { i64, i64, [0 x i8] } { i64 0, i64 2, [0 x i8] undef } } } }
@_ZN2ll4dump16__STATIC_FMTARGS20h1e581147c76c83c4zAdE = internal unnamed_addr constant { %"2.core::fmt::rt::v1::Argument"*, i64 } { %"2.core::fmt::rt::v1::Argument"* bitcast ({ { { i64, [8 x i8] }, { i32, i8, i32, { i64, [8 x i8] }, { i64, i64, [0 x i8] } } } }* @ref9360 to %"2.core::fmt::rt::v1::Argument"*), i64 1 }
@binary9361 = internal unnamed_addr constant [2 x i8] c", "
@const9362 = internal unnamed_addr constant { i8*, i64 } { i8* getelementptr inbounds ([2 x i8]* @binary9361, i32 0, i32 0), i64 2 }
@binary9364 = internal unnamed_addr constant [1 x i8] c"\0A"
@const9365 = internal unnamed_addr constant { i8*, i64 } { i8* getelementptr inbounds ([1 x i8]* @binary9364, i32 0, i32 0), i64 1 }
@binary9366 = internal unnamed_addr constant [2 x i8] c"]\0A"
@const9367 = internal unnamed_addr constant { i8*, i64 } { i8* getelementptr inbounds ([2 x i8]* @binary9366, i32 0, i32 0), i64 2 }
@str9380 = internal constant [32 x i8] c"Failed to allocate memory (size="
@str9381 = internal constant [2 x i8] c")\0A"
@ref9382 = internal unnamed_addr constant [2 x %str_slice] [%str_slice { i8* getelementptr inbounds ([32 x i8]* @str9380, i32 0, i32 0), i64 32 }, %str_slice { i8* getelementptr inbounds ([2 x i8]* @str9381, i32 0, i32 0), i64 2 }]
@_ZN3mem14allocate_bytes15__STATIC_FMTSTR20h988053cd86d698a8eCdE = internal unnamed_addr constant { %str_slice*, i64 } { %str_slice* getelementptr inbounds ([2 x %str_slice]* @ref9382, i32 0, i32 0), i64 2 }
@str9404 = internal constant [38 x i8] c"Failed to reallocate memory (old size="
@str9405 = internal constant [11 x i8] c", new size="
@ref9406 = internal unnamed_addr constant [3 x %str_slice] [%str_slice { i8* getelementptr inbounds ([38 x i8]* @str9404, i32 0, i32 0), i64 38 }, %str_slice { i8* getelementptr inbounds ([11 x i8]* @str9405, i32 0, i32 0), i64 11 }, %str_slice { i8* getelementptr inbounds ([2 x i8]* @str9381, i32 0, i32 0), i64 2 }]
@_ZN3mem10reallocate15__STATIC_FMTSTR20h988053cd86d698a8LDdE = internal unnamed_addr constant { %str_slice*, i64 } { %str_slice* getelementptr inbounds ([3 x %str_slice]* @ref9406, i32 0, i32 0), i64 3 }
@"_ZN6option15Option$LT$T$GT$6expect15__STATIC_FMTSTR20haa0bd212d55ff2847UEE" = external global { %str_slice*, i64 }
@"_ZN6option15Option$LT$T$GT$6expect10_FILE_LINE20h2e628244f9f1bd3aRUEE" = external global { %str_slice, i32 }
@str9493 = internal constant [30 x i8] c"Vec::reserve: `isize` overflow"
@const9494 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([30 x i8]* @str9493, i32 0, i32 0), i64 30 }
@_ZN3vec15MAX_MEMORY_SIZE20h5df2b0e642bfb149CXhE = external global i64
@"_ZN3vec12Vec$LT$T$GT$7reserve14_MSG_FILE_LINE20h06b9399504edeace90hE" = external global { %str_slice, %str_slice, i32 }
@str9504 = internal constant [17 x i8] c"capacity overflow"
@const9505 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([17 x i8]* @str9504, i32 0, i32 0), i64 17 }
@vtable9577 = internal unnamed_addr constant { void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %"2.core::fmt::Arguments"*)* } { void (i8*)* @_ZN2i89drop.933817h33975eb8c0aff282E, i64 8, i64 8, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %str_slice*)* @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str19h802018848175765322E", i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, i32)* @_ZN3fmt5Write10write_char21h11304174699954065719E, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %"2.core::fmt::Arguments"*)* @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_fmt21h11285822656917982063E" }
@_ZN6string10T.ToString9to_string15__STATIC_FMTSTR20h4ea7fe92f06d5315vRhE = external global { %str_slice*, i64 }
@str9593 = internal constant [1 x i8] c"0"
@const9594 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([1 x i8]* @str9593, i32 0, i32 0), i64 1 }
@str9601 = internal constant [14 x i8] c"Invalid base: "
@ref9602 = internal unnamed_addr constant [1 x %str_slice] [%str_slice { i8* getelementptr inbounds ([14 x i8]* @str9601, i32 0, i32 0), i64 14 }]
@str9605 = internal constant [10 x i8] c"src/int.rs"
@_ZN3int3Int12to_str_radix10_FILE_LINE20ha4186fc575371ad9nOdE = internal constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 240, [4 x i8] undef }
@_ZN3int3Int11write_radix10_FILE_LINE20ha4186fc575371ad9QPdE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 256, [4 x i8] undef }
@binary9629 = internal unnamed_addr constant [1 x i8] c"-"
@const9630 = internal unnamed_addr constant { i8*, i64 } { i8* getelementptr inbounds ([1 x i8]* @binary9629, i32 0, i32 0), i64 1 }
@str9645 = internal constant [51 x i8] c"/home/james/projects/rust/src/libcollections/vec.rs"
@panic_bounds_check_loc9646 = internal unnamed_addr constant { %str_slice, i32 } { %str_slice { i8* getelementptr inbounds ([51 x i8]* @str9645, i32 0, i32 0), i64 51 }, i32 1369 }
@_ZN3int3Int14from_str_radix15__STATIC_FMTSTR20h988053cd86d698a82RdE = internal unnamed_addr constant { %str_slice*, i64 } { %str_slice* getelementptr inbounds ([1 x %str_slice]* @ref9602, i32 0, i32 0), i64 1 }
@_ZN3int3Int14from_str_radix10_FILE_LINE20ha4186fc575371ad9sSdE = internal constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 283, [4 x i8] undef }
@const9656 = internal unnamed_addr constant { i8, { i8 }, [30 x i8] } { i8 1, { i8 } zeroinitializer, [30 x i8] undef }
@const9737 = internal unnamed_addr constant { i8, { i8 }, [30 x i8] } { i8 1, { i8 } { i8 1 }, [30 x i8] undef }
@"_ZN3vec12Vec$LT$T$GT$4push6resize14_MSG_FILE_LINE20h06b9399504edeace0aiE" = external global { %str_slice, %str_slice, i32 }
@"_ZN3int24Int.PartialEq$LT$Int$GT$2eq10_FILE_LINE20ha4186fc575371ad979dE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 528, [4 x i8] undef }
@"_ZN3int24Int.PartialEq$LT$Int$GT$2eq10_FILE_LINE20ha4186fc575371ad9AaeE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 529, [4 x i8] undef }
@_ZN3int14Int.hash..Hash4hash10_FILE_LINE20ha4186fc575371ad9HfeE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 619, [4 x i8] undef }
@_ZN3int7Int.Neg3neg10_FILE_LINE20ha4186fc575371ad9uXeE = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1313, [4 x i8] undef }
@"_ZN3int20Int.Shl$LT$usize$GT$3shl10_FILE_LINE20ha4186fc575371ad9DYeE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1333, [4 x i8] undef }
@"_ZN3int20Int.Shl$LT$usize$GT$3shl10_FILE_LINE20ha4186fc575371ad9AZeE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1338, [4 x i8] undef }
@"_ZN3int20Int.Shl$LT$usize$GT$3shl10_FILE_LINE20ha4186fc575371ad9c1eE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1355, [4 x i8] undef }
@"_ZN3int20Int.Shr$LT$usize$GT$3shr10_FILE_LINE20ha4186fc575371ad972eE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1387, [4 x i8] undef }
@"_ZN3int20Int.Shr$LT$usize$GT$3shr10_FILE_LINE20ha4186fc575371ad9l4eE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1396, [4 x i8] undef }
@"_ZN3int20Int.Shr$LT$usize$GT$3shr10_FILE_LINE20ha4186fc575371ad9R5eE" = constant { %str_slice, i32, [4 x i8] } { %str_slice { i8* getelementptr inbounds ([10 x i8]* @str9605, i32 0, i32 0), i64 10 }, i32 1413, [4 x i8] undef }
@str9795 = internal constant [2 x i8] c"0b"
@const9796 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([2 x i8]* @str9795, i32 0, i32 0), i64 2 }
@str9798 = internal constant [2 x i8] c"0o"
@const9799 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([2 x i8]* @str9798, i32 0, i32 0), i64 2 }
@str9800 = internal constant [0 x i8] zeroinitializer
@const9801 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([0 x i8]* @str9800, i32 0, i32 0), i64 0 }
@const9803 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([2 x i8]* @str9356, i32 0, i32 0), i64 2 }
@str9828 = internal constant [13 x i8] c"ParseIntError"
@const9829 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([13 x i8]* @str9828, i32 0, i32 0), i64 13 }
@str9830 = internal constant [4 x i8] c"kind"
@const9831 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([4 x i8]* @str9830, i32 0, i32 0), i64 4 }
@vtable9833 = internal unnamed_addr constant { void (i8*)*, i64, i64, i8 (i8**, %"2.core::fmt::Formatter"*)* } { void (i8*)* @_ZN2i89drop.933817h33975eb8c0aff282E, i64 8, i64 8, i8 (i8**, %"2.core::fmt::Formatter"*)* @"_ZN3fmt23_$RF$$u27$a$u20$T.Debug3fmt20h4536141480235339740E" }
@str9846 = internal constant [5 x i8] c"Empty"
@const9847 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([5 x i8]* @str9846, i32 0, i32 0), i64 5 }
@str9848 = internal constant [12 x i8] c"InvalidDigit"
@const9849 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([12 x i8]* @str9848, i32 0, i32 0), i64 12 }
@str9850 = internal constant [25 x i8] c"cannot parse empty string"
@const9851 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([25 x i8]* @str9850, i32 0, i32 0), i64 25 }
@str9852 = internal constant [29 x i8] c"invalid digit found in string"
@const9853 = internal unnamed_addr constant %str_slice { i8* getelementptr inbounds ([29 x i8]* @str9852, i32 0, i32 0), i64 29 }
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%xl.sroa.0.0..sroa_idx43 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44 = load i64* %xl.sroa.0.0..sroa_idx43, align 8
%yl.sroa.0.0..sroa_idx45 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 0, i32 0
%yl.sroa.0.0.copyload46 = load i64* %yl.sroa.0.0..sroa_idx45, align 8
%4 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44, i64 %yl.sroa.0.0.copyload46) #20
%5 = extractvalue { i64, i1 } %4, 0
%6 = extractvalue { i64, i1 } %4, 1
%.47 = zext i1 %6 to i64
%rl.sroa.0.0..sroa_idx1648 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %5, i64* %rl.sroa.0.0..sroa_idx1648, align 8
%7 = add i32 %3, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %clean_ast_41_, label %next-block.preheader
next-block.preheader: ; preds = %entry-block
%9 = add i32 %3, -1
%10 = add i32 %3, -2
%xtraiter = and i32 %9, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.prol, label %next-block.preheader.split
next-block.prol: ; preds = %next-block.preheader
%11 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 1
%xl.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload.prol = load i64* %xl.sroa.0.0..sroa_idx.prol, align 8
%yl.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%yl.sroa.0.0.copyload.prol = load i64* %yl.sroa.0.0..sroa_idx.prol, align 8
%14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.prol, i64 %yl.sroa.0.0.copyload.prol) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %15, i64 %.47) #20
%18 = extractvalue { i64, i1 } %17, 0
%19 = extractvalue { i64, i1 } %17, 1
%20 = or i1 %16, %19
%..prol = zext i1 %20 to i64
%rl.sroa.0.0..sroa_idx16.prol = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %18, i64* %rl.sroa.0.0..sroa_idx16.prol, align 8
%21 = add i32 %7, -1
%22 = icmp eq i32 %21, 0
br label %next-block.preheader.split
next-block.preheader.split: ; preds = %next-block.prol, %next-block.preheader
%..lcssa55.unr = phi i64 [ 0, %next-block.preheader ], [ %..prol, %next-block.prol ]
%.unr = phi i32 [ %7, %next-block.preheader ], [ %21, %next-block.prol ]
%.52.unr = phi i64 [ %.47, %next-block.preheader ], [ %..prol, %next-block.prol ]
%wp.051.unr = phi %"ll::limb::Limb"* [ %0, %next-block.preheader ], [ %11, %next-block.prol ]
%xp.050.unr = phi %"ll::limb::Limb"* [ %1, %next-block.preheader ], [ %12, %next-block.prol ]
%yp.049.unr = phi %"ll::limb::Limb"* [ %2, %next-block.preheader ], [ %13, %next-block.prol ]
%23 = icmp ult i32 %10, 1
br i1 %23, label %clean_ast_41_.loopexit, label %next-block.preheader.split.split
next-block.preheader.split.split: ; preds = %next-block.preheader.split
br label %next-block
clean_ast_41_.loopexit.unr-lcssa: ; preds = %next-block
%..lcssa55.ph = phi i64 [ %..1, %next-block ]
br label %clean_ast_41_.loopexit
clean_ast_41_.loopexit: ; preds = %next-block.preheader.split, %clean_ast_41_.loopexit.unr-lcssa
%..lcssa55 = phi i64 [ %..lcssa55.unr, %next-block.preheader.split ], [ %..lcssa55.ph, %clean_ast_41_.loopexit.unr-lcssa ]
br label %clean_ast_41_
clean_ast_41_: ; preds = %clean_ast_41_.loopexit, %entry-block
%..lcssa = phi i64 [ %.47, %entry-block ], [ %..lcssa55, %clean_ast_41_.loopexit ]
ret i64 %..lcssa
next-block: ; preds = %next-block, %next-block.preheader.split.split
%24 = phi i32 [ %.unr, %next-block.preheader.split.split ], [ %46, %next-block ]
%.52 = phi i64 [ %.52.unr, %next-block.preheader.split.split ], [ %..1, %next-block ]
%wp.051 = phi %"ll::limb::Limb"* [ %wp.051.unr, %next-block.preheader.split.split ], [ %36, %next-block ]
%xp.050 = phi %"ll::limb::Limb"* [ %xp.050.unr, %next-block.preheader.split.split ], [ %37, %next-block ]
%yp.049 = phi %"ll::limb::Limb"* [ %yp.049.unr, %next-block.preheader.split.split ], [ %38, %next-block ]
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.051, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.050, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.049, i64 1
%xl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%xl.sroa.0.0.copyload = load i64* %xl.sroa.0.0..sroa_idx, align 8
%yl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%yl.sroa.0.0.copyload = load i64* %yl.sroa.0.0..sroa_idx, align 8
%28 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload, i64 %yl.sroa.0.0.copyload) #20
%29 = extractvalue { i64, i1 } %28, 0
%30 = extractvalue { i64, i1 } %28, 1
%31 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %29, i64 %.52) #20
%32 = extractvalue { i64, i1 } %31, 0
%33 = extractvalue { i64, i1 } %31, 1
%34 = or i1 %30, %33
%. = zext i1 %34 to i64
%rl.sroa.0.0..sroa_idx16 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %32, i64* %rl.sroa.0.0..sroa_idx16, align 8
%35 = add i32 %24, -1
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%xl.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%xl.sroa.0.0.copyload.1 = load i64* %xl.sroa.0.0..sroa_idx.1, align 8
%yl.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%yl.sroa.0.0.copyload.1 = load i64* %yl.sroa.0.0..sroa_idx.1, align 8
%39 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.1, i64 %yl.sroa.0.0.copyload.1) #20
%40 = extractvalue { i64, i1 } %39, 0
%41 = extractvalue { i64, i1 } %39, 1
%42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %.) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
%45 = or i1 %41, %44
%..1 = zext i1 %45 to i64
%rl.sroa.0.0..sroa_idx16.1 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %43, i64* %rl.sroa.0.0..sroa_idx16.1, align 8
%46 = add i32 %35, -1
%47 = icmp eq i32 %46, 0
br i1 %47, label %clean_ast_41_.loopexit.unr-lcssa, label %next-block
}
; Function Attrs: nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) unnamed_addr #1
; Function Attrs: nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) unnamed_addr #1
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb4Limb12add_overflow20haa0bafa1cc6b7cbbTZcE({ %"ll::limb::Limb", i8 }* noalias nocapture sret dereferenceable(16), i64, i64) unnamed_addr #2 {
entry-block:
%3 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2)
%4 = extractvalue { i64, i1 } %3, 0
%5 = extractvalue { i64, i1 } %3, 1
%6 = getelementptr inbounds { %"ll::limb::Limb", i8 }* %0, i64 0, i32 0, i32 0
store i64 %4, i64* %6, align 8
%7 = getelementptr inbounds { %"ll::limb::Limb", i8 }* %0, i64 0, i32 1
%8 = zext i1 %5 to i8
store i8 %8, i8* %7, align 8
ret void
}
; Function Attrs: nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) unnamed_addr #1
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #3 {
entry-block:
%xl.sroa.0.0..sroa_idx43.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i = load i64* %xl.sroa.0.0..sroa_idx43.i, align 8
%yl.sroa.0.0..sroa_idx45.i = getelementptr inbounds %"ll::limb::Limb"* %2, i64 0, i32 0
%yl.sroa.0.0.copyload46.i = load i64* %yl.sroa.0.0..sroa_idx45.i, align 8
%4 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i, i64 %yl.sroa.0.0.copyload46.i) #20
%5 = extractvalue { i64, i1 } %4, 0
%6 = extractvalue { i64, i1 } %4, 1
%.47.i = zext i1 %6 to i64
%rl.sroa.0.0..sroa_idx1648.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %5, i64* %rl.sroa.0.0..sroa_idx1648.i, align 8
%7 = add i32 %3, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit, label %next-block.i.preheader
next-block.i.preheader: ; preds = %entry-block
%9 = add i32 %3, -1
%10 = add i32 %3, -2
%xtraiter = and i32 %9, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.i.prol, label %next-block.i.preheader.split
next-block.i.prol: ; preds = %next-block.i.preheader
%11 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 1
%xl.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%yl.sroa.0.0.copyload.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.prol, align 8
%14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.prol, i64 %yl.sroa.0.0.copyload.i.prol) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %15, i64 %.47.i) #20
%18 = extractvalue { i64, i1 } %17, 0
%19 = extractvalue { i64, i1 } %17, 1
%20 = or i1 %16, %19
%..i.prol = zext i1 %20 to i64
%rl.sroa.0.0..sroa_idx16.i.prol = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %18, i64* %rl.sroa.0.0..sroa_idx16.i.prol, align 8
%21 = add i32 %7, -1
%22 = icmp eq i32 %21, 0
br label %next-block.i.preheader.split
next-block.i.preheader.split: ; preds = %next-block.i.prol, %next-block.i.preheader
%..i.lcssa.unr = phi i64 [ 0, %next-block.i.preheader ], [ %..i.prol, %next-block.i.prol ]
%.unr = phi i32 [ %7, %next-block.i.preheader ], [ %21, %next-block.i.prol ]
%.52.i.unr = phi i64 [ %.47.i, %next-block.i.preheader ], [ %..i.prol, %next-block.i.prol ]
%wp.051.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.preheader ], [ %11, %next-block.i.prol ]
%xp.050.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.preheader ], [ %12, %next-block.i.prol ]
%yp.049.i.unr = phi %"ll::limb::Limb"* [ %2, %next-block.i.preheader ], [ %13, %next-block.i.prol ]
%23 = icmp ult i32 %10, 1
br i1 %23, label %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit, label %next-block.i.preheader.split.split
next-block.i.preheader.split.split: ; preds = %next-block.i.preheader.split
br label %next-block.i
next-block.i: ; preds = %next-block.i, %next-block.i.preheader.split.split
%24 = phi i32 [ %.unr, %next-block.i.preheader.split.split ], [ %46, %next-block.i ]
%.52.i = phi i64 [ %.52.i.unr, %next-block.i.preheader.split.split ], [ %..i.1, %next-block.i ]
%wp.051.i = phi %"ll::limb::Limb"* [ %wp.051.i.unr, %next-block.i.preheader.split.split ], [ %36, %next-block.i ]
%xp.050.i = phi %"ll::limb::Limb"* [ %xp.050.i.unr, %next-block.i.preheader.split.split ], [ %37, %next-block.i ]
%yp.049.i = phi %"ll::limb::Limb"* [ %yp.049.i.unr, %next-block.i.preheader.split.split ], [ %38, %next-block.i ]
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i, i64 1
%xl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%xl.sroa.0.0.copyload.i = load i64* %xl.sroa.0.0..sroa_idx.i, align 8
%yl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%yl.sroa.0.0.copyload.i = load i64* %yl.sroa.0.0..sroa_idx.i, align 8
%28 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i, i64 %yl.sroa.0.0.copyload.i) #20
%29 = extractvalue { i64, i1 } %28, 0
%30 = extractvalue { i64, i1 } %28, 1
%31 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %29, i64 %.52.i) #20
%32 = extractvalue { i64, i1 } %31, 0
%33 = extractvalue { i64, i1 } %31, 1
%34 = or i1 %30, %33
%..i = zext i1 %34 to i64
%rl.sroa.0.0..sroa_idx16.i = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %32, i64* %rl.sroa.0.0..sroa_idx16.i, align 8
%35 = add i32 %24, -1
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%xl.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%xl.sroa.0.0.copyload.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%yl.sroa.0.0.copyload.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.1, align 8
%39 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.1, i64 %yl.sroa.0.0.copyload.i.1) #20
%40 = extractvalue { i64, i1 } %39, 0
%41 = extractvalue { i64, i1 } %39, 1
%42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %40, i64 %..i) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
%45 = or i1 %41, %44
%..i.1 = zext i1 %45 to i64
%rl.sroa.0.0..sroa_idx16.i.1 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %43, i64* %rl.sroa.0.0..sroa_idx16.i.1, align 8
%46 = add i32 %35, -1
%47 = icmp eq i32 %46, 0
br i1 %47, label %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit.unr-lcssa, label %next-block.i
_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit.unr-lcssa: ; preds = %next-block.i
%..i.lcssa.ph = phi i64 [ %..i.1, %next-block.i ]
br label %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit
_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit: ; preds = %next-block.i.preheader.split, %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit.unr-lcssa
%..i.lcssa = phi i64 [ %..i.lcssa.unr, %next-block.i.preheader.split ], [ %..i.lcssa.ph, %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit
_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit: ; preds = %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit, %entry-block
%..lcssa.i = phi i64 [ %.47.i, %entry-block ], [ %..i.lcssa, %_ZN2ll6addsub13add_n_generic20h16ad7b1d2b1bb80foaaE.exit.loopexit ]
ret i64 %..lcssa.i
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%xl.sroa.0.0..sroa_idx43 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44 = load i64* %xl.sroa.0.0..sroa_idx43, align 8
%yl.sroa.0.0..sroa_idx45 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 0, i32 0
%yl.sroa.0.0.copyload46 = load i64* %yl.sroa.0.0..sroa_idx45, align 8
%4 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44, i64 %yl.sroa.0.0.copyload46) #20
%5 = extractvalue { i64, i1 } %4, 0
%6 = extractvalue { i64, i1 } %4, 1
%.47 = zext i1 %6 to i64
%rl.sroa.0.0..sroa_idx1648 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %5, i64* %rl.sroa.0.0..sroa_idx1648, align 8
%7 = add i32 %3, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %clean_ast_364_, label %next-block.preheader
next-block.preheader: ; preds = %entry-block
%9 = add i32 %3, -1
%10 = add i32 %3, -2
%xtraiter = and i32 %9, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.prol, label %next-block.preheader.split
next-block.prol: ; preds = %next-block.preheader
%11 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 1
%xl.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload.prol = load i64* %xl.sroa.0.0..sroa_idx.prol, align 8
%yl.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%yl.sroa.0.0.copyload.prol = load i64* %yl.sroa.0.0..sroa_idx.prol, align 8
%14 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.prol, i64 %yl.sroa.0.0.copyload.prol) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %15, i64 %.47) #20
%18 = extractvalue { i64, i1 } %17, 0
%19 = extractvalue { i64, i1 } %17, 1
%20 = or i1 %16, %19
%..prol = zext i1 %20 to i64
%rl.sroa.0.0..sroa_idx16.prol = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %18, i64* %rl.sroa.0.0..sroa_idx16.prol, align 8
%21 = add i32 %7, -1
%22 = icmp eq i32 %21, 0
br label %next-block.preheader.split
next-block.preheader.split: ; preds = %next-block.prol, %next-block.preheader
%..lcssa55.unr = phi i64 [ 0, %next-block.preheader ], [ %..prol, %next-block.prol ]
%.unr = phi i32 [ %7, %next-block.preheader ], [ %21, %next-block.prol ]
%.52.unr = phi i64 [ %.47, %next-block.preheader ], [ %..prol, %next-block.prol ]
%wp.051.unr = phi %"ll::limb::Limb"* [ %0, %next-block.preheader ], [ %11, %next-block.prol ]
%xp.050.unr = phi %"ll::limb::Limb"* [ %1, %next-block.preheader ], [ %12, %next-block.prol ]
%yp.049.unr = phi %"ll::limb::Limb"* [ %2, %next-block.preheader ], [ %13, %next-block.prol ]
%23 = icmp ult i32 %10, 1
br i1 %23, label %clean_ast_364_.loopexit, label %next-block.preheader.split.split
next-block.preheader.split.split: ; preds = %next-block.preheader.split
br label %next-block
clean_ast_364_.loopexit.unr-lcssa: ; preds = %next-block
%..lcssa55.ph = phi i64 [ %..1, %next-block ]
br label %clean_ast_364_.loopexit
clean_ast_364_.loopexit: ; preds = %next-block.preheader.split, %clean_ast_364_.loopexit.unr-lcssa
%..lcssa55 = phi i64 [ %..lcssa55.unr, %next-block.preheader.split ], [ %..lcssa55.ph, %clean_ast_364_.loopexit.unr-lcssa ]
br label %clean_ast_364_
clean_ast_364_: ; preds = %clean_ast_364_.loopexit, %entry-block
%..lcssa = phi i64 [ %.47, %entry-block ], [ %..lcssa55, %clean_ast_364_.loopexit ]
ret i64 %..lcssa
next-block: ; preds = %next-block, %next-block.preheader.split.split
%24 = phi i32 [ %.unr, %next-block.preheader.split.split ], [ %46, %next-block ]
%.52 = phi i64 [ %.52.unr, %next-block.preheader.split.split ], [ %..1, %next-block ]
%wp.051 = phi %"ll::limb::Limb"* [ %wp.051.unr, %next-block.preheader.split.split ], [ %36, %next-block ]
%xp.050 = phi %"ll::limb::Limb"* [ %xp.050.unr, %next-block.preheader.split.split ], [ %37, %next-block ]
%yp.049 = phi %"ll::limb::Limb"* [ %yp.049.unr, %next-block.preheader.split.split ], [ %38, %next-block ]
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.051, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.050, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.049, i64 1
%xl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%xl.sroa.0.0.copyload = load i64* %xl.sroa.0.0..sroa_idx, align 8
%yl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%yl.sroa.0.0.copyload = load i64* %yl.sroa.0.0..sroa_idx, align 8
%28 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload, i64 %yl.sroa.0.0.copyload) #20
%29 = extractvalue { i64, i1 } %28, 0
%30 = extractvalue { i64, i1 } %28, 1
%31 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %29, i64 %.52) #20
%32 = extractvalue { i64, i1 } %31, 0
%33 = extractvalue { i64, i1 } %31, 1
%34 = or i1 %30, %33
%. = zext i1 %34 to i64
%rl.sroa.0.0..sroa_idx16 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %32, i64* %rl.sroa.0.0..sroa_idx16, align 8
%35 = add i32 %24, -1
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%xl.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%xl.sroa.0.0.copyload.1 = load i64* %xl.sroa.0.0..sroa_idx.1, align 8
%yl.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%yl.sroa.0.0.copyload.1 = load i64* %yl.sroa.0.0..sroa_idx.1, align 8
%39 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.1, i64 %yl.sroa.0.0.copyload.1) #20
%40 = extractvalue { i64, i1 } %39, 0
%41 = extractvalue { i64, i1 } %39, 1
%42 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %40, i64 %.) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
%45 = or i1 %41, %44
%..1 = zext i1 %45 to i64
%rl.sroa.0.0..sroa_idx16.1 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %43, i64* %rl.sroa.0.0..sroa_idx16.1, align 8
%46 = add i32 %35, -1
%47 = icmp eq i32 %46, 0
br i1 %47, label %clean_ast_364_.loopexit.unr-lcssa, label %next-block
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb4Limb12sub_overflow20he85969b96d8829d6n0cE({ %"ll::limb::Limb", i8 }* noalias nocapture sret dereferenceable(16), i64, i64) unnamed_addr #2 {
entry-block:
%3 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1, i64 %2)
%4 = extractvalue { i64, i1 } %3, 0
%5 = extractvalue { i64, i1 } %3, 1
%6 = getelementptr inbounds { %"ll::limb::Limb", i8 }* %0, i64 0, i32 0, i32 0
store i64 %4, i64* %6, align 8
%7 = getelementptr inbounds { %"ll::limb::Limb", i8 }* %0, i64 0, i32 1
%8 = zext i1 %5 to i8
store i8 %8, i8* %7, align 8
ret void
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #3 {
entry-block:
%xl.sroa.0.0..sroa_idx43.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i = load i64* %xl.sroa.0.0..sroa_idx43.i, align 8
%yl.sroa.0.0..sroa_idx45.i = getelementptr inbounds %"ll::limb::Limb"* %2, i64 0, i32 0
%yl.sroa.0.0.copyload46.i = load i64* %yl.sroa.0.0..sroa_idx45.i, align 8
%4 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i, i64 %yl.sroa.0.0.copyload46.i) #20
%5 = extractvalue { i64, i1 } %4, 0
%6 = extractvalue { i64, i1 } %4, 1
%.47.i = zext i1 %6 to i64
%rl.sroa.0.0..sroa_idx1648.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %5, i64* %rl.sroa.0.0..sroa_idx1648.i, align 8
%7 = add i32 %3, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit, label %next-block.i.preheader
next-block.i.preheader: ; preds = %entry-block
%9 = add i32 %3, -1
%10 = add i32 %3, -2
%xtraiter = and i32 %9, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.i.prol, label %next-block.i.preheader.split
next-block.i.prol: ; preds = %next-block.i.preheader
%11 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 1
%xl.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%yl.sroa.0.0.copyload.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.prol, align 8
%14 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.prol, i64 %yl.sroa.0.0.copyload.i.prol) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %15, i64 %.47.i) #20
%18 = extractvalue { i64, i1 } %17, 0
%19 = extractvalue { i64, i1 } %17, 1
%20 = or i1 %16, %19
%..i.prol = zext i1 %20 to i64
%rl.sroa.0.0..sroa_idx16.i.prol = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %18, i64* %rl.sroa.0.0..sroa_idx16.i.prol, align 8
%21 = add i32 %7, -1
%22 = icmp eq i32 %21, 0
br label %next-block.i.preheader.split
next-block.i.preheader.split: ; preds = %next-block.i.prol, %next-block.i.preheader
%..i.lcssa.unr = phi i64 [ 0, %next-block.i.preheader ], [ %..i.prol, %next-block.i.prol ]
%.unr = phi i32 [ %7, %next-block.i.preheader ], [ %21, %next-block.i.prol ]
%.52.i.unr = phi i64 [ %.47.i, %next-block.i.preheader ], [ %..i.prol, %next-block.i.prol ]
%wp.051.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.preheader ], [ %11, %next-block.i.prol ]
%xp.050.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.preheader ], [ %12, %next-block.i.prol ]
%yp.049.i.unr = phi %"ll::limb::Limb"* [ %2, %next-block.i.preheader ], [ %13, %next-block.i.prol ]
%23 = icmp ult i32 %10, 1
br i1 %23, label %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit, label %next-block.i.preheader.split.split
next-block.i.preheader.split.split: ; preds = %next-block.i.preheader.split
br label %next-block.i
next-block.i: ; preds = %next-block.i, %next-block.i.preheader.split.split
%24 = phi i32 [ %.unr, %next-block.i.preheader.split.split ], [ %46, %next-block.i ]
%.52.i = phi i64 [ %.52.i.unr, %next-block.i.preheader.split.split ], [ %..i.1, %next-block.i ]
%wp.051.i = phi %"ll::limb::Limb"* [ %wp.051.i.unr, %next-block.i.preheader.split.split ], [ %36, %next-block.i ]
%xp.050.i = phi %"ll::limb::Limb"* [ %xp.050.i.unr, %next-block.i.preheader.split.split ], [ %37, %next-block.i ]
%yp.049.i = phi %"ll::limb::Limb"* [ %yp.049.i.unr, %next-block.i.preheader.split.split ], [ %38, %next-block.i ]
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i, i64 1
%xl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%xl.sroa.0.0.copyload.i = load i64* %xl.sroa.0.0..sroa_idx.i, align 8
%yl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%yl.sroa.0.0.copyload.i = load i64* %yl.sroa.0.0..sroa_idx.i, align 8
%28 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i, i64 %yl.sroa.0.0.copyload.i) #20
%29 = extractvalue { i64, i1 } %28, 0
%30 = extractvalue { i64, i1 } %28, 1
%31 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %29, i64 %.52.i) #20
%32 = extractvalue { i64, i1 } %31, 0
%33 = extractvalue { i64, i1 } %31, 1
%34 = or i1 %30, %33
%..i = zext i1 %34 to i64
%rl.sroa.0.0..sroa_idx16.i = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %32, i64* %rl.sroa.0.0..sroa_idx16.i, align 8
%35 = add i32 %24, -1
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%xl.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%xl.sroa.0.0.copyload.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%yl.sroa.0.0.copyload.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.1, align 8
%39 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.1, i64 %yl.sroa.0.0.copyload.i.1) #20
%40 = extractvalue { i64, i1 } %39, 0
%41 = extractvalue { i64, i1 } %39, 1
%42 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %40, i64 %..i) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
%45 = or i1 %41, %44
%..i.1 = zext i1 %45 to i64
%rl.sroa.0.0..sroa_idx16.i.1 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %43, i64* %rl.sroa.0.0..sroa_idx16.i.1, align 8
%46 = add i32 %35, -1
%47 = icmp eq i32 %46, 0
br i1 %47, label %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit.unr-lcssa, label %next-block.i
_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit.unr-lcssa: ; preds = %next-block.i
%..i.lcssa.ph = phi i64 [ %..i.1, %next-block.i ]
br label %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit
_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit: ; preds = %next-block.i.preheader.split, %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit.unr-lcssa
%..i.lcssa = phi i64 [ %..i.lcssa.unr, %next-block.i.preheader.split ], [ %..i.lcssa.ph, %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit
_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit: ; preds = %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit, %entry-block
%..lcssa.i = phi i64 [ %.47.i, %entry-block ], [ %..i.lcssa, %_ZN2ll6addsub13sub_n_generic20h4d9ea6f4b1217eaf3daE.exit.loopexit ]
ret i64 %..lcssa.i
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub3add20hfa4684de924f828bIhaE(%"ll::limb::Limb"*, %"ll::limb::Limb"* readonly, i32, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #3 {
entry-block:
%xl.sroa.0.0..sroa_idx43.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%5 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i, i64 %yl.sroa.0.0.copyload46.i.i) #20
%6 = extractvalue { i64, i1 } %5, 0
%7 = extractvalue { i64, i1 } %5, 1
%.47.i.i = zext i1 %7 to i64
%rl.sroa.0.0..sroa_idx1648.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %6, i64* %rl.sroa.0.0..sroa_idx1648.i.i, align 8
%8 = add i32 %4, -1
%9 = icmp eq i32 %8, 0
br i1 %9, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %entry-block
%10 = add i32 %4, -1
%11 = add i32 %4, -2
%xtraiter57 = and i32 %10, 1
%lcmp.mod58 = icmp ne i32 %xtraiter57, 0
br i1 %lcmp.mod58, label %next-block.i.i.prol, label %next-block.i.i.preheader.split
next-block.i.i.prol: ; preds = %next-block.i.i.preheader
%12 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%xl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %14, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.prol, align 8
%15 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.prol) #20
%16 = extractvalue { i64, i1 } %15, 0
%17 = extractvalue { i64, i1 } %15, 1
%18 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %16, i64 %.47.i.i) #20
%19 = extractvalue { i64, i1 } %18, 0
%20 = extractvalue { i64, i1 } %18, 1
%21 = or i1 %17, %20
%..i.i.prol = zext i1 %21 to i64
%rl.sroa.0.0..sroa_idx16.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %19, i64* %rl.sroa.0.0..sroa_idx16.i.i.prol, align 8
%22 = add i32 %8, -1
%23 = icmp eq i32 %22, 0
br label %next-block.i.i.preheader.split
next-block.i.i.preheader.split: ; preds = %next-block.i.i.prol, %next-block.i.i.preheader
%..i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%.unr = phi i32 [ %8, %next-block.i.i.preheader ], [ %22, %next-block.i.i.prol ]
%.52.i.i.unr = phi i64 [ %.47.i.i, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%wp.051.i.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i.preheader ], [ %12, %next-block.i.i.prol ]
%xp.050.i.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i.preheader ], [ %13, %next-block.i.i.prol ]
%yp.049.i.i.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i.preheader ], [ %14, %next-block.i.i.prol ]
%24 = icmp ult i32 %11, 1
br i1 %24, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, label %next-block.i.i.preheader.split.split
next-block.i.i.preheader.split.split: ; preds = %next-block.i.i.preheader.split
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i, %next-block.i.i.preheader.split.split
%25 = phi i32 [ %.unr, %next-block.i.i.preheader.split.split ], [ %47, %next-block.i.i ]
%.52.i.i = phi i64 [ %.52.i.i.unr, %next-block.i.i.preheader.split.split ], [ %..i.i.1, %next-block.i.i ]
%wp.051.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.unr, %next-block.i.i.preheader.split.split ], [ %37, %next-block.i.i ]
%xp.050.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.unr, %next-block.i.i.preheader.split.split ], [ %38, %next-block.i.i ]
%yp.049.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.unr, %next-block.i.i.preheader.split.split ], [ %39, %next-block.i.i ]
%26 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i, i64 1
%28 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %28, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i, align 8
%29 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i, i64 %yl.sroa.0.0.copyload.i.i) #20
%30 = extractvalue { i64, i1 } %29, 0
%31 = extractvalue { i64, i1 } %29, 1
%32 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %30, i64 %.52.i.i) #20
%33 = extractvalue { i64, i1 } %32, 0
%34 = extractvalue { i64, i1 } %32, 1
%35 = or i1 %31, %34
%..i.i = zext i1 %35 to i64
%rl.sroa.0.0..sroa_idx16.i.i = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
store i64 %33, i64* %rl.sroa.0.0..sroa_idx16.i.i, align 8
%36 = add i32 %25, -1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 1
%xl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %39, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.1, align 8
%40 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.1) #20
%41 = extractvalue { i64, i1 } %40, 0
%42 = extractvalue { i64, i1 } %40, 1
%43 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %41, i64 %..i.i) #20
%44 = extractvalue { i64, i1 } %43, 0
%45 = extractvalue { i64, i1 } %43, 1
%46 = or i1 %42, %45
%..i.i.1 = zext i1 %46 to i64
%rl.sroa.0.0..sroa_idx16.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
store i64 %44, i64* %rl.sroa.0.0..sroa_idx16.i.i.1, align 8
%47 = add i32 %36, -1
%48 = icmp eq i32 %47, 0
br i1 %48, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa, label %next-block.i.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa: ; preds = %next-block.i.i
%..i.i.lcssa.ph = phi i64 [ %..i.i.1, %next-block.i.i ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit: ; preds = %next-block.i.i.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa
%..i.i.lcssa = phi i64 [ %..i.i.lcssa.unr, %next-block.i.i.preheader.split ], [ %..i.i.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, %entry-block
%..lcssa.i.i = phi i64 [ %.47.i.i, %entry-block ], [ %..i.i.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit ]
%49 = icmp eq i64 %..lcssa.i.i, 1
br i1 %49, label %loop_body.preheader, label %next-block3
loop_body.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
br label %loop_body
loop_body: ; preds = %loop_body.preheader, %next-block
%i.0 = phi i32 [ %57, %next-block ], [ %4, %loop_body.preheader ]
%50 = icmp slt i32 %i.0, %2
br i1 %50, label %next-block, label %clean_ast_489_.loopexit56
clean_ast_489_.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %clean_ast_489_.loopexit
clean_ast_489_.loopexit: ; preds = %while_body.i.i.preheader.split, %clean_ast_489_.loopexit.unr-lcssa
br label %clean_ast_489_
clean_ast_489_.loopexit56: ; preds = %loop_body
br label %clean_ast_489_
clean_ast_489_: ; preds = %clean_ast_489_.loopexit56, %clean_ast_489_.loopexit, %middle.block, %then-block-629-, %next-block3
%sret_slot.sroa.0.0 = phi i64 [ 0, %next-block3 ], [ 0, %then-block-629- ], [ 0, %middle.block ], [ 0, %clean_ast_489_.loopexit ], [ 1, %clean_ast_489_.loopexit56 ]
ret i64 %sret_slot.sroa.0.0
next-block: ; preds = %loop_body
%51 = sext i32 %i.0 to i64
%52 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %51, i32 0
%53 = load i64* %52, align 8
%54 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %53, i64 1) #20
%55 = extractvalue { i64, i1 } %54, 0
%56 = extractvalue { i64, i1 } %54, 1
%x.sroa.0.0..sroa_idx6 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %51, i32 0
store i64 %55, i64* %x.sroa.0.0..sroa_idx6, align 8
%57 = add i32 %i.0, 1
br i1 %56, label %loop_body, label %next-block3.loopexit
next-block3.loopexit: ; preds = %next-block
%.lcssa = phi i32 [ %57, %next-block ]
br label %next-block3
next-block3: ; preds = %next-block3.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
%i.1 = phi i32 [ %4, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit ], [ %.lcssa, %next-block3.loopexit ]
%58 = icmp ne %"ll::limb::Limb"* %0, %1
%59 = icmp slt i32 %i.1, %2
%. = and i1 %58, %59
br i1 %., label %then-block-629-, label %clean_ast_489_
then-block-629-: ; preds = %next-block3
%60 = sext i32 %i.1 to i64
%61 = sub i32 %2, %i.1
%62 = icmp sgt i32 %61, 0
br i1 %62, label %while_body.lr.ph.i.i, label %clean_ast_489_
while_body.lr.ph.i.i: ; preds = %then-block-629-
%63 = add i32 %2, -1
%64 = sub i32 %63, %i.1
%65 = zext i32 %64 to i64
%66 = add nuw nsw i64 %65, 1
%end.idx = add nuw nsw i64 %65, 1
%n.vec = and i64 %66, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%67 = sext i32 %i.1 to i64
%68 = add i32 %2, -1
%69 = sub i32 %68, %i.1
%70 = zext i32 %69 to i64
%71 = add nsw i64 %67, %70
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %0, i64 %67
%scevgep44 = getelementptr %"ll::limb::Limb"* %1, i64 %71
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep44
%scevgep42 = getelementptr %"ll::limb::Limb"* %1, i64 %67
%scevgep40 = getelementptr %"ll::limb::Limb"* %0, i64 %71
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep42, %scevgep40
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%72 = add i64 %index, %60
%73 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %72, i32 0
%74 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %72, i32 0
%75 = bitcast i64* %73 to <2 x i64>*
%wide.load = load <2 x i64>* %75, align 8
%76 = getelementptr i64* %73, i64 2
%77 = bitcast i64* %76 to <2 x i64>*
%wide.load49 = load <2 x i64>* %77, align 8
%78 = bitcast i64* %74 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %78, align 8
%79 = getelementptr i64* %74, i64 2
%80 = bitcast i64* %79 to <2 x i64>*
store <2 x i64> %wide.load49, <2 x i64>* %80, align 8
%index.next = add i64 %index, 4
%81 = icmp eq i64 %index.next, %n.vec
br i1 %81, label %middle.block.loopexit, label %vector.body, !llvm.loop !0
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %clean_ast_489_, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%82 = sub i32 %2, %i.1
%83 = trunc i64 %resume.val to i32
%84 = sub i32 %82, %83
%85 = add i32 %2, -1
%86 = sub i32 %85, %i.1
%87 = sub i32 %86, %83
%xtraiter = and i32 %84, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%.sum.i.prol = add i64 %indvars.iv.i.i.prol, %60
%88 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.prol, i32 0
%89 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.prol, i32 0
%90 = load i64* %88, align 8
store i64 %90, i64* %89, align 8
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %64
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%91 = icmp ult i32 %87, 3
br i1 %91, label %clean_ast_489_.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%.sum.i = add i64 %indvars.iv.i.i, %60
%92 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i, i32 0
%93 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i, i32 0
%94 = load i64* %92, align 8
store i64 %94, i64* %93, align 8
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%.sum.i.1 = add i64 %indvars.iv.next.i.i, %60
%95 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.1, i32 0
%96 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.1, i32 0
%97 = load i64* %95, align 8
store i64 %97, i64* %96, align 8
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%.sum.i.2 = add i64 %indvars.iv.next.i.i.1, %60
%98 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.2, i32 0
%99 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.2, i32 0
%100 = load i64* %98, align 8
store i64 %100, i64* %99, align 8
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%.sum.i.3 = add i64 %indvars.iv.next.i.i.2, %60
%101 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.3, i32 0
%102 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.3, i32 0
%103 = load i64* %101, align 8
store i64 %103, i64* %102, align 8
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %64
br i1 %exitcond.3, label %clean_ast_489_.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !5
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp eq i64 %3, %4
ret i1 %5
}
; Function Attrs: inlinehint nounwind uwtable
define void @_ZN2ll9copy_rest20hd478a881a1dcb42bmudE(%"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture, i32, i32) unnamed_addr #3 {
entry-block:
%4 = sext i32 %3 to i64
%5 = sub i32 %2, %3
%6 = icmp sgt i32 %5, 0
br i1 %6, label %while_body.lr.ph.i, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit
while_body.lr.ph.i: ; preds = %entry-block
%7 = add i32 %2, -1
%8 = sub i32 %7, %3
%9 = zext i32 %8 to i64
%10 = add nuw nsw i64 %9, 1
%end.idx = add nuw nsw i64 %9, 1
%n.vec = and i64 %10, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%11 = sext i32 %3 to i64
%12 = add i32 %2, -1
%13 = sub i32 %12, %3
%14 = zext i32 %13 to i64
%15 = add nsw i64 %11, %14
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i
%scevgep = getelementptr %"ll::limb::Limb"* %1, i64 %11
%scevgep21 = getelementptr %"ll::limb::Limb"* %0, i64 %15
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep21
%scevgep19 = getelementptr %"ll::limb::Limb"* %0, i64 %11
%scevgep17 = getelementptr %"ll::limb::Limb"* %1, i64 %15
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep19, %scevgep17
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%16 = add i64 %index, %4
%17 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %16, i32 0
%18 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %16, i32 0
%19 = bitcast i64* %17 to <2 x i64>*
%wide.load = load <2 x i64>* %19, align 8
%20 = getelementptr i64* %17, i64 2
%21 = bitcast i64* %20 to <2 x i64>*
%wide.load26 = load <2 x i64>* %21, align 8
%22 = bitcast i64* %18 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %22, align 8
%23 = getelementptr i64* %18, i64 2
%24 = bitcast i64* %23 to <2 x i64>*
store <2 x i64> %wide.load26, <2 x i64>* %24, align 8
%index.next = add i64 %index, 4
%25 = icmp eq i64 %index.next, %n.vec
br i1 %25, label %middle.block.loopexit, label %vector.body, !llvm.loop !6
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit, label %while_body.i.preheader
while_body.i.preheader: ; preds = %middle.block
%26 = sub i32 %2, %3
%27 = trunc i64 %resume.val to i32
%28 = sub i32 %26, %27
%29 = add i32 %2, -1
%30 = sub i32 %29, %3
%31 = sub i32 %30, %27
%xtraiter = and i32 %28, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i.prol ], [ %resume.val, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%.sum.prol = add i64 %indvars.iv.i.prol, %4
%32 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.prol, i32 0
%33 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.prol, i32 0
%34 = load i64* %32, align 8
store i64 %34, i64* %33, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %8
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !7
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val, %while_body.i.preheader ], [ %indvars.iv.next.i.prol, %while_body.i.prol ]
%35 = icmp ult i32 %31, 3
br i1 %35, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i ]
%.sum = add i64 %indvars.iv.i, %4
%36 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum, i32 0
%37 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum, i32 0
%38 = load i64* %36, align 8
store i64 %38, i64* %37, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%.sum.1 = add i64 %indvars.iv.next.i, %4
%39 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.1, i32 0
%40 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.1, i32 0
%41 = load i64* %39, align 8
store i64 %41, i64* %40, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%.sum.2 = add i64 %indvars.iv.next.i.1, %4
%42 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.2, i32 0
%43 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.2, i32 0
%44 = load i64* %42, align 8
store i64 %44, i64* %43, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%.sum.3 = add i64 %indvars.iv.next.i.2, %4
%45 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.3, i32 0
%46 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.3, i32 0
%47 = load i64* %45, align 8
store i64 %47, i64* %46, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %8
br i1 %exitcond.3, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.unr-lcssa, label %while_body.i, !llvm.loop !8
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.unr-lcssa
br label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit: ; preds = %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit, %middle.block, %entry-block
ret void
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub3sub20h1e8025396aab7c67wkaE(%"ll::limb::Limb"*, %"ll::limb::Limb"* readonly, i32, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #3 {
entry-block:
%xl.sroa.0.0..sroa_idx43.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%5 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i, i64 %yl.sroa.0.0.copyload46.i.i) #20
%6 = extractvalue { i64, i1 } %5, 0
%7 = extractvalue { i64, i1 } %5, 1
%.47.i.i = zext i1 %7 to i64
%rl.sroa.0.0..sroa_idx1648.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %6, i64* %rl.sroa.0.0..sroa_idx1648.i.i, align 8
%8 = add i32 %4, -1
%9 = icmp eq i32 %8, 0
br i1 %9, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %entry-block
%10 = add i32 %4, -1
%11 = add i32 %4, -2
%xtraiter57 = and i32 %10, 1
%lcmp.mod58 = icmp ne i32 %xtraiter57, 0
br i1 %lcmp.mod58, label %next-block.i.i.prol, label %next-block.i.i.preheader.split
next-block.i.i.prol: ; preds = %next-block.i.i.preheader
%12 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%xl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %13, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %14, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.prol, align 8
%15 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.prol) #20
%16 = extractvalue { i64, i1 } %15, 0
%17 = extractvalue { i64, i1 } %15, 1
%18 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %16, i64 %.47.i.i) #20
%19 = extractvalue { i64, i1 } %18, 0
%20 = extractvalue { i64, i1 } %18, 1
%21 = or i1 %17, %20
%..i.i.prol = zext i1 %21 to i64
%rl.sroa.0.0..sroa_idx16.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %19, i64* %rl.sroa.0.0..sroa_idx16.i.i.prol, align 8
%22 = add i32 %8, -1
%23 = icmp eq i32 %22, 0
br label %next-block.i.i.preheader.split
next-block.i.i.preheader.split: ; preds = %next-block.i.i.prol, %next-block.i.i.preheader
%..i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%.unr = phi i32 [ %8, %next-block.i.i.preheader ], [ %22, %next-block.i.i.prol ]
%.52.i.i.unr = phi i64 [ %.47.i.i, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%wp.051.i.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i.preheader ], [ %12, %next-block.i.i.prol ]
%xp.050.i.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i.preheader ], [ %13, %next-block.i.i.prol ]
%yp.049.i.i.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i.preheader ], [ %14, %next-block.i.i.prol ]
%24 = icmp ult i32 %11, 1
br i1 %24, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit, label %next-block.i.i.preheader.split.split
next-block.i.i.preheader.split.split: ; preds = %next-block.i.i.preheader.split
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i, %next-block.i.i.preheader.split.split
%25 = phi i32 [ %.unr, %next-block.i.i.preheader.split.split ], [ %47, %next-block.i.i ]
%.52.i.i = phi i64 [ %.52.i.i.unr, %next-block.i.i.preheader.split.split ], [ %..i.i.1, %next-block.i.i ]
%wp.051.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.unr, %next-block.i.i.preheader.split.split ], [ %37, %next-block.i.i ]
%xp.050.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.unr, %next-block.i.i.preheader.split.split ], [ %38, %next-block.i.i ]
%yp.049.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.unr, %next-block.i.i.preheader.split.split ], [ %39, %next-block.i.i ]
%26 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i, i64 1
%28 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %28, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i, align 8
%29 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i, i64 %yl.sroa.0.0.copyload.i.i) #20
%30 = extractvalue { i64, i1 } %29, 0
%31 = extractvalue { i64, i1 } %29, 1
%32 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %30, i64 %.52.i.i) #20
%33 = extractvalue { i64, i1 } %32, 0
%34 = extractvalue { i64, i1 } %32, 1
%35 = or i1 %31, %34
%..i.i = zext i1 %35 to i64
%rl.sroa.0.0..sroa_idx16.i.i = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
store i64 %33, i64* %rl.sroa.0.0..sroa_idx16.i.i, align 8
%36 = add i32 %25, -1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 1
%xl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %39, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.1, align 8
%40 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.1) #20
%41 = extractvalue { i64, i1 } %40, 0
%42 = extractvalue { i64, i1 } %40, 1
%43 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %41, i64 %..i.i) #20
%44 = extractvalue { i64, i1 } %43, 0
%45 = extractvalue { i64, i1 } %43, 1
%46 = or i1 %42, %45
%..i.i.1 = zext i1 %46 to i64
%rl.sroa.0.0..sroa_idx16.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
store i64 %44, i64* %rl.sroa.0.0..sroa_idx16.i.i.1, align 8
%47 = add i32 %36, -1
%48 = icmp eq i32 %47, 0
br i1 %48, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa, label %next-block.i.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa: ; preds = %next-block.i.i
%..i.i.lcssa.ph = phi i64 [ %..i.i.1, %next-block.i.i ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit: ; preds = %next-block.i.i.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa
%..i.i.lcssa = phi i64 [ %..i.i.lcssa.unr, %next-block.i.i.preheader.split ], [ %..i.i.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit, %entry-block
%..lcssa.i.i = phi i64 [ %.47.i.i, %entry-block ], [ %..i.i.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit ]
%49 = icmp eq i64 %..lcssa.i.i, 1
br i1 %49, label %loop_body.preheader, label %next-block3
loop_body.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit
br label %loop_body
loop_body: ; preds = %loop_body.preheader, %next-block
%i.0 = phi i32 [ %57, %next-block ], [ %4, %loop_body.preheader ]
%50 = icmp slt i32 %i.0, %2
br i1 %50, label %next-block, label %clean_ast_663_.loopexit56
clean_ast_663_.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %clean_ast_663_.loopexit
clean_ast_663_.loopexit: ; preds = %while_body.i.i.preheader.split, %clean_ast_663_.loopexit.unr-lcssa
br label %clean_ast_663_
clean_ast_663_.loopexit56: ; preds = %loop_body
br label %clean_ast_663_
clean_ast_663_: ; preds = %clean_ast_663_.loopexit56, %clean_ast_663_.loopexit, %middle.block, %then-block-803-, %next-block3
%sret_slot.sroa.0.0 = phi i64 [ 0, %next-block3 ], [ 0, %then-block-803- ], [ 0, %middle.block ], [ 0, %clean_ast_663_.loopexit ], [ 1, %clean_ast_663_.loopexit56 ]
ret i64 %sret_slot.sroa.0.0
next-block: ; preds = %loop_body
%51 = sext i32 %i.0 to i64
%52 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %51, i32 0
%53 = load i64* %52, align 8
%54 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %53, i64 1) #20
%55 = extractvalue { i64, i1 } %54, 0
%56 = extractvalue { i64, i1 } %54, 1
%x.sroa.0.0..sroa_idx6 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %51, i32 0
store i64 %55, i64* %x.sroa.0.0..sroa_idx6, align 8
%57 = add i32 %i.0, 1
br i1 %56, label %loop_body, label %next-block3.loopexit
next-block3.loopexit: ; preds = %next-block
%.lcssa = phi i32 [ %57, %next-block ]
br label %next-block3
next-block3: ; preds = %next-block3.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit
%i.1 = phi i32 [ %4, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit ], [ %.lcssa, %next-block3.loopexit ]
%58 = icmp ne %"ll::limb::Limb"* %0, %1
%59 = icmp slt i32 %i.1, %2
%. = and i1 %58, %59
br i1 %., label %then-block-803-, label %clean_ast_663_
then-block-803-: ; preds = %next-block3
%60 = sext i32 %i.1 to i64
%61 = sub i32 %2, %i.1
%62 = icmp sgt i32 %61, 0
br i1 %62, label %while_body.lr.ph.i.i, label %clean_ast_663_
while_body.lr.ph.i.i: ; preds = %then-block-803-
%63 = add i32 %2, -1
%64 = sub i32 %63, %i.1
%65 = zext i32 %64 to i64
%66 = add nuw nsw i64 %65, 1
%end.idx = add nuw nsw i64 %65, 1
%n.vec = and i64 %66, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%67 = sext i32 %i.1 to i64
%68 = add i32 %2, -1
%69 = sub i32 %68, %i.1
%70 = zext i32 %69 to i64
%71 = add nsw i64 %67, %70
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %0, i64 %67
%scevgep44 = getelementptr %"ll::limb::Limb"* %1, i64 %71
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep44
%scevgep42 = getelementptr %"ll::limb::Limb"* %1, i64 %67
%scevgep40 = getelementptr %"ll::limb::Limb"* %0, i64 %71
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep42, %scevgep40
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%72 = add i64 %index, %60
%73 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %72, i32 0
%74 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %72, i32 0
%75 = bitcast i64* %73 to <2 x i64>*
%wide.load = load <2 x i64>* %75, align 8
%76 = getelementptr i64* %73, i64 2
%77 = bitcast i64* %76 to <2 x i64>*
%wide.load49 = load <2 x i64>* %77, align 8
%78 = bitcast i64* %74 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %78, align 8
%79 = getelementptr i64* %74, i64 2
%80 = bitcast i64* %79 to <2 x i64>*
store <2 x i64> %wide.load49, <2 x i64>* %80, align 8
%index.next = add i64 %index, 4
%81 = icmp eq i64 %index.next, %n.vec
br i1 %81, label %middle.block.loopexit, label %vector.body, !llvm.loop !9
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %clean_ast_663_, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%82 = sub i32 %2, %i.1
%83 = trunc i64 %resume.val to i32
%84 = sub i32 %82, %83
%85 = add i32 %2, -1
%86 = sub i32 %85, %i.1
%87 = sub i32 %86, %83
%xtraiter = and i32 %84, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%.sum.i.prol = add i64 %indvars.iv.i.i.prol, %60
%88 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.prol, i32 0
%89 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.prol, i32 0
%90 = load i64* %88, align 8
store i64 %90, i64* %89, align 8
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %64
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !10
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%91 = icmp ult i32 %87, 3
br i1 %91, label %clean_ast_663_.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%.sum.i = add i64 %indvars.iv.i.i, %60
%92 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i, i32 0
%93 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i, i32 0
%94 = load i64* %92, align 8
store i64 %94, i64* %93, align 8
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%.sum.i.1 = add i64 %indvars.iv.next.i.i, %60
%95 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.1, i32 0
%96 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.1, i32 0
%97 = load i64* %95, align 8
store i64 %97, i64* %96, align 8
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%.sum.i.2 = add i64 %indvars.iv.next.i.i.1, %60
%98 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.2, i32 0
%99 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.2, i32 0
%100 = load i64* %98, align 8
store i64 %100, i64* %99, align 8
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%.sum.i.3 = add i64 %indvars.iv.next.i.i.2, %60
%101 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.3, i32 0
%102 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.3, i32 0
%103 = load i64* %101, align 8
store i64 %103, i64* %102, align 8
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %64
br i1 %exitcond.3, label %clean_ast_663_.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !11
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub5add_120ha77132d265068cbdknaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #3 {
entry-block:
%4 = icmp sgt i32 %2, 0
br i1 %4, label %then-block-839-, label %clean_custom_
then-block-839-: ; preds = %entry-block
%5 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%6 = load i64* %5, align 8
%7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 %3) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%v.sroa.0.0..sroa_idx15 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %8, i64* %v.sroa.0.0..sroa_idx15, align 8
br i1 %9, label %while_body.lr.ph, label %clean_custom_
while_body.lr.ph: ; preds = %then-block-839-
%10 = sext i32 %2 to i64
br label %while_body
while_body: ; preds = %next-block, %while_body.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %next-block ], [ 1, %while_body.lr.ph ]
%11 = icmp slt i64 %indvars.iv, %10
br i1 %11, label %next-block, label %clean_custom_.loopexit
clean_custom_.loopexit: ; preds = %next-block, %while_body
%sret_slot.sroa.0.0.ph = phi i64 [ 1, %while_body ], [ 0, %next-block ]
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %then-block-839-, %entry-block
%sret_slot.sroa.0.0 = phi i64 [ 0, %entry-block ], [ 0, %then-block-839- ], [ %sret_slot.sroa.0.0.ph, %clean_custom_.loopexit ]
ret i64 %sret_slot.sroa.0.0
next-block: ; preds = %while_body
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 1) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%v1.sroa.0.0..sroa_idx4 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv, i32 0
store i64 %15, i64* %v1.sroa.0.0..sroa_idx4, align 8
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br i1 %16, label %while_body, label %clean_custom_.loopexit
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll6addsub5sub_120hc4f5233070fd395dRoaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #3 {
entry-block:
%4 = icmp sgt i32 %2, 0
br i1 %4, label %then-block-934-, label %clean_custom_
then-block-934-: ; preds = %entry-block
%5 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%6 = load i64* %5, align 8
%7 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %6, i64 %3) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%v.sroa.0.0..sroa_idx15 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %8, i64* %v.sroa.0.0..sroa_idx15, align 8
br i1 %9, label %while_body.lr.ph, label %clean_custom_
while_body.lr.ph: ; preds = %then-block-934-
%10 = sext i32 %2 to i64
br label %while_body
while_body: ; preds = %next-block, %while_body.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %next-block ], [ 1, %while_body.lr.ph ]
%11 = icmp slt i64 %indvars.iv, %10
br i1 %11, label %next-block, label %clean_custom_.loopexit
clean_custom_.loopexit: ; preds = %next-block, %while_body
%sret_slot.sroa.0.0.ph = phi i64 [ 1, %while_body ], [ 0, %next-block ]
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %then-block-934-, %entry-block
%sret_slot.sroa.0.0 = phi i64 [ 0, %entry-block ], [ 0, %then-block-934- ], [ %sret_slot.sroa.0.0.ph, %clean_custom_.loopexit ]
ret i64 %sret_slot.sroa.0.0
next-block: ; preds = %while_body
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %13, i64 1) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%v1.sroa.0.0..sroa_idx4 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv, i32 0
store i64 %15, i64* %v1.sroa.0.0..sroa_idx4, align 8
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br i1 %16, label %while_body, label %clean_custom_.loopexit
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE(%"ll::limb::Limb"* nocapture, i64) unnamed_addr #2 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %3, i64 %1) #20
%5 = extractvalue { i64, i1 } %4, 0
%6 = extractvalue { i64, i1 } %4, 1
store i64 %5, i64* %2, align 8
br i1 %6, label %while_body.preheader, label %while_exit
while_body.preheader: ; preds = %entry-block
br label %while_body
while_exit.loopexit: ; preds = %while_body
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
ret void
while_body: ; preds = %while_body.preheader, %while_body
%ptr.023 = phi %"ll::limb::Limb"* [ %7, %while_body ], [ %0, %while_body.preheader ]
%7 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023, i64 1
%8 = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %9, i64 1) #20
%11 = extractvalue { i64, i1 } %10, 0
%12 = extractvalue { i64, i1 } %10, 1
store i64 %11, i64* %8, align 8
br i1 %12, label %while_body, label %while_exit.loopexit
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll6addsub4decr20h949f11139f1e70ddhraE(%"ll::limb::Limb"* nocapture, i64) unnamed_addr #2 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = sub i64 %3, %1
store i64 %4, i64* %2, align 8
%5 = icmp ult i64 %3, %1
br i1 %5, label %loop_body.preheader, label %next-block2
loop_body.preheader: ; preds = %entry-block
br label %loop_body
loop_body: ; preds = %loop_body.preheader, %loop_body
%ptr.0 = phi %"ll::limb::Limb"* [ %6, %loop_body ], [ %0, %loop_body.preheader ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %ptr.0, i64 1
%7 = getelementptr inbounds %"ll::limb::Limb"* %6, i64 0, i32 0
%8 = load i64* %7, align 8
%9 = add i64 %8, -1
store i64 %9, i64* %7, align 8
%10 = icmp eq i64 %8, 0
br i1 %10, label %loop_body, label %next-block2.loopexit
next-block2.loopexit: ; preds = %loop_body
br label %next-block2
next-block2: ; preds = %next-block2.loopexit, %entry-block
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb20Limb.Sub$LT$Limb$GT$3sub20h8cf6f20fb50229ddJ4cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = sub i64 %0, %1
ret i64 %2
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$2lt20h8dc05b31958fc101yedE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp ult i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23Limb.Sub$LT$BaseInt$GT$3sub20h33fa9cf21bffed8874cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = sub i64 %0, %1
ret i64 %2
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp ne i64 %3, %4
ret i1 %5
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #0 {
entry-block:
%xl.sroa.0.0..sroa_idx35 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload36 = load i64* %xl.sroa.0.0..sroa_idx35, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36, i64 %3) #20, !noalias !12, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%lpl1.sroa.0.0..sroa_idx1037 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %6, i64* %lpl1.sroa.0.0..sroa_idx1037, align 8
%7 = add i32 %2, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %clean_ast_1157_, label %next-block.preheader
next-block.preheader: ; preds = %entry-block
br label %next-block
clean_ast_1157_.loopexit: ; preds = %next-block
%.lcssa42 = phi i64 [ %20, %next-block ]
br label %clean_ast_1157_
clean_ast_1157_: ; preds = %clean_ast_1157_.loopexit, %entry-block
%.lcssa = phi i64 [ %5, %entry-block ], [ %.lcssa42, %clean_ast_1157_.loopexit ]
ret i64 %.lcssa
next-block: ; preds = %next-block.preheader, %next-block
%9 = phi i32 [ %21, %next-block ], [ %7, %next-block.preheader ]
%10 = phi i64 [ %20, %next-block ], [ %5, %next-block.preheader ]
%wp.039 = phi %"ll::limb::Limb"* [ %11, %next-block ], [ %0, %next-block.preheader ]
%xp.038 = phi %"ll::limb::Limb"* [ %12, %next-block ], [ %1, %next-block.preheader ]
%11 = getelementptr inbounds %"ll::limb::Limb"* %wp.039, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %xp.038, i64 1
%xl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload = load i64* %xl.sroa.0.0..sroa_idx, align 8
%13 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload, i64 %3) #20, !noalias !12, !srcloc !19
%14 = extractvalue { i64, i64 } %13, 0
%15 = extractvalue { i64, i64 } %13, 1
%16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %15, i64 %10) #20
%17 = extractvalue { i64, i1 } %16, 0
%18 = extractvalue { i64, i1 } %16, 1
%19 = zext i1 %18 to i64
%20 = add i64 %19, %14
%lpl1.sroa.0.0..sroa_idx10 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %17, i64* %lpl1.sroa.0.0..sroa_idx10, align 8
%21 = add i32 %9, -1
%22 = icmp eq i32 %21, 0
br i1 %22, label %clean_ast_1157_.loopexit, label %next-block
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64) unnamed_addr #2 {
entry-block:
%3 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %1, i64 %2) #20, !noalias !20, !srcloc !19
%4 = extractvalue { i64, i64 } %3, 0
%5 = extractvalue { i64, i64 } %3, 1
%high.sroa.0.0..sroa_idx.i.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %4, i64* %high.sroa.0.0..sroa_idx.i.i, align 8, !alias.scope !20
%low.sroa.0.0..sroa_idx.i.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %5, i64* %low.sroa.0.0..sroa_idx.i.i, align 8, !alias.scope !20
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb20Limb.Add$LT$bool$GT$3add20hef897934cae93720X3cE"(i64, i1 zeroext) unnamed_addr #5 {
entry-block:
%2 = zext i1 %1 to i64
%3 = add i64 %2, %0
ret i64 %3
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #3 {
entry-block:
%xl.sroa.0.0..sroa_idx35.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload36.i = load i64* %xl.sroa.0.0..sroa_idx35.i, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36.i, i64 %3) #20, !noalias !25, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%lpl1.sroa.0.0..sroa_idx1037.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %6, i64* %lpl1.sroa.0.0..sroa_idx1037.i, align 8
%7 = add i32 %2, -1
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit, label %next-block.i.preheader
next-block.i.preheader: ; preds = %entry-block
br label %next-block.i
next-block.i: ; preds = %next-block.i.preheader, %next-block.i
%9 = phi i32 [ %21, %next-block.i ], [ %7, %next-block.i.preheader ]
%10 = phi i64 [ %20, %next-block.i ], [ %5, %next-block.i.preheader ]
%wp.039.i = phi %"ll::limb::Limb"* [ %11, %next-block.i ], [ %0, %next-block.i.preheader ]
%xp.038.i = phi %"ll::limb::Limb"* [ %12, %next-block.i ], [ %1, %next-block.i.preheader ]
%11 = getelementptr inbounds %"ll::limb::Limb"* %wp.039.i, i64 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %xp.038.i, i64 1
%xl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%xl.sroa.0.0.copyload.i = load i64* %xl.sroa.0.0..sroa_idx.i, align 8
%13 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i, i64 %3) #20, !noalias !25, !srcloc !19
%14 = extractvalue { i64, i64 } %13, 0
%15 = extractvalue { i64, i64 } %13, 1
%16 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %15, i64 %10) #20
%17 = extractvalue { i64, i1 } %16, 0
%18 = extractvalue { i64, i1 } %16, 1
%19 = zext i1 %18 to i64
%20 = add i64 %19, %14
%lpl1.sroa.0.0..sroa_idx10.i = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
store i64 %17, i64* %lpl1.sroa.0.0..sroa_idx10.i, align 8
%21 = add i32 %9, -1
%22 = icmp eq i32 %21, 0
br i1 %22, label %_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit.loopexit, label %next-block.i
_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit.loopexit: ; preds = %next-block.i
%.lcssa = phi i64 [ %20, %next-block.i ]
br label %_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit
_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit: ; preds = %_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit.loopexit, %entry-block
%.lcssa.i = phi i64 [ %5, %entry-block ], [ %.lcssa, %_ZN2ll3mul13mul_1_generic20hba4c0d7526ed38d1psaE.exit.loopexit ]
ret i64 %.lcssa.i
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3mul16addmul_1_generic20hfb1bd8912bdc1db0cvaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #0 {
entry-block:
br label %loop_body
loop_body: ; preds = %next-block, %entry-block
%cl.sroa.0.0 = phi i64 [ 0, %entry-block ], [ %18, %next-block ]
%n.0 = phi i32 [ %2, %entry-block ], [ %19, %next-block ]
%xp.0 = phi %"ll::limb::Limb"* [ %1, %entry-block ], [ %22, %next-block ]
%wp.0 = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %21, %next-block ]
%xl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 0, i32 0
%xl.sroa.0.0.copyload = load i64* %xl.sroa.0.0..sroa_idx, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload, i64 %3) #20, !noalias !32, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 %cl.sroa.0.0) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%10 = zext i1 %9 to i64
%11 = add i64 %10, %5
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.0, i64 0, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %8) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = zext i1 %16 to i64
%18 = add i64 %11, %17
store i64 %15, i64* %12, align 8
%19 = add i32 %n.0, -1
%20 = icmp eq i32 %19, 0
br i1 %20, label %clean_ast_1393_, label %next-block
clean_ast_1393_: ; preds = %loop_body
%.lcssa = phi i64 [ %18, %loop_body ]
ret i64 %.lcssa
next-block: ; preds = %loop_body
%21 = getelementptr inbounds %"ll::limb::Limb"* %wp.0, i64 1
%22 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 1
br label %loop_body
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #3 {
entry-block:
br label %loop_body.i
loop_body.i: ; preds = %next-block.i, %entry-block
%cl.sroa.0.0.i = phi i64 [ 0, %entry-block ], [ %18, %next-block.i ]
%n.0.i = phi i32 [ %2, %entry-block ], [ %19, %next-block.i ]
%xp.0.i = phi %"ll::limb::Limb"* [ %1, %entry-block ], [ %22, %next-block.i ]
%wp.0.i = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %21, %next-block.i ]
%xl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i, i64 0, i32 0
%xl.sroa.0.0.copyload.i = load i64* %xl.sroa.0.0..sroa_idx.i, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i, i64 %3) #20, !noalias !39, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 %cl.sroa.0.0.i) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%10 = zext i1 %9 to i64
%11 = add i64 %10, %5
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i, i64 0, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %13, i64 %8) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = zext i1 %16 to i64
%18 = add i64 %11, %17
store i64 %15, i64* %12, align 8
%19 = add i32 %n.0.i, -1
%20 = icmp eq i32 %19, 0
br i1 %20, label %_ZN2ll3mul16addmul_1_generic20hfb1bd8912bdc1db0cvaE.exit, label %next-block.i
next-block.i: ; preds = %loop_body.i
%21 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i, i64 1
%22 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i, i64 1
br label %loop_body.i
_ZN2ll3mul16addmul_1_generic20hfb1bd8912bdc1db0cvaE.exit: ; preds = %loop_body.i
%.lcssa = phi i64 [ %18, %loop_body.i ]
ret i64 %.lcssa
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3mul16submul_1_generic20h7cc7f897f246fda9fyaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #0 {
entry-block:
br label %loop_body
loop_body: ; preds = %next-block, %entry-block
%cl.sroa.0.0 = phi i64 [ 0, %entry-block ], [ %18, %next-block ]
%n.0 = phi i32 [ %2, %entry-block ], [ %19, %next-block ]
%xp.0 = phi %"ll::limb::Limb"* [ %1, %entry-block ], [ %22, %next-block ]
%wp.0 = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %21, %next-block ]
%xl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 0, i32 0
%xl.sroa.0.0.copyload = load i64* %xl.sroa.0.0..sroa_idx, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload, i64 %3) #20, !noalias !46, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 %cl.sroa.0.0) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%10 = zext i1 %9 to i64
%11 = add i64 %10, %5
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.0, i64 0, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %13, i64 %8) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = zext i1 %16 to i64
%18 = add i64 %11, %17
store i64 %15, i64* %12, align 8
%19 = add i32 %n.0, -1
%20 = icmp eq i32 %19, 0
br i1 %20, label %clean_ast_1582_, label %next-block
clean_ast_1582_: ; preds = %loop_body
%.lcssa = phi i64 [ %18, %loop_body ]
ret i64 %.lcssa
next-block: ; preds = %loop_body
%21 = getelementptr inbounds %"ll::limb::Limb"* %wp.0, i64 1
%22 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 1
br label %loop_body
}
; Function Attrs: inlinehint nounwind uwtable
define i64 @_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #3 {
entry-block:
br label %loop_body.i
loop_body.i: ; preds = %next-block.i, %entry-block
%cl.sroa.0.0.i = phi i64 [ 0, %entry-block ], [ %18, %next-block.i ]
%n.0.i = phi i32 [ %2, %entry-block ], [ %19, %next-block.i ]
%xp.0.i = phi %"ll::limb::Limb"* [ %1, %entry-block ], [ %22, %next-block.i ]
%wp.0.i = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %21, %next-block.i ]
%xl.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i, i64 0, i32 0
%xl.sroa.0.0.copyload.i = load i64* %xl.sroa.0.0..sroa_idx.i, align 8
%4 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i, i64 %3) #20, !noalias !53, !srcloc !19
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %6, i64 %cl.sroa.0.0.i) #20
%8 = extractvalue { i64, i1 } %7, 0
%9 = extractvalue { i64, i1 } %7, 1
%10 = zext i1 %9 to i64
%11 = add i64 %10, %5
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i, i64 0, i32 0
%13 = load i64* %12, align 8
%14 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %13, i64 %8) #20
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
%17 = zext i1 %16 to i64
%18 = add i64 %11, %17
store i64 %15, i64* %12, align 8
%19 = add i32 %n.0.i, -1
%20 = icmp eq i32 %19, 0
br i1 %20, label %_ZN2ll3mul16submul_1_generic20h7cc7f897f246fda9fyaE.exit, label %next-block.i
next-block.i: ; preds = %loop_body.i
%21 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i, i64 1
%22 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i, i64 1
br label %loop_body.i
_ZN2ll3mul16submul_1_generic20h7cc7f897f246fda9fyaE.exit: ; preds = %loop_body.i
%.lcssa = phi i64 [ %18, %loop_body.i ]
ret i64 %.lcssa
}
; Function Attrs: uwtable
define void @_ZN2ll3mul3mul20hc387f8a5db1f9a7ciBaE(%"ll::limb::Limb"*, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*, i32) unnamed_addr #6 {
entry-block:
%5 = icmp slt i32 %4, 21
br i1 %5, label %then-block-1839-, label %else-block
then-block-1839-: ; preds = %entry-block
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %2, %"ll::limb::Limb"* %3, i32 %4)
br label %join5
else-block: ; preds = %entry-block
%6 = icmp slt i32 %4, 101
%7 = shl i32 %2, 1
%8 = shl i32 %2, 2
%scratch_amount.0 = select i1 %6, i32 %7, i32 %8
%9 = sext i32 %scratch_amount.0 to i64
%10 = shl nsw i64 %9, 3
%11 = add nsw i64 %10, 16
%12 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %11)
to label %else-block.i unwind label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit41
else-block.i: ; preds = %else-block
%13 = getelementptr inbounds i8* %12, i64 8
%14 = bitcast i8* %13 to i64*
store i64 %11, i64* %14, align 8, !noalias !60
%15 = bitcast i8* %12 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %15, align 8, !noalias !60
%16 = bitcast i8* %12 to %"mem::Marker"*
%17 = getelementptr inbounds i8* %12, i64 16
%18 = bitcast i8* %17 to %"ll::limb::Limb"*
%19 = mul i32 %4, 3
%20 = icmp sge i32 %7, %19
br i1 %6, label %then-block-2018-.i, label %else-block2.i
then-block-2018-.i: ; preds = %else-block.i
br i1 %20, label %then-block-2029-.i, label %else-block1.i
then-block-2029-.i: ; preds = %then-block-2018-.i
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %2, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %18)
to label %while_body.i.i44.preheader unwind label %while_body.i.i.preheader
else-block1.i: ; preds = %then-block-2018-.i
invoke fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %2, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %18)
to label %while_body.i.i44.preheader unwind label %while_body.i.i.preheader
else-block2.i: ; preds = %else-block.i
br i1 %20, label %then-block-2062-.i, label %else-block3.i
then-block-2062-.i: ; preds = %else-block2.i
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %2, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %18)
to label %while_body.i.i44.preheader unwind label %while_body.i.i.preheader
else-block3.i: ; preds = %else-block2.i
invoke fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %2, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %18)
to label %while_body.i.i44.preheader unwind label %while_body.i.i.preheader
while_body.i.i44.preheader: ; preds = %then-block-2029-.i, %else-block1.i, %then-block-2062-.i, %else-block3.i
br label %while_body.i.i44
_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit41: ; preds = %else-block
%21 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract = extractvalue { i8*, i32 } %21, 0
%.fca.1.extract = extractvalue { i8*, i32 } %21, 1
br label %clean_custom_
clean_custom_.loopexit: ; preds = %while_body.i.i
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit41
%.sroa.4.0 = phi i32 [ %.fca.1.extract, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit41 ], [ %.fca.1.extract11, %clean_custom_.loopexit ]
%.sroa.0.0 = phi i8* [ %.fca.0.extract, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit41 ], [ %.fca.0.extract9, %clean_custom_.loopexit ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.4.0, 1
resume { i8*, i32 } %.fca.1.insert
while_body.i.i44: ; preds = %while_body.i.i44.preheader, %while_body.i.i44
%mark.09.i.i43 = phi %"mem::Marker"* [ %23, %while_body.i.i44 ], [ %16, %while_body.i.i44.preheader ]
%22 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i43, i64 0, i32 0
%23 = load %"mem::Marker"** %22, align 8, !noalias !65
%24 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i43, i64 0, i32 1
%25 = load i64* %24, align 8, !noalias !65
%26 = bitcast %"mem::Marker"* %mark.09.i.i43 to i8*
tail call void @je_sdallocx(i8* %26, i64 %25, i32 0)
%27 = icmp eq %"mem::Marker"* %23, null
br i1 %27, label %join5.loopexit, label %while_body.i.i44
while_body.i.i.preheader: ; preds = %else-block3.i, %then-block-2062-.i, %else-block1.i, %then-block-2029-.i
%28 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract9 = extractvalue { i8*, i32 } %28, 0
%.fca.1.extract11 = extractvalue { i8*, i32 } %28, 1
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i.preheader, %while_body.i.i
%mark.09.i.i = phi %"mem::Marker"* [ %30, %while_body.i.i ], [ %16, %while_body.i.i.preheader ]
%29 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 0
%30 = load %"mem::Marker"** %29, align 8, !noalias !68
%31 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 1
%32 = load i64* %31, align 8, !noalias !68
%33 = bitcast %"mem::Marker"* %mark.09.i.i to i8*
tail call void @je_sdallocx(i8* %33, i64 %32, i32 0)
%34 = icmp eq %"mem::Marker"* %30, null
br i1 %34, label %clean_custom_.loopexit, label %while_body.i.i
join5.loopexit: ; preds = %while_body.i.i44
br label %join5
join5: ; preds = %join5.loopexit, %then-block-1839-
ret void
}
; Function Attrs: nounwind uwtable
define internal fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%5 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%6 = load i64* %5, align 8
%xl.sroa.0.0..sroa_idx35.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload36.i.i = load i64* %xl.sroa.0.0..sroa_idx35.i.i, align 8
%7 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36.i.i, i64 %6) #20, !noalias !71, !srcloc !19
%8 = extractvalue { i64, i64 } %7, 0
%9 = extractvalue { i64, i64 } %7, 1
%lpl1.sroa.0.0..sroa_idx1037.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %9, i64* %lpl1.sroa.0.0..sroa_idx1037.i.i, align 8
%10 = add i32 %2, -1
%11 = icmp eq i32 %10, 0
br i1 %11, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %entry-block
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i.preheader, %next-block.i.i
%12 = phi i32 [ %24, %next-block.i.i ], [ %10, %next-block.i.i.preheader ]
%13 = phi i64 [ %23, %next-block.i.i ], [ %8, %next-block.i.i.preheader ]
%wp.039.i.i = phi %"ll::limb::Limb"* [ %14, %next-block.i.i ], [ %0, %next-block.i.i.preheader ]
%xp.038.i.i = phi %"ll::limb::Limb"* [ %15, %next-block.i.i ], [ %1, %next-block.i.i.preheader ]
%14 = getelementptr inbounds %"ll::limb::Limb"* %wp.039.i.i, i64 1
%15 = getelementptr inbounds %"ll::limb::Limb"* %xp.038.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %15, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%16 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i, i64 %6) #20, !noalias !71, !srcloc !19
%17 = extractvalue { i64, i64 } %16, 0
%18 = extractvalue { i64, i64 } %16, 1
%19 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %18, i64 %13) #20
%20 = extractvalue { i64, i1 } %19, 0
%21 = extractvalue { i64, i1 } %19, 1
%22 = zext i1 %21 to i64
%23 = add i64 %22, %17
%lpl1.sroa.0.0..sroa_idx10.i.i = getelementptr inbounds %"ll::limb::Limb"* %14, i64 0, i32 0
store i64 %20, i64* %lpl1.sroa.0.0..sroa_idx10.i.i, align 8
%24 = add i32 %12, -1
%25 = icmp eq i32 %24, 0
br i1 %25, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.loopexit, label %next-block.i.i
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.loopexit: ; preds = %next-block.i.i
%.lcssa57 = phi i64 [ %23, %next-block.i.i ]
br label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.loopexit, %entry-block
%.lcssa.i.i = phi i64 [ %8, %entry-block ], [ %.lcssa57, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.loopexit ]
%26 = sext i32 %2 to i64
%27 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %26, i32 0
store i64 %.lcssa.i.i, i64* %27, align 8
%ys.051 = add i32 %4, -1
%28 = icmp sgt i32 %ys.051, 0
br i1 %28, label %while_body.lr.ph, label %while_exit
while_body.lr.ph: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit
%.sum = add nsw i64 %26, 1
br label %while_body
while_exit.loopexit: ; preds = %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit
ret void
while_body: ; preds = %while_body.lr.ph, %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit
%ys.053 = phi i32 [ %ys.051, %while_body.lr.ph ], [ %ys.0, %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit ]
%.pn = phi %"ll::limb::Limb"* [ %3, %while_body.lr.ph ], [ %30, %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit ]
%.pn54 = phi %"ll::limb::Limb"* [ %0, %while_body.lr.ph ], [ %29, %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit ]
%29 = getelementptr inbounds %"ll::limb::Limb"* %.pn54, i64 1
%30 = getelementptr inbounds %"ll::limb::Limb"* %.pn, i64 1
%31 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 0, i32 0
%32 = load i64* %31, align 8
br label %loop_body.i.i
loop_body.i.i: ; preds = %next-block.i.i48, %while_body
%cl.sroa.0.0.i.i = phi i64 [ 0, %while_body ], [ %48, %next-block.i.i48 ]
%n.0.i.i = phi i32 [ %2, %while_body ], [ %49, %next-block.i.i48 ]
%xp.0.i.i = phi %"ll::limb::Limb"* [ %1, %while_body ], [ %52, %next-block.i.i48 ]
%33 = phi %"ll::limb::Limb"* [ %.pn54, %while_body ], [ %wp.0.i.i, %next-block.i.i48 ]
%wp.0.i.i = phi %"ll::limb::Limb"* [ %29, %while_body ], [ %51, %next-block.i.i48 ]
%xl.sroa.0.0..sroa_idx.i.i46 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i47 = load i64* %xl.sroa.0.0..sroa_idx.i.i46, align 8
%34 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i47, i64 %32) #20, !noalias !78, !srcloc !19
%35 = extractvalue { i64, i64 } %34, 0
%36 = extractvalue { i64, i64 } %34, 1
%37 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %36, i64 %cl.sroa.0.0.i.i) #20
%38 = extractvalue { i64, i1 } %37, 0
%39 = extractvalue { i64, i1 } %37, 1
%40 = zext i1 %39 to i64
%41 = add i64 %40, %35
%42 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 1, i32 0
%43 = load i64* %42, align 8
%44 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %43, i64 %38) #20
%45 = extractvalue { i64, i1 } %44, 0
%46 = extractvalue { i64, i1 } %44, 1
%47 = zext i1 %46 to i64
%48 = add i64 %41, %47
store i64 %45, i64* %42, align 8
%49 = add i32 %n.0.i.i, -1
%50 = icmp eq i32 %49, 0
br i1 %50, label %_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit, label %next-block.i.i48
next-block.i.i48: ; preds = %loop_body.i.i
%51 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 2
%52 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 1
br label %loop_body.i.i
_ZN2ll3mul8addmul_120h4ccdd4a87d76536dRxaE.exit: ; preds = %loop_body.i.i
%.lcssa = phi i64 [ %48, %loop_body.i.i ]
%53 = getelementptr inbounds %"ll::limb::Limb"* %.pn54, i64 %.sum, i32 0
store i64 %.lcssa, i64* %53, align 8
%ys.0 = add nsw i32 %ys.053, -1
%54 = icmp sgt i32 %ys.053, 1
br i1 %54, label %while_body, label %while_exit.loopexit
}
declare i32 @rust_eh_personality(i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*) unnamed_addr #7
; Function Attrs: uwtable
define void @_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE(%"mem::TmpAllocator"* noalias nocapture readonly dereferenceable(16)) unnamed_addr #6 {
entry-block:
%1 = getelementptr inbounds %"mem::TmpAllocator"* %0, i64 0, i32 0
%2 = load %"mem::Marker"** %1, align 8
%3 = icmp eq %"mem::Marker"* %2, null
br i1 %3, label %while_exit, label %while_body.preheader
while_body.preheader: ; preds = %entry-block
br label %while_body
while_exit.loopexit: ; preds = %while_body
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
ret void
while_body: ; preds = %while_body.preheader, %while_body
%mark.09 = phi %"mem::Marker"* [ %5, %while_body ], [ %2, %while_body.preheader ]
%4 = getelementptr inbounds %"mem::Marker"* %mark.09, i64 0, i32 0
%5 = load %"mem::Marker"** %4, align 8
%6 = getelementptr inbounds %"mem::Marker"* %mark.09, i64 0, i32 1
%7 = load i64* %6, align 8
%8 = bitcast %"mem::Marker"* %mark.09 to i8*
tail call void @je_sdallocx(i8* %8, i64 %7, i32 0)
%9 = icmp eq %"mem::Marker"* %5, null
br i1 %9, label %while_exit.loopexit, label %while_body
}
; Function Attrs: uwtable
define internal fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"*, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*) unnamed_addr #6 {
entry-block:
%6 = icmp slt i32 %4, 21
br i1 %6, label %then-block-2005-.i220, label %else-block.i221
then-block-2005-.i220: ; preds = %entry-block
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %4, %"ll::limb::Limb"* %3, i32 %4)
%.pre = mul i32 %4, 3
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
else-block.i221: ; preds = %entry-block
%7 = icmp slt i32 %4, 101
%8 = shl i32 %4, 1
%9 = mul i32 %4, 3
%10 = icmp sge i32 %8, %9
br i1 %7, label %then-block-2018-.i222, label %else-block2.i225
then-block-2018-.i222: ; preds = %else-block.i221
br i1 %10, label %then-block-2029-.i223, label %else-block1.i224
then-block-2029-.i223: ; preds = %then-block-2018-.i222
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
else-block1.i224: ; preds = %then-block-2018-.i222
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
else-block2.i225: ; preds = %else-block.i221
br i1 %10, label %then-block-2062-.i226, label %else-block3.i227
then-block-2062-.i226: ; preds = %else-block2.i225
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
else-block3.i227: ; preds = %else-block2.i225
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228: ; preds = %then-block-2005-.i220, %then-block-2029-.i223, %else-block1.i224, %then-block-2062-.i226, %else-block3.i227
%.pre-phi = phi i32 [ %.pre, %then-block-2005-.i220 ], [ %9, %then-block-2029-.i223 ], [ %9, %else-block1.i224 ], [ %9, %then-block-2062-.i226 ], [ %9, %else-block3.i227 ]
%11 = sext i32 %4 to i64
%12 = sext i32 %.pre-phi to i64
%13 = shl nsw i64 %12, 3
%14 = add nsw i64 %13, 16
%15 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %14)
to label %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit unwind label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit157
_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
%16 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %11
%17 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %11
%18 = getelementptr inbounds i8* %15, i64 8
%19 = bitcast i8* %18 to i64*
store i64 %14, i64* %19, align 8, !noalias !85
%20 = bitcast i8* %15 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %20, align 8, !noalias !85
%21 = bitcast i8* %15 to %"mem::Marker"*
%22 = getelementptr inbounds i8* %15, i64 16
%23 = bitcast i8* %22 to %"ll::limb::Limb"*
%xs.0250 = sub i32 %2, %4
%24 = shl i32 %4, 1
%25 = icmp slt i32 %xs.0250, %24
br i1 %25, label %while_exit, label %while_body.lr.ph
while_body.lr.ph: ; preds = %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit
%yl.sroa.0.0..sroa_idx45.i.i167 = bitcast i8* %22 to i64*
%26 = add i32 %4, -1
%27 = icmp eq i32 %26, 0
%28 = icmp sgt i32 %4, 0
%29 = icmp slt i32 %4, 101
%30 = icmp sge i32 %24, %.pre-phi
%31 = zext i32 %26 to i64
%32 = add nuw nsw i64 %31, 1
%33 = sext i32 %4 to i64
%34 = add i32 %4, -1
%35 = zext i32 %34 to i64
%36 = add nsw i64 %33, %35
%37 = shl nsw i64 %33, 3
%38 = add nsw i64 %37, 16
%scevgep270 = getelementptr i8* %15, i64 %38
%39 = shl nuw nsw i64 %35, 3
%40 = add nsw i64 %37, %39
%41 = add nsw i64 %40, 16
%scevgep271 = getelementptr i8* %15, i64 %41
%42 = add i32 %4, -1
%43 = add i32 %4, -2
%44 = add i32 %4, -1
br label %while_body
_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit157: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit228
%45 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract = extractvalue { i8*, i32 } %45, 0
%.fca.1.extract = extractvalue { i8*, i32 } %45, 1
br label %clean_custom_
clean_custom_.loopexit: ; preds = %while_body.i.i163
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %cond.i161, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit157
%.sroa.0.0 = phi i8* [ %.fca.0.extract, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit157 ], [ %.fca.0.extract68, %cond.i161 ], [ %.fca.0.extract68, %clean_custom_.loopexit ]
%.sroa.5.0 = phi i32 [ %.fca.1.extract, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit157 ], [ %.fca.1.extract70, %cond.i161 ], [ %.fca.1.extract70, %clean_custom_.loopexit ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.5.0, 1
resume { i8*, i32 } %.fca.1.insert
while_exit.loopexit: ; preds = %while_cond.backedge
%xs.0.lcssa327 = phi i32 [ %xs.0, %while_cond.backedge ]
%.lcssa326 = phi %"ll::limb::Limb"* [ %94, %while_cond.backedge ]
%.lcssa = phi %"ll::limb::Limb"* [ %56, %while_cond.backedge ]
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit
%xs.0.lcssa = phi i32 [ %xs.0250, %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit ], [ %xs.0.lcssa327, %while_exit.loopexit ]
%wp.0.lcssa = phi %"ll::limb::Limb"* [ %16, %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit ], [ %.lcssa326, %while_exit.loopexit ]
%xp.0.lcssa = phi %"ll::limb::Limb"* [ %17, %_ZN3mem12TmpAllocator8allocate20h9617891001830028207E.exit ], [ %.lcssa, %while_exit.loopexit ]
%46 = icmp slt i32 %xs.0.lcssa, %4
br i1 %46, label %else-block, label %then-block-4007-
while_body: ; preds = %while_body.lr.ph, %while_cond.backedge
%xs.0253 = phi i32 [ %xs.0250, %while_body.lr.ph ], [ %xs.0, %while_cond.backedge ]
%47 = phi %"ll::limb::Limb"* [ %0, %while_body.lr.ph ], [ %wp.0252, %while_cond.backedge ]
%wp.0252 = phi %"ll::limb::Limb"* [ %16, %while_body.lr.ph ], [ %94, %while_cond.backedge ]
%48 = phi %"ll::limb::Limb"* [ %1, %while_body.lr.ph ], [ %xp.0251, %while_cond.backedge ]
%xp.0251 = phi %"ll::limb::Limb"* [ %17, %while_body.lr.ph ], [ %56, %while_cond.backedge ]
br i1 %6, label %then-block-2005-.i, label %else-block.i
then-block-2005-.i: ; preds = %while_body
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0251, i32 %4, %"ll::limb::Limb"* %3, i32 %4)
br label %normal-return5
else-block.i: ; preds = %while_body
br i1 %29, label %then-block-2018-.i, label %else-block2.i
then-block-2018-.i: ; preds = %else-block.i
br i1 %30, label %then-block-2029-.i, label %else-block1.i
then-block-2029-.i: ; preds = %then-block-2018-.i
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0251, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %normal-return5 unwind label %cond.i161.loopexit
else-block1.i: ; preds = %then-block-2018-.i
invoke fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0251, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %normal-return5 unwind label %cond.i161.loopexit
else-block2.i: ; preds = %else-block.i
br i1 %30, label %then-block-2062-.i, label %else-block3.i
then-block-2062-.i: ; preds = %else-block2.i
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0251, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %normal-return5 unwind label %cond.i161.loopexit
else-block3.i: ; preds = %else-block2.i
invoke fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0251, i32 %4, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %normal-return5 unwind label %cond.i161.loopexit
cond.i161.loopexit: ; preds = %else-block3.i, %then-block-2062-.i, %else-block1.i, %then-block-2029-.i
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %cond.i161
cond.i161.nonloopexit: ; preds = %else-block3.i214, %then-block-2062-.i213, %else-block1.i211, %then-block-2029-.i210, %else-block3.i201, %then-block-2062-.i200, %else-block1.i198, %then-block-2029-.i197
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %cond.i161
cond.i161: ; preds = %cond.i161.nonloopexit, %cond.i161.loopexit
%lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %cond.i161.loopexit ], [ %lpad.nonloopexit, %cond.i161.nonloopexit ]
%.fca.0.extract68 = extractvalue { i8*, i32 } %lpad.phi, 0
%.fca.1.extract70 = extractvalue { i8*, i32 } %lpad.phi, 1
%49 = icmp eq i8* %15, null
br i1 %49, label %clean_custom_, label %while_body.i.i163.preheader
while_body.i.i163.preheader: ; preds = %cond.i161
br label %while_body.i.i163
while_body.i.i163: ; preds = %while_body.i.i163.preheader, %while_body.i.i163
%mark.09.i.i162 = phi %"mem::Marker"* [ %51, %while_body.i.i163 ], [ %21, %while_body.i.i163.preheader ]
%50 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i162, i64 0, i32 0
%51 = load %"mem::Marker"** %50, align 8, !noalias !90
%52 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i162, i64 0, i32 1
%53 = load i64* %52, align 8, !noalias !90
%54 = bitcast %"mem::Marker"* %mark.09.i.i162 to i8*
tail call void @je_sdallocx(i8* %54, i64 %53, i32 0)
%55 = icmp eq %"mem::Marker"* %51, null
br i1 %55, label %clean_custom_.loopexit, label %while_body.i.i163
normal-return5: ; preds = %else-block3.i, %then-block-2062-.i, %else-block1.i, %then-block-2029-.i, %then-block-2005-.i
%.sum257 = shl nsw i64 %11, 1
%56 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 %.sum257
%xl.sroa.0.0..sroa_idx43.i.i165 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 %11, i32 0
%xl.sroa.0.0.copyload44.i.i166 = load i64* %xl.sroa.0.0..sroa_idx43.i.i165, align 8
%yl.sroa.0.0.copyload46.i.i168 = load i64* %yl.sroa.0.0..sroa_idx45.i.i167, align 8
%57 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i166, i64 %yl.sroa.0.0.copyload46.i.i168) #20
%58 = extractvalue { i64, i1 } %57, 0
%59 = extractvalue { i64, i1 } %57, 1
%.47.i.i169 = zext i1 %59 to i64
store i64 %58, i64* %xl.sroa.0.0..sroa_idx43.i.i165, align 8
br i1 %27, label %normal-return10, label %next-block.i.i181.preheader
next-block.i.i181.preheader: ; preds = %normal-return5
%xtraiter330 = and i32 %42, 1
%lcmp.mod331 = icmp ne i32 %xtraiter330, 0
br i1 %lcmp.mod331, label %next-block.i.i181.prol, label %next-block.i.i181.preheader.split
next-block.i.i181.prol: ; preds = %next-block.i.i181.preheader
%60 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 1
%61 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%xl.sroa.0.0..sroa_idx.i.i175.prol = getelementptr inbounds %"ll::limb::Limb"* %60, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i176.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i175.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i177.prol = getelementptr inbounds %"ll::limb::Limb"* %61, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i178.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i177.prol, align 8
%62 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i176.prol, i64 %yl.sroa.0.0.copyload.i.i178.prol) #20
%63 = extractvalue { i64, i1 } %62, 0
%64 = extractvalue { i64, i1 } %62, 1
%65 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %63, i64 %.47.i.i169) #20
%66 = extractvalue { i64, i1 } %65, 0
%67 = extractvalue { i64, i1 } %65, 1
%68 = or i1 %64, %67
%..i.i179.prol = zext i1 %68 to i64
store i64 %66, i64* %xl.sroa.0.0..sroa_idx.i.i175.prol, align 8
%69 = add i32 %26, -1
%70 = icmp eq i32 %69, 0
br label %next-block.i.i181.preheader.split
next-block.i.i181.preheader.split: ; preds = %next-block.i.i181.prol, %next-block.i.i181.preheader
%..i.i179.lcssa.unr = phi i64 [ 0, %next-block.i.i181.preheader ], [ %..i.i179.prol, %next-block.i.i181.prol ]
%.unr332 = phi i32 [ %26, %next-block.i.i181.preheader ], [ %69, %next-block.i.i181.prol ]
%.52.i.i171.unr = phi i64 [ %.47.i.i169, %next-block.i.i181.preheader ], [ %..i.i179.prol, %next-block.i.i181.prol ]
%wp.051.i.i172.unr = phi %"ll::limb::Limb"* [ %wp.0252, %next-block.i.i181.preheader ], [ %60, %next-block.i.i181.prol ]
%yp.049.i.i174.unr = phi %"ll::limb::Limb"* [ %23, %next-block.i.i181.preheader ], [ %61, %next-block.i.i181.prol ]
%71 = icmp ult i32 %43, 1
br i1 %71, label %normal-return10.loopexit, label %next-block.i.i181.preheader.split.split
next-block.i.i181.preheader.split.split: ; preds = %next-block.i.i181.preheader.split
br label %next-block.i.i181
next-block.i.i181: ; preds = %next-block.i.i181, %next-block.i.i181.preheader.split.split
%72 = phi i32 [ %.unr332, %next-block.i.i181.preheader.split.split ], [ %92, %next-block.i.i181 ]
%.52.i.i171 = phi i64 [ %.52.i.i171.unr, %next-block.i.i181.preheader.split.split ], [ %..i.i179.1, %next-block.i.i181 ]
%wp.051.i.i172 = phi %"ll::limb::Limb"* [ %wp.051.i.i172.unr, %next-block.i.i181.preheader.split.split ], [ %83, %next-block.i.i181 ]
%yp.049.i.i174 = phi %"ll::limb::Limb"* [ %yp.049.i.i174.unr, %next-block.i.i181.preheader.split.split ], [ %84, %next-block.i.i181 ]
%73 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i172, i64 1
%74 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i174, i64 1
%xl.sroa.0.0..sroa_idx.i.i175 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i176 = load i64* %xl.sroa.0.0..sroa_idx.i.i175, align 8
%yl.sroa.0.0..sroa_idx.i.i177 = getelementptr inbounds %"ll::limb::Limb"* %74, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i178 = load i64* %yl.sroa.0.0..sroa_idx.i.i177, align 8
%75 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i176, i64 %yl.sroa.0.0.copyload.i.i178) #20
%76 = extractvalue { i64, i1 } %75, 0
%77 = extractvalue { i64, i1 } %75, 1
%78 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %76, i64 %.52.i.i171) #20
%79 = extractvalue { i64, i1 } %78, 0
%80 = extractvalue { i64, i1 } %78, 1
%81 = or i1 %77, %80
%..i.i179 = zext i1 %81 to i64
store i64 %79, i64* %xl.sroa.0.0..sroa_idx.i.i175, align 8
%82 = add i32 %72, -1
%83 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 1
%84 = getelementptr inbounds %"ll::limb::Limb"* %74, i64 1
%xl.sroa.0.0..sroa_idx.i.i175.1 = getelementptr inbounds %"ll::limb::Limb"* %83, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i176.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i175.1, align 8
%yl.sroa.0.0..sroa_idx.i.i177.1 = getelementptr inbounds %"ll::limb::Limb"* %84, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i178.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i177.1, align 8
%85 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i176.1, i64 %yl.sroa.0.0.copyload.i.i178.1) #20
%86 = extractvalue { i64, i1 } %85, 0
%87 = extractvalue { i64, i1 } %85, 1
%88 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %86, i64 %..i.i179) #20
%89 = extractvalue { i64, i1 } %88, 0
%90 = extractvalue { i64, i1 } %88, 1
%91 = or i1 %87, %90
%..i.i179.1 = zext i1 %91 to i64
store i64 %89, i64* %xl.sroa.0.0..sroa_idx.i.i175.1, align 8
%92 = add i32 %82, -1
%93 = icmp eq i32 %92, 0
br i1 %93, label %normal-return10.loopexit.unr-lcssa, label %next-block.i.i181
normal-return10.loopexit.unr-lcssa: ; preds = %next-block.i.i181
%..i.i179.lcssa.ph = phi i64 [ %..i.i179.1, %next-block.i.i181 ]
br label %normal-return10.loopexit
normal-return10.loopexit: ; preds = %next-block.i.i181.preheader.split, %normal-return10.loopexit.unr-lcssa
%..i.i179.lcssa = phi i64 [ %..i.i179.lcssa.unr, %next-block.i.i181.preheader.split ], [ %..i.i179.lcssa.ph, %normal-return10.loopexit.unr-lcssa ]
br label %normal-return10
normal-return10: ; preds = %normal-return10.loopexit, %normal-return5
%..lcssa.i.i182 = phi i64 [ %.47.i.i169, %normal-return5 ], [ %..i.i179.lcssa, %normal-return10.loopexit ]
%94 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 %.sum257
br i1 %28, label %overflow.checked, label %normal-return13
overflow.checked: ; preds = %normal-return10
%end.idx = add nuw nsw i64 %31, 1
%n.vec = and i64 %32, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %overflow.checked
%scevgep = getelementptr %"ll::limb::Limb"* %wp.0252, i64 %33
%scevgep267 = bitcast %"ll::limb::Limb"* %scevgep to i8*
%bound0 = icmp ule i8* %scevgep267, %scevgep271
%scevgep268 = getelementptr %"ll::limb::Limb"* %wp.0252, i64 %36
%scevgep268269 = bitcast %"ll::limb::Limb"* %scevgep268 to i8*
%bound1 = icmp ule i8* %scevgep270, %scevgep268269
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%95 = add i64 %index, %11
%96 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %95, i32 0
%97 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %95, i32 0
%98 = bitcast i64* %96 to <2 x i64>*
%wide.load = load <2 x i64>* %98, align 8
%99 = getelementptr i64* %96, i64 2
%100 = bitcast i64* %99 to <2 x i64>*
%wide.load275 = load <2 x i64>* %100, align 8
%101 = bitcast i64* %97 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %101, align 8
%102 = getelementptr i64* %97, i64 2
%103 = bitcast i64* %102 to <2 x i64>*
store <2 x i64> %wide.load275, <2 x i64>* %103, align 8
%index.next = add i64 %index, 4
%104 = icmp eq i64 %index.next, %n.vec
br i1 %104, label %middle.block.loopexit, label %vector.body, !llvm.loop !93
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %overflow.checked
%resume.val = phi i64 [ 0, %overflow.checked ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %normal-return13, label %while_body.i189.preheader
while_body.i189.preheader: ; preds = %middle.block
%105 = trunc i64 %resume.val to i32
%106 = sub i32 %4, %105
%107 = sub i32 %44, %105
%xtraiter333 = and i32 %106, 3
%lcmp.mod334 = icmp ne i32 %xtraiter333, 0
br i1 %lcmp.mod334, label %while_body.i189.prol.preheader, label %while_body.i189.preheader.split
while_body.i189.prol.preheader: ; preds = %while_body.i189.preheader
br label %while_body.i189.prol
while_body.i189.prol: ; preds = %while_body.i189.prol.preheader, %while_body.i189.prol
%indvars.iv.i185.prol = phi i64 [ %indvars.iv.next.i186.prol, %while_body.i189.prol ], [ %resume.val, %while_body.i189.prol.preheader ]
%prol.iter335 = phi i32 [ %prol.iter335.sub, %while_body.i189.prol ], [ %xtraiter333, %while_body.i189.prol.preheader ]
%.sum.prol = add i64 %indvars.iv.i185.prol, %11
%108 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum.prol, i32 0
%109 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %.sum.prol, i32 0
%110 = load i64* %108, align 8
store i64 %110, i64* %109, align 8
%indvars.iv.next.i186.prol = add nuw nsw i64 %indvars.iv.i185.prol, 1
%lftr.wideiv262.prol = trunc i64 %indvars.iv.i185.prol to i32
%exitcond263.prol = icmp eq i32 %lftr.wideiv262.prol, %26
%prol.iter335.sub = sub i32 %prol.iter335, 1
%prol.iter335.cmp = icmp ne i32 %prol.iter335.sub, 0
br i1 %prol.iter335.cmp, label %while_body.i189.prol, label %while_body.i189.preheader.split.loopexit, !llvm.loop !94
while_body.i189.preheader.split.loopexit: ; preds = %while_body.i189.prol
%indvars.iv.i185.unr.ph = phi i64 [ %indvars.iv.next.i186.prol, %while_body.i189.prol ]
br label %while_body.i189.preheader.split
while_body.i189.preheader.split: ; preds = %while_body.i189.preheader.split.loopexit, %while_body.i189.preheader
%indvars.iv.i185.unr = phi i64 [ %resume.val, %while_body.i189.preheader ], [ %indvars.iv.i185.unr.ph, %while_body.i189.preheader.split.loopexit ]
%111 = icmp ult i32 %107, 3
br i1 %111, label %normal-return13.loopexit, label %while_body.i189.preheader.split.split
while_body.i189.preheader.split.split: ; preds = %while_body.i189.preheader.split
br label %while_body.i189
while_body.i189: ; preds = %while_body.i189, %while_body.i189.preheader.split.split
%indvars.iv.i185 = phi i64 [ %indvars.iv.i185.unr, %while_body.i189.preheader.split.split ], [ %indvars.iv.next.i186.3, %while_body.i189 ]
%.sum = add i64 %indvars.iv.i185, %11
%112 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum, i32 0
%113 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %.sum, i32 0
%114 = load i64* %112, align 8
store i64 %114, i64* %113, align 8
%indvars.iv.next.i186 = add nuw nsw i64 %indvars.iv.i185, 1
%lftr.wideiv262 = trunc i64 %indvars.iv.i185 to i32
%.sum.1 = add i64 %indvars.iv.next.i186, %11
%115 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum.1, i32 0
%116 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %.sum.1, i32 0
%117 = load i64* %115, align 8
store i64 %117, i64* %116, align 8
%indvars.iv.next.i186.1 = add nuw nsw i64 %indvars.iv.next.i186, 1
%lftr.wideiv262.1 = trunc i64 %indvars.iv.next.i186 to i32
%.sum.2 = add i64 %indvars.iv.next.i186.1, %11
%118 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum.2, i32 0
%119 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %.sum.2, i32 0
%120 = load i64* %118, align 8
store i64 %120, i64* %119, align 8
%indvars.iv.next.i186.2 = add nuw nsw i64 %indvars.iv.next.i186.1, 1
%lftr.wideiv262.2 = trunc i64 %indvars.iv.next.i186.1 to i32
%.sum.3 = add i64 %indvars.iv.next.i186.2, %11
%121 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum.3, i32 0
%122 = getelementptr inbounds %"ll::limb::Limb"* %wp.0252, i64 %.sum.3, i32 0
%123 = load i64* %121, align 8
store i64 %123, i64* %122, align 8
%indvars.iv.next.i186.3 = add nuw nsw i64 %indvars.iv.next.i186.2, 1
%lftr.wideiv262.3 = trunc i64 %indvars.iv.next.i186.2 to i32
%exitcond263.3 = icmp eq i32 %lftr.wideiv262.3, %26
br i1 %exitcond263.3, label %normal-return13.loopexit.unr-lcssa, label %while_body.i189, !llvm.loop !95
normal-return13.loopexit.unr-lcssa: ; preds = %while_body.i189
br label %normal-return13.loopexit
normal-return13.loopexit: ; preds = %while_body.i189.preheader.split, %normal-return13.loopexit.unr-lcssa
br label %normal-return13
normal-return13: ; preds = %normal-return13.loopexit, %middle.block, %normal-return10
%124 = getelementptr inbounds %"ll::limb::Limb"* %94, i64 0, i32 0
%125 = load i64* %124, align 8
%126 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %125, i64 %..lcssa.i.i182) #20
%127 = extractvalue { i64, i1 } %126, 0
%128 = extractvalue { i64, i1 } %126, 1
store i64 %127, i64* %124, align 8
br i1 %128, label %while_body.i159.preheader, label %while_cond.backedge
while_body.i159.preheader: ; preds = %normal-return13
br label %while_body.i159
while_cond.backedge.loopexit: ; preds = %while_body.i159
br label %while_cond.backedge
while_cond.backedge: ; preds = %while_cond.backedge.loopexit, %normal-return13
%xs.0 = sub i32 %xs.0253, %4
%129 = icmp slt i32 %xs.0, %24
br i1 %129, label %while_exit.loopexit, label %while_body
while_body.i159: ; preds = %while_body.i159.preheader, %while_body.i159
%ptr.023.i158 = phi %"ll::limb::Limb"* [ %130, %while_body.i159 ], [ %94, %while_body.i159.preheader ]
%130 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i158, i64 1
%131 = getelementptr inbounds %"ll::limb::Limb"* %130, i64 0, i32 0
%132 = load i64* %131, align 8
%133 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %132, i64 1) #20
%134 = extractvalue { i64, i1 } %133, 0
%135 = extractvalue { i64, i1 } %133, 1
store i64 %134, i64* %131, align 8
br i1 %135, label %while_body.i159, label %while_cond.backedge.loopexit
then-block-4007-: ; preds = %while_exit
br i1 %6, label %then-block-2005-.i194, label %else-block.i195
then-block-2005-.i194: ; preds = %then-block-4007-
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %3, i32 %4)
br label %join
else-block.i195: ; preds = %then-block-4007-
%136 = icmp slt i32 %4, 101
%137 = shl i32 %xs.0.lcssa, 1
%138 = icmp sge i32 %137, %.pre-phi
br i1 %136, label %then-block-2018-.i196, label %else-block2.i199
then-block-2018-.i196: ; preds = %else-block.i195
br i1 %138, label %then-block-2029-.i197, label %else-block1.i198
then-block-2029-.i197: ; preds = %then-block-2018-.i196
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block1.i198: ; preds = %then-block-2018-.i196
invoke fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block2.i199: ; preds = %else-block.i195
br i1 %138, label %then-block-2062-.i200, label %else-block3.i201
then-block-2062-.i200: ; preds = %else-block2.i199
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block3.i201: ; preds = %else-block2.i199
invoke fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block: ; preds = %while_exit
%139 = icmp slt i32 %xs.0.lcssa, 21
br i1 %139, label %then-block-2005-.i207, label %else-block.i208
then-block-2005-.i207: ; preds = %else-block
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa)
br label %join
else-block.i208: ; preds = %else-block
%140 = icmp slt i32 %xs.0.lcssa, 101
%141 = mul i32 %xs.0.lcssa, 3
%142 = icmp sge i32 %24, %141
br i1 %140, label %then-block-2018-.i209, label %else-block2.i212
then-block-2018-.i209: ; preds = %else-block.i208
br i1 %142, label %then-block-2029-.i210, label %else-block1.i211
then-block-2029-.i210: ; preds = %then-block-2018-.i209
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block1.i211: ; preds = %then-block-2018-.i209
invoke fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block2.i212: ; preds = %else-block.i208
br i1 %142, label %then-block-2062-.i213, label %else-block3.i214
then-block-2062-.i213: ; preds = %else-block2.i212
invoke fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
else-block3.i214: ; preds = %else-block2.i212
invoke fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %23, %"ll::limb::Limb"* %3, i32 %4, %"ll::limb::Limb"* %xp.0.lcssa, i32 %xs.0.lcssa, %"ll::limb::Limb"* %5)
to label %join unwind label %cond.i161.nonloopexit
join: ; preds = %then-block-2005-.i207, %then-block-2029-.i210, %else-block1.i211, %then-block-2062-.i213, %else-block3.i214, %then-block-2005-.i194, %then-block-2029-.i197, %else-block1.i198, %then-block-2062-.i200, %else-block3.i201
%xl.sroa.0.0..sroa_idx43.i.i = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i = bitcast i8* %22 to i64*
%yl.sroa.0.0.copyload46.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%143 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i, i64 %yl.sroa.0.0.copyload46.i.i) #20
%144 = extractvalue { i64, i1 } %143, 0
%145 = extractvalue { i64, i1 } %143, 1
%.47.i.i = zext i1 %145 to i64
store i64 %144, i64* %xl.sroa.0.0..sroa_idx43.i.i, align 8
%146 = add i32 %4, -1
%147 = icmp eq i32 %146, 0
br i1 %147, label %normal-return26, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %join
%148 = add i32 %4, -1
%149 = add i32 %4, -2
%xtraiter328 = and i32 %148, 1
%lcmp.mod329 = icmp ne i32 %xtraiter328, 0
br i1 %lcmp.mod329, label %next-block.i.i.prol, label %next-block.i.i.preheader.split
next-block.i.i.prol: ; preds = %next-block.i.i.preheader
%150 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 1
%151 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%xl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %150, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %151, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.prol, align 8
%152 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.prol) #20
%153 = extractvalue { i64, i1 } %152, 0
%154 = extractvalue { i64, i1 } %152, 1
%155 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %153, i64 %.47.i.i) #20
%156 = extractvalue { i64, i1 } %155, 0
%157 = extractvalue { i64, i1 } %155, 1
%158 = or i1 %154, %157
%..i.i.prol = zext i1 %158 to i64
store i64 %156, i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%159 = add i32 %146, -1
%160 = icmp eq i32 %159, 0
br label %next-block.i.i.preheader.split
next-block.i.i.preheader.split: ; preds = %next-block.i.i.prol, %next-block.i.i.preheader
%..i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%.unr = phi i32 [ %146, %next-block.i.i.preheader ], [ %159, %next-block.i.i.prol ]
%.52.i.i.unr = phi i64 [ %.47.i.i, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%wp.051.i.i.unr = phi %"ll::limb::Limb"* [ %wp.0.lcssa, %next-block.i.i.preheader ], [ %150, %next-block.i.i.prol ]
%yp.049.i.i.unr = phi %"ll::limb::Limb"* [ %23, %next-block.i.i.preheader ], [ %151, %next-block.i.i.prol ]
%161 = icmp ult i32 %149, 1
br i1 %161, label %normal-return26.loopexit, label %next-block.i.i.preheader.split.split
next-block.i.i.preheader.split.split: ; preds = %next-block.i.i.preheader.split
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i, %next-block.i.i.preheader.split.split
%162 = phi i32 [ %.unr, %next-block.i.i.preheader.split.split ], [ %182, %next-block.i.i ]
%.52.i.i = phi i64 [ %.52.i.i.unr, %next-block.i.i.preheader.split.split ], [ %..i.i.1, %next-block.i.i ]
%wp.051.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.unr, %next-block.i.i.preheader.split.split ], [ %173, %next-block.i.i ]
%yp.049.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.unr, %next-block.i.i.preheader.split.split ], [ %174, %next-block.i.i ]
%163 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i, i64 1
%164 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %163, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %164, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i, align 8
%165 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i, i64 %yl.sroa.0.0.copyload.i.i) #20
%166 = extractvalue { i64, i1 } %165, 0
%167 = extractvalue { i64, i1 } %165, 1
%168 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %166, i64 %.52.i.i) #20
%169 = extractvalue { i64, i1 } %168, 0
%170 = extractvalue { i64, i1 } %168, 1
%171 = or i1 %167, %170
%..i.i = zext i1 %171 to i64
store i64 %169, i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%172 = add i32 %162, -1
%173 = getelementptr inbounds %"ll::limb::Limb"* %163, i64 1
%174 = getelementptr inbounds %"ll::limb::Limb"* %164, i64 1
%xl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %173, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %174, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.1, align 8
%175 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.1) #20
%176 = extractvalue { i64, i1 } %175, 0
%177 = extractvalue { i64, i1 } %175, 1
%178 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %176, i64 %..i.i) #20
%179 = extractvalue { i64, i1 } %178, 0
%180 = extractvalue { i64, i1 } %178, 1
%181 = or i1 %177, %180
%..i.i.1 = zext i1 %181 to i64
store i64 %179, i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%182 = add i32 %172, -1
%183 = icmp eq i32 %182, 0
br i1 %183, label %normal-return26.loopexit.unr-lcssa, label %next-block.i.i
normal-return26.loopexit.unr-lcssa: ; preds = %next-block.i.i
%..i.i.lcssa.ph = phi i64 [ %..i.i.1, %next-block.i.i ]
br label %normal-return26.loopexit
normal-return26.loopexit: ; preds = %next-block.i.i.preheader.split, %normal-return26.loopexit.unr-lcssa
%..i.i.lcssa = phi i64 [ %..i.i.lcssa.unr, %next-block.i.i.preheader.split ], [ %..i.i.lcssa.ph, %normal-return26.loopexit.unr-lcssa ]
br label %normal-return26
normal-return26: ; preds = %normal-return26.loopexit, %join
%..lcssa.i.i = phi i64 [ %.47.i.i, %join ], [ %..i.i.lcssa, %normal-return26.loopexit ]
%184 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %11
%185 = icmp sgt i32 %xs.0.lcssa, 0
br i1 %185, label %while_body.lr.ph.i, label %normal-return29
while_body.lr.ph.i: ; preds = %normal-return26
%186 = add i32 %xs.0.lcssa, -1
%187 = zext i32 %186 to i64
%188 = add nuw nsw i64 %187, 1
%end.idx289 = add nuw nsw i64 %187, 1
%n.vec291 = and i64 %188, 8589934588
%cmp.zero293 = icmp eq i64 %n.vec291, 0
%189 = sext i32 %4 to i64
%190 = add i32 %xs.0.lcssa, -1
%191 = zext i32 %190 to i64
%192 = shl nsw i64 %189, 3
br i1 %cmp.zero293, label %middle.block286, label %vector.memcheck305
vector.memcheck305: ; preds = %while_body.lr.ph.i
%scevgep295 = getelementptr %"ll::limb::Limb"* %wp.0.lcssa, i64 %189
%scevgep295296 = bitcast %"ll::limb::Limb"* %scevgep295 to i8*
%193 = shl nuw nsw i64 %191, 3
%194 = add nsw i64 %192, %193
%195 = add nsw i64 %194, 16
%scevgep300 = getelementptr i8* %15, i64 %195
%bound0301 = icmp ule i8* %scevgep295296, %scevgep300
%196 = add nsw i64 %192, 16
%scevgep299 = getelementptr i8* %15, i64 %196
%197 = add nsw i64 %189, %191
%scevgep297 = getelementptr %"ll::limb::Limb"* %wp.0.lcssa, i64 %197
%scevgep297298 = bitcast %"ll::limb::Limb"* %scevgep297 to i8*
%bound1302 = icmp ule i8* %scevgep299, %scevgep297298
%memcheck.conflict304 = and i1 %bound0301, %bound1302
br i1 %memcheck.conflict304, label %middle.block286, label %vector.body285.preheader
vector.body285.preheader: ; preds = %vector.memcheck305
br label %vector.body285
vector.body285: ; preds = %vector.body285.preheader, %vector.body285
%index288 = phi i64 [ %index.next311, %vector.body285 ], [ 0, %vector.body285.preheader ]
%198 = add i64 %index288, %11
%199 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %198, i32 0
%200 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %198, i32 0
%201 = bitcast i64* %199 to <2 x i64>*
%wide.load318 = load <2 x i64>* %201, align 8
%202 = getelementptr i64* %199, i64 2
%203 = bitcast i64* %202 to <2 x i64>*
%wide.load319 = load <2 x i64>* %203, align 8
%204 = bitcast i64* %200 to <2 x i64>*
store <2 x i64> %wide.load318, <2 x i64>* %204, align 8
%205 = getelementptr i64* %200, i64 2
%206 = bitcast i64* %205 to <2 x i64>*
store <2 x i64> %wide.load319, <2 x i64>* %206, align 8
%index.next311 = add i64 %index288, 4
%207 = icmp eq i64 %index.next311, %n.vec291
br i1 %207, label %middle.block286.loopexit, label %vector.body285, !llvm.loop !96
middle.block286.loopexit: ; preds = %vector.body285
br label %middle.block286
middle.block286: ; preds = %middle.block286.loopexit, %vector.memcheck305, %while_body.lr.ph.i
%resume.val306 = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck305 ], [ %n.vec291, %middle.block286.loopexit ]
%cmp.n310 = icmp eq i64 %end.idx289, %resume.val306
br i1 %cmp.n310, label %normal-return29, label %while_body.i153.preheader
while_body.i153.preheader: ; preds = %middle.block286
%208 = trunc i64 %resume.val306 to i32
%209 = sub i32 %xs.0.lcssa, %208
%210 = add i32 %xs.0.lcssa, -1
%211 = sub i32 %210, %208
%xtraiter = and i32 %209, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i153.prol, label %while_body.i153.preheader.split
while_body.i153.prol: ; preds = %while_body.i153.prol, %while_body.i153.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i153.prol ], [ %resume.val306, %while_body.i153.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i153.preheader ], [ %prol.iter.sub, %while_body.i153.prol ]
%.sum244.prol = add i64 %indvars.iv.i.prol, %11
%212 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum244.prol, i32 0
%213 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %.sum244.prol, i32 0
%214 = load i64* %212, align 8
store i64 %214, i64* %213, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %186
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i153.prol, label %while_body.i153.preheader.split, !llvm.loop !97
while_body.i153.preheader.split: ; preds = %while_body.i153.prol, %while_body.i153.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val306, %while_body.i153.preheader ], [ %indvars.iv.next.i.prol, %while_body.i153.prol ]
%215 = icmp ult i32 %211, 3
br i1 %215, label %normal-return29.loopexit, label %while_body.i153.preheader.split.split
while_body.i153.preheader.split.split: ; preds = %while_body.i153.preheader.split
br label %while_body.i153
while_body.i153: ; preds = %while_body.i153, %while_body.i153.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i153.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i153 ]
%.sum244 = add i64 %indvars.iv.i, %11
%216 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum244, i32 0
%217 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %.sum244, i32 0
%218 = load i64* %216, align 8
store i64 %218, i64* %217, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%.sum244.1 = add i64 %indvars.iv.next.i, %11
%219 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum244.1, i32 0
%220 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %.sum244.1, i32 0
%221 = load i64* %219, align 8
store i64 %221, i64* %220, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%.sum244.2 = add i64 %indvars.iv.next.i.1, %11
%222 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum244.2, i32 0
%223 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %.sum244.2, i32 0
%224 = load i64* %222, align 8
store i64 %224, i64* %223, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%.sum244.3 = add i64 %indvars.iv.next.i.2, %11
%225 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %.sum244.3, i32 0
%226 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.lcssa, i64 %.sum244.3, i32 0
%227 = load i64* %225, align 8
store i64 %227, i64* %226, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %186
br i1 %exitcond.3, label %normal-return29.loopexit.unr-lcssa, label %while_body.i153, !llvm.loop !98
normal-return29.loopexit.unr-lcssa: ; preds = %while_body.i153
br label %normal-return29.loopexit
normal-return29.loopexit: ; preds = %while_body.i153.preheader.split, %normal-return29.loopexit.unr-lcssa
br label %normal-return29
normal-return29: ; preds = %normal-return29.loopexit, %middle.block286, %normal-return26
%228 = getelementptr inbounds %"ll::limb::Limb"* %184, i64 0, i32 0
%229 = load i64* %228, align 8
%230 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %229, i64 %..lcssa.i.i) #20
%231 = extractvalue { i64, i1 } %230, 0
%232 = extractvalue { i64, i1 } %230, 1
store i64 %231, i64* %228, align 8
br i1 %232, label %while_body.i.preheader, label %cond.i
while_body.i.preheader: ; preds = %normal-return29
br label %while_body.i
while_body.i: ; preds = %while_body.i.preheader, %while_body.i
%ptr.023.i = phi %"ll::limb::Limb"* [ %233, %while_body.i ], [ %184, %while_body.i.preheader ]
%233 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i, i64 1
%234 = getelementptr inbounds %"ll::limb::Limb"* %233, i64 0, i32 0
%235 = load i64* %234, align 8
%236 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %235, i64 1) #20
%237 = extractvalue { i64, i1 } %236, 0
%238 = extractvalue { i64, i1 } %236, 1
store i64 %237, i64* %234, align 8
br i1 %238, label %while_body.i, label %cond.i.loopexit
cond.i.loopexit: ; preds = %while_body.i
br label %cond.i
cond.i: ; preds = %cond.i.loopexit, %normal-return29
%239 = icmp eq i8* %15, null
br i1 %239, label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %cond.i
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i.preheader, %while_body.i.i
%mark.09.i.i = phi %"mem::Marker"* [ %241, %while_body.i.i ], [ %21, %while_body.i.i.preheader ]
%240 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 0
%241 = load %"mem::Marker"** %240, align 8, !noalias !99
%242 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 1
%243 = load i64* %242, align 8, !noalias !99
%244 = bitcast %"mem::Marker"* %mark.09.i.i to i8*
tail call void @je_sdallocx(i8* %244, i64 %243, i32 0)
%245 = icmp eq %"mem::Marker"* %241, null
br i1 %245, label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit.loopexit, label %while_body.i.i
_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit.loopexit: ; preds = %while_body.i.i
br label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit
_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit: ; preds = %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit.loopexit, %cond.i
ret void
}
; Function Attrs: uwtable
define internal fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"*, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*) unnamed_addr #6 {
entry-block:
%6 = ashr i32 %2, 1
%7 = sub i32 %2, %6
%8 = sub i32 %4, %7
%9 = sext i32 %7 to i64
%10 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %9
%11 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %9
%12 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %9
%13 = icmp eq i32 %7, %6
br i1 %13, label %while_cond.i.preheader, label %else-block1
while_cond.i.preheader: ; preds = %entry-block
br label %while_cond.i
while_cond.i: ; preds = %while_cond.i.preheader, %while_body.i
%i.0.in.i = phi i32 [ %i.0.i, %while_body.i ], [ %6, %while_cond.i.preheader ]
%i.0.i = add i32 %i.0.in.i, -1
%14 = icmp sgt i32 %i.0.i, -1
br i1 %14, label %while_body.i, label %else-block.loopexit
while_body.i: ; preds = %while_cond.i
%15 = sext i32 %i.0.i to i64
%16 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %15, i32 0
%17 = load i64* %16, align 8
%.sum583 = add nsw i64 %15, %9
%18 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum583, i32 0
%19 = load i64* %18, align 8
%20 = icmp eq i64 %17, %19
br i1 %20, label %while_cond.i, label %then-block-13036-.i
then-block-13036-.i: ; preds = %while_body.i
%.lcssa708 = phi i64 [ %19, %while_body.i ]
%.lcssa707 = phi i64 [ %17, %while_body.i ]
%21 = icmp ugt i64 %.lcssa707, %.lcssa708
br i1 %21, label %else-block, label %then-block-2370-
then-block-2370-: ; preds = %then-block-13036-.i
%xl.sroa.0.0..sroa_idx43.i.i = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%22 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i, i64 %yl.sroa.0.0.copyload46.i.i) #20
%23 = extractvalue { i64, i1 } %22, 0
%rl.sroa.0.0..sroa_idx1648.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %23, i64* %rl.sroa.0.0..sroa_idx1648.i.i, align 8
%24 = add nsw i32 %6, -1
%25 = icmp eq i32 %24, 0
br i1 %25, label %join7, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %then-block-2370-
%26 = extractvalue { i64, i1 } %22, 1
%.47.i.i = zext i1 %26 to i64
%27 = add i32 %6, -1
%28 = add i32 %6, -2
%xtraiter741 = and i32 %27, 1
%lcmp.mod742 = icmp ne i32 %xtraiter741, 0
br i1 %lcmp.mod742, label %next-block.i.i.prol, label %next-block.i.i.preheader.split
next-block.i.i.prol: ; preds = %next-block.i.i.preheader
%29 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%30 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 1
%31 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%xl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %30, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.prol, align 8
%32 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.prol) #20
%33 = extractvalue { i64, i1 } %32, 0
%34 = extractvalue { i64, i1 } %32, 1
%35 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %33, i64 %.47.i.i) #20
%36 = extractvalue { i64, i1 } %35, 0
%37 = extractvalue { i64, i1 } %35, 1
%38 = or i1 %34, %37
%..i.i.prol = zext i1 %38 to i64
%rl.sroa.0.0..sroa_idx16.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %29, i64 0, i32 0
store i64 %36, i64* %rl.sroa.0.0..sroa_idx16.i.i.prol, align 8
%39 = add i32 %24, -1
%40 = icmp eq i32 %39, 0
br label %next-block.i.i.preheader.split
next-block.i.i.preheader.split: ; preds = %next-block.i.i.prol, %next-block.i.i.preheader
%.unr743 = phi i32 [ %24, %next-block.i.i.preheader ], [ %39, %next-block.i.i.prol ]
%.52.i.i.unr = phi i64 [ %.47.i.i, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%wp.051.i.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i.preheader ], [ %29, %next-block.i.i.prol ]
%xp.050.i.i.unr = phi %"ll::limb::Limb"* [ %10, %next-block.i.i.preheader ], [ %30, %next-block.i.i.prol ]
%yp.049.i.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i.preheader ], [ %31, %next-block.i.i.prol ]
%41 = icmp ult i32 %28, 1
br i1 %41, label %join7.loopexit699, label %next-block.i.i.preheader.split.split
next-block.i.i.preheader.split.split: ; preds = %next-block.i.i.preheader.split
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i, %next-block.i.i.preheader.split.split
%42 = phi i32 [ %.unr743, %next-block.i.i.preheader.split.split ], [ %64, %next-block.i.i ]
%.52.i.i = phi i64 [ %.52.i.i.unr, %next-block.i.i.preheader.split.split ], [ %..i.i.1, %next-block.i.i ]
%wp.051.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.unr, %next-block.i.i.preheader.split.split ], [ %54, %next-block.i.i ]
%xp.050.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.unr, %next-block.i.i.preheader.split.split ], [ %55, %next-block.i.i ]
%yp.049.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.unr, %next-block.i.i.preheader.split.split ], [ %56, %next-block.i.i ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i, i64 1
%44 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i, i64 1
%45 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %45, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i, align 8
%46 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i, i64 %yl.sroa.0.0.copyload.i.i) #20
%47 = extractvalue { i64, i1 } %46, 0
%48 = extractvalue { i64, i1 } %46, 1
%49 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %47, i64 %.52.i.i) #20
%50 = extractvalue { i64, i1 } %49, 0
%51 = extractvalue { i64, i1 } %49, 1
%52 = or i1 %48, %51
%..i.i = zext i1 %52 to i64
%rl.sroa.0.0..sroa_idx16.i.i = getelementptr inbounds %"ll::limb::Limb"* %43, i64 0, i32 0
store i64 %50, i64* %rl.sroa.0.0..sroa_idx16.i.i, align 8
%53 = add i32 %42, -1
%54 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 1
%55 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 1
%56 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 1
%xl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %55, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %56, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.1, align 8
%57 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.1) #20
%58 = extractvalue { i64, i1 } %57, 0
%59 = extractvalue { i64, i1 } %57, 1
%60 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %58, i64 %..i.i) #20
%61 = extractvalue { i64, i1 } %60, 0
%62 = extractvalue { i64, i1 } %60, 1
%63 = or i1 %59, %62
%..i.i.1 = zext i1 %63 to i64
%rl.sroa.0.0..sroa_idx16.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 0, i32 0
store i64 %61, i64* %rl.sroa.0.0..sroa_idx16.i.i.1, align 8
%64 = add i32 %53, -1
%65 = icmp eq i32 %64, 0
br i1 %65, label %join7.loopexit699.unr-lcssa, label %next-block.i.i
else-block.loopexit: ; preds = %while_cond.i
br label %else-block
else-block: ; preds = %else-block.loopexit, %then-block-13036-.i
%xl.sroa.0.0..sroa_idx43.i.i255 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i256 = load i64* %xl.sroa.0.0..sroa_idx43.i.i255, align 8
%yl.sroa.0.0..sroa_idx45.i.i257 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i258 = load i64* %yl.sroa.0.0..sroa_idx45.i.i257, align 8
%66 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i256, i64 %yl.sroa.0.0.copyload46.i.i258) #20
%67 = extractvalue { i64, i1 } %66, 0
%rl.sroa.0.0..sroa_idx1648.i.i260 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %67, i64* %rl.sroa.0.0..sroa_idx1648.i.i260, align 8
%68 = add nsw i32 %6, -1
%69 = icmp eq i32 %68, 0
br i1 %69, label %join7, label %next-block.i.i271.preheader
next-block.i.i271.preheader: ; preds = %else-block
%70 = extractvalue { i64, i1 } %66, 1
%.47.i.i259 = zext i1 %70 to i64
%71 = add i32 %6, -1
%72 = add i32 %6, -2
%xtraiter738 = and i32 %71, 1
%lcmp.mod739 = icmp ne i32 %xtraiter738, 0
br i1 %lcmp.mod739, label %next-block.i.i271.prol, label %next-block.i.i271.preheader.split
next-block.i.i271.prol: ; preds = %next-block.i.i271.preheader
%73 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%74 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%75 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 1
%xl.sroa.0.0..sroa_idx.i.i265.prol = getelementptr inbounds %"ll::limb::Limb"* %74, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i266.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i265.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i267.prol = getelementptr inbounds %"ll::limb::Limb"* %75, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i268.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i267.prol, align 8
%76 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i266.prol, i64 %yl.sroa.0.0.copyload.i.i268.prol) #20
%77 = extractvalue { i64, i1 } %76, 0
%78 = extractvalue { i64, i1 } %76, 1
%79 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %77, i64 %.47.i.i259) #20
%80 = extractvalue { i64, i1 } %79, 0
%81 = extractvalue { i64, i1 } %79, 1
%82 = or i1 %78, %81
%..i.i269.prol = zext i1 %82 to i64
%rl.sroa.0.0..sroa_idx16.i.i270.prol = getelementptr inbounds %"ll::limb::Limb"* %73, i64 0, i32 0
store i64 %80, i64* %rl.sroa.0.0..sroa_idx16.i.i270.prol, align 8
%83 = add i32 %68, -1
%84 = icmp eq i32 %83, 0
br label %next-block.i.i271.preheader.split
next-block.i.i271.preheader.split: ; preds = %next-block.i.i271.prol, %next-block.i.i271.preheader
%.unr740 = phi i32 [ %68, %next-block.i.i271.preheader ], [ %83, %next-block.i.i271.prol ]
%.52.i.i261.unr = phi i64 [ %.47.i.i259, %next-block.i.i271.preheader ], [ %..i.i269.prol, %next-block.i.i271.prol ]
%wp.051.i.i262.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i271.preheader ], [ %73, %next-block.i.i271.prol ]
%xp.050.i.i263.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i271.preheader ], [ %74, %next-block.i.i271.prol ]
%yp.049.i.i264.unr = phi %"ll::limb::Limb"* [ %10, %next-block.i.i271.preheader ], [ %75, %next-block.i.i271.prol ]
%85 = icmp ult i32 %72, 1
br i1 %85, label %join7.loopexit, label %next-block.i.i271.preheader.split.split
next-block.i.i271.preheader.split.split: ; preds = %next-block.i.i271.preheader.split
br label %next-block.i.i271
next-block.i.i271: ; preds = %next-block.i.i271, %next-block.i.i271.preheader.split.split
%86 = phi i32 [ %.unr740, %next-block.i.i271.preheader.split.split ], [ %108, %next-block.i.i271 ]
%.52.i.i261 = phi i64 [ %.52.i.i261.unr, %next-block.i.i271.preheader.split.split ], [ %..i.i269.1, %next-block.i.i271 ]
%wp.051.i.i262 = phi %"ll::limb::Limb"* [ %wp.051.i.i262.unr, %next-block.i.i271.preheader.split.split ], [ %98, %next-block.i.i271 ]
%xp.050.i.i263 = phi %"ll::limb::Limb"* [ %xp.050.i.i263.unr, %next-block.i.i271.preheader.split.split ], [ %99, %next-block.i.i271 ]
%yp.049.i.i264 = phi %"ll::limb::Limb"* [ %yp.049.i.i264.unr, %next-block.i.i271.preheader.split.split ], [ %100, %next-block.i.i271 ]
%87 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i262, i64 1
%88 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i263, i64 1
%89 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i264, i64 1
%xl.sroa.0.0..sroa_idx.i.i265 = getelementptr inbounds %"ll::limb::Limb"* %88, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i266 = load i64* %xl.sroa.0.0..sroa_idx.i.i265, align 8
%yl.sroa.0.0..sroa_idx.i.i267 = getelementptr inbounds %"ll::limb::Limb"* %89, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i268 = load i64* %yl.sroa.0.0..sroa_idx.i.i267, align 8
%90 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i266, i64 %yl.sroa.0.0.copyload.i.i268) #20
%91 = extractvalue { i64, i1 } %90, 0
%92 = extractvalue { i64, i1 } %90, 1
%93 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %91, i64 %.52.i.i261) #20
%94 = extractvalue { i64, i1 } %93, 0
%95 = extractvalue { i64, i1 } %93, 1
%96 = or i1 %92, %95
%..i.i269 = zext i1 %96 to i64
%rl.sroa.0.0..sroa_idx16.i.i270 = getelementptr inbounds %"ll::limb::Limb"* %87, i64 0, i32 0
store i64 %94, i64* %rl.sroa.0.0..sroa_idx16.i.i270, align 8
%97 = add i32 %86, -1
%98 = getelementptr inbounds %"ll::limb::Limb"* %87, i64 1
%99 = getelementptr inbounds %"ll::limb::Limb"* %88, i64 1
%100 = getelementptr inbounds %"ll::limb::Limb"* %89, i64 1
%xl.sroa.0.0..sroa_idx.i.i265.1 = getelementptr inbounds %"ll::limb::Limb"* %99, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i266.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i265.1, align 8
%yl.sroa.0.0..sroa_idx.i.i267.1 = getelementptr inbounds %"ll::limb::Limb"* %100, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i268.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i267.1, align 8
%101 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i266.1, i64 %yl.sroa.0.0.copyload.i.i268.1) #20
%102 = extractvalue { i64, i1 } %101, 0
%103 = extractvalue { i64, i1 } %101, 1
%104 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %102, i64 %..i.i269) #20
%105 = extractvalue { i64, i1 } %104, 0
%106 = extractvalue { i64, i1 } %104, 1
%107 = or i1 %103, %106
%..i.i269.1 = zext i1 %107 to i64
%rl.sroa.0.0..sroa_idx16.i.i270.1 = getelementptr inbounds %"ll::limb::Limb"* %98, i64 0, i32 0
store i64 %105, i64* %rl.sroa.0.0..sroa_idx16.i.i270.1, align 8
%108 = add i32 %97, -1
%109 = icmp eq i32 %108, 0
br i1 %109, label %join7.loopexit.unr-lcssa, label %next-block.i.i271
else-block1: ; preds = %entry-block
%110 = sext i32 %6 to i64
%111 = sub i32 %7, %6
%112 = icmp sgt i32 %111, 0
br i1 %112, label %while_body.i274.preheader, label %while_cond.i278.preheader
while_body.i274.preheader: ; preds = %else-block1
%113 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %110
br label %while_body.i274
while_body.i274: ; preds = %while_body.i274.preheader, %next-block.i
%np.08.i = phi %"ll::limb::Limb"* [ %117, %next-block.i ], [ %113, %while_body.i274.preheader ]
%nn.07.i = phi i32 [ %118, %next-block.i ], [ %111, %while_body.i274.preheader ]
%114 = getelementptr inbounds %"ll::limb::Limb"* %np.08.i, i64 0, i32 0
%115 = load i64* %114, align 8, !alias.scope !102, !noalias !105
%116 = icmp eq i64 %115, 0
br i1 %116, label %next-block.i, label %else-block5.loopexit702
next-block.i: ; preds = %while_body.i274
%117 = getelementptr inbounds %"ll::limb::Limb"* %np.08.i, i64 1
%118 = add nsw i32 %nn.07.i, -1
%119 = icmp sgt i32 %nn.07.i, 1
br i1 %119, label %while_body.i274, label %while_cond.i278.preheader.loopexit
while_cond.i278.preheader.loopexit: ; preds = %next-block.i
br label %while_cond.i278.preheader
while_cond.i278.preheader: ; preds = %while_cond.i278.preheader.loopexit, %else-block1
br label %while_cond.i278
while_cond.i278: ; preds = %while_cond.i278.preheader, %while_body.i279
%indvars.iv = phi i64 [ %indvars.iv.next, %while_body.i279 ], [ %110, %while_cond.i278.preheader ]
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%120 = icmp sgt i64 %indvars.iv, 0
br i1 %120, label %while_body.i279, label %else-block5.loopexit
while_body.i279: ; preds = %while_cond.i278
%121 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next, i32 0
%122 = load i64* %121, align 8
%.sum582 = add nsw i64 %indvars.iv.next, %9
%123 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum582, i32 0
%124 = load i64* %123, align 8
%125 = icmp eq i64 %122, %124
br i1 %125, label %while_cond.i278, label %then-block-13036-.i281
then-block-13036-.i281: ; preds = %while_body.i279
%.lcssa711 = phi i64 [ %124, %while_body.i279 ]
%.lcssa710 = phi i64 [ %122, %while_body.i279 ]
%126 = icmp ugt i64 %.lcssa710, %.lcssa711
br i1 %126, label %else-block5, label %then-block-2412-
then-block-2412-: ; preds = %then-block-13036-.i281
%xl.sroa.0.0..sroa_idx43.i.i286 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i287 = load i64* %xl.sroa.0.0..sroa_idx43.i.i286, align 8
%yl.sroa.0.0..sroa_idx45.i.i288 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i289 = load i64* %yl.sroa.0.0..sroa_idx45.i.i288, align 8
%127 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i287, i64 %yl.sroa.0.0.copyload46.i.i289) #20
%128 = extractvalue { i64, i1 } %127, 0
%rl.sroa.0.0..sroa_idx1648.i.i291 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %128, i64* %rl.sroa.0.0..sroa_idx1648.i.i291, align 8
%129 = add nsw i32 %6, -1
%130 = icmp eq i32 %129, 0
br i1 %130, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304, label %next-block.i.i302.preheader
next-block.i.i302.preheader: ; preds = %then-block-2412-
%131 = extractvalue { i64, i1 } %127, 1
%.47.i.i290 = zext i1 %131 to i64
%132 = add i32 %6, -1
%133 = add i32 %6, -2
%xtraiter749 = and i32 %132, 1
%lcmp.mod750 = icmp ne i32 %xtraiter749, 0
br i1 %lcmp.mod750, label %next-block.i.i302.prol, label %next-block.i.i302.preheader.split
next-block.i.i302.prol: ; preds = %next-block.i.i302.preheader
%134 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%135 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 1
%136 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%xl.sroa.0.0..sroa_idx.i.i296.prol = getelementptr inbounds %"ll::limb::Limb"* %135, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i297.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i296.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i298.prol = getelementptr inbounds %"ll::limb::Limb"* %136, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i299.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i298.prol, align 8
%137 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i297.prol, i64 %yl.sroa.0.0.copyload.i.i299.prol) #20
%138 = extractvalue { i64, i1 } %137, 0
%139 = extractvalue { i64, i1 } %137, 1
%140 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %138, i64 %.47.i.i290) #20
%141 = extractvalue { i64, i1 } %140, 0
%142 = extractvalue { i64, i1 } %140, 1
%143 = or i1 %139, %142
%..i.i300.prol = zext i1 %143 to i64
%rl.sroa.0.0..sroa_idx16.i.i301.prol = getelementptr inbounds %"ll::limb::Limb"* %134, i64 0, i32 0
store i64 %141, i64* %rl.sroa.0.0..sroa_idx16.i.i301.prol, align 8
%144 = add i32 %129, -1
%145 = icmp eq i32 %144, 0
br label %next-block.i.i302.preheader.split
next-block.i.i302.preheader.split: ; preds = %next-block.i.i302.prol, %next-block.i.i302.preheader
%.unr751 = phi i32 [ %129, %next-block.i.i302.preheader ], [ %144, %next-block.i.i302.prol ]
%.52.i.i292.unr = phi i64 [ %.47.i.i290, %next-block.i.i302.preheader ], [ %..i.i300.prol, %next-block.i.i302.prol ]
%wp.051.i.i293.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i302.preheader ], [ %134, %next-block.i.i302.prol ]
%xp.050.i.i294.unr = phi %"ll::limb::Limb"* [ %10, %next-block.i.i302.preheader ], [ %135, %next-block.i.i302.prol ]
%yp.049.i.i295.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i302.preheader ], [ %136, %next-block.i.i302.prol ]
%146 = icmp ult i32 %133, 1
br i1 %146, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit, label %next-block.i.i302.preheader.split.split
next-block.i.i302.preheader.split.split: ; preds = %next-block.i.i302.preheader.split
br label %next-block.i.i302
next-block.i.i302: ; preds = %next-block.i.i302, %next-block.i.i302.preheader.split.split
%147 = phi i32 [ %.unr751, %next-block.i.i302.preheader.split.split ], [ %169, %next-block.i.i302 ]
%.52.i.i292 = phi i64 [ %.52.i.i292.unr, %next-block.i.i302.preheader.split.split ], [ %..i.i300.1, %next-block.i.i302 ]
%wp.051.i.i293 = phi %"ll::limb::Limb"* [ %wp.051.i.i293.unr, %next-block.i.i302.preheader.split.split ], [ %159, %next-block.i.i302 ]
%xp.050.i.i294 = phi %"ll::limb::Limb"* [ %xp.050.i.i294.unr, %next-block.i.i302.preheader.split.split ], [ %160, %next-block.i.i302 ]
%yp.049.i.i295 = phi %"ll::limb::Limb"* [ %yp.049.i.i295.unr, %next-block.i.i302.preheader.split.split ], [ %161, %next-block.i.i302 ]
%148 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i293, i64 1
%149 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i294, i64 1
%150 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i295, i64 1
%xl.sroa.0.0..sroa_idx.i.i296 = getelementptr inbounds %"ll::limb::Limb"* %149, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i297 = load i64* %xl.sroa.0.0..sroa_idx.i.i296, align 8
%yl.sroa.0.0..sroa_idx.i.i298 = getelementptr inbounds %"ll::limb::Limb"* %150, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i299 = load i64* %yl.sroa.0.0..sroa_idx.i.i298, align 8
%151 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i297, i64 %yl.sroa.0.0.copyload.i.i299) #20
%152 = extractvalue { i64, i1 } %151, 0
%153 = extractvalue { i64, i1 } %151, 1
%154 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %152, i64 %.52.i.i292) #20
%155 = extractvalue { i64, i1 } %154, 0
%156 = extractvalue { i64, i1 } %154, 1
%157 = or i1 %153, %156
%..i.i300 = zext i1 %157 to i64
%rl.sroa.0.0..sroa_idx16.i.i301 = getelementptr inbounds %"ll::limb::Limb"* %148, i64 0, i32 0
store i64 %155, i64* %rl.sroa.0.0..sroa_idx16.i.i301, align 8
%158 = add i32 %147, -1
%159 = getelementptr inbounds %"ll::limb::Limb"* %148, i64 1
%160 = getelementptr inbounds %"ll::limb::Limb"* %149, i64 1
%161 = getelementptr inbounds %"ll::limb::Limb"* %150, i64 1
%xl.sroa.0.0..sroa_idx.i.i296.1 = getelementptr inbounds %"ll::limb::Limb"* %160, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i297.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i296.1, align 8
%yl.sroa.0.0..sroa_idx.i.i298.1 = getelementptr inbounds %"ll::limb::Limb"* %161, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i299.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i298.1, align 8
%162 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i297.1, i64 %yl.sroa.0.0.copyload.i.i299.1) #20
%163 = extractvalue { i64, i1 } %162, 0
%164 = extractvalue { i64, i1 } %162, 1
%165 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %163, i64 %..i.i300) #20
%166 = extractvalue { i64, i1 } %165, 0
%167 = extractvalue { i64, i1 } %165, 1
%168 = or i1 %164, %167
%..i.i300.1 = zext i1 %168 to i64
%rl.sroa.0.0..sroa_idx16.i.i301.1 = getelementptr inbounds %"ll::limb::Limb"* %159, i64 0, i32 0
store i64 %166, i64* %rl.sroa.0.0..sroa_idx16.i.i301.1, align 8
%169 = add i32 %158, -1
%170 = icmp eq i32 %169, 0
br i1 %170, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit.unr-lcssa, label %next-block.i.i302
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit.unr-lcssa: ; preds = %next-block.i.i302
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit: ; preds = %next-block.i.i302.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304.loopexit, %then-block-2412-
br i1 %112, label %while_body.lr.ph.i, label %join7
while_body.lr.ph.i: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304
%171 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %110
%172 = bitcast %"ll::limb::Limb"* %171 to i8*
%173 = add i32 %111, -1
%174 = zext i32 %173 to i64
%175 = shl nuw nsw i64 %174, 3
%176 = add nuw nsw i64 %175, 8
tail call void @llvm.memset.p0i8.i64(i8* %172, i8 0, i64 %176, i32 8, i1 false) #20
br label %join7
else-block5.loopexit: ; preds = %while_cond.i278
br label %else-block5
else-block5.loopexit702: ; preds = %while_body.i274
br label %else-block5
else-block5: ; preds = %else-block5.loopexit702, %else-block5.loopexit, %then-block-13036-.i281
%xl.sroa.0.0..sroa_idx43.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i, align 8
%177 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i, i64 %yl.sroa.0.0.copyload46.i.i.i) #20
%178 = extractvalue { i64, i1 } %177, 0
%179 = extractvalue { i64, i1 } %177, 1
%.47.i.i.i = zext i1 %179 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %178, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%180 = add nsw i32 %6, -1
%181 = icmp eq i32 %180, 0
br i1 %181, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %else-block5
%182 = add i32 %6, -1
%183 = add i32 %6, -2
%xtraiter746 = and i32 %182, 1
%lcmp.mod747 = icmp ne i32 %xtraiter746, 0
br i1 %lcmp.mod747, label %next-block.i.i.i.prol, label %next-block.i.i.i.preheader.split
next-block.i.i.i.prol: ; preds = %next-block.i.i.i.preheader
%184 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%185 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%186 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %185, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %186, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%187 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.i.prol) #20
%188 = extractvalue { i64, i1 } %187, 0
%189 = extractvalue { i64, i1 } %187, 1
%190 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %188, i64 %.47.i.i.i) #20
%191 = extractvalue { i64, i1 } %190, 0
%192 = extractvalue { i64, i1 } %190, 1
%193 = or i1 %189, %192
%..i.i.i.prol = zext i1 %193 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %184, i64 0, i32 0
store i64 %191, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.prol, align 8
%194 = add i32 %180, -1
%195 = icmp eq i32 %194, 0
br label %next-block.i.i.i.preheader.split
next-block.i.i.i.preheader.split: ; preds = %next-block.i.i.i.prol, %next-block.i.i.i.preheader
%..i.i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%.unr748 = phi i32 [ %180, %next-block.i.i.i.preheader ], [ %194, %next-block.i.i.i.prol ]
%.52.i.i.i.unr = phi i64 [ %.47.i.i.i, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%wp.051.i.i.i.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i.i.preheader ], [ %184, %next-block.i.i.i.prol ]
%xp.050.i.i.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i.i.preheader ], [ %185, %next-block.i.i.i.prol ]
%yp.049.i.i.i.unr = phi %"ll::limb::Limb"* [ %10, %next-block.i.i.i.preheader ], [ %186, %next-block.i.i.i.prol ]
%196 = icmp ult i32 %183, 1
br i1 %196, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, label %next-block.i.i.i.preheader.split.split
next-block.i.i.i.preheader.split.split: ; preds = %next-block.i.i.i.preheader.split
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i, %next-block.i.i.i.preheader.split.split
%197 = phi i32 [ %.unr748, %next-block.i.i.i.preheader.split.split ], [ %219, %next-block.i.i.i ]
%.52.i.i.i = phi i64 [ %.52.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %..i.i.i.1, %next-block.i.i.i ]
%wp.051.i.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %209, %next-block.i.i.i ]
%xp.050.i.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %210, %next-block.i.i.i ]
%yp.049.i.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %211, %next-block.i.i.i ]
%198 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i, i64 1
%199 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i, i64 1
%200 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %199, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %200, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i.i, align 8
%201 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %yl.sroa.0.0.copyload.i.i.i) #20
%202 = extractvalue { i64, i1 } %201, 0
%203 = extractvalue { i64, i1 } %201, 1
%204 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %202, i64 %.52.i.i.i) #20
%205 = extractvalue { i64, i1 } %204, 0
%206 = extractvalue { i64, i1 } %204, 1
%207 = or i1 %203, %206
%..i.i.i = zext i1 %207 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %198, i64 0, i32 0
store i64 %205, i64* %rl.sroa.0.0..sroa_idx16.i.i.i, align 8
%208 = add i32 %197, -1
%209 = getelementptr inbounds %"ll::limb::Limb"* %198, i64 1
%210 = getelementptr inbounds %"ll::limb::Limb"* %199, i64 1
%211 = getelementptr inbounds %"ll::limb::Limb"* %200, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %210, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %211, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%212 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.i.1) #20
%213 = extractvalue { i64, i1 } %212, 0
%214 = extractvalue { i64, i1 } %212, 1
%215 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %213, i64 %..i.i.i) #20
%216 = extractvalue { i64, i1 } %215, 0
%217 = extractvalue { i64, i1 } %215, 1
%218 = or i1 %214, %217
%..i.i.i.1 = zext i1 %218 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %209, i64 0, i32 0
store i64 %216, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.1, align 8
%219 = add i32 %208, -1
%220 = icmp eq i32 %219, 0
br i1 %220, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i
%..i.i.i.lcssa.ph = phi i64 [ %..i.i.i.1, %next-block.i.i.i ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit: ; preds = %next-block.i.i.i.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa
%..i.i.i.lcssa = phi i64 [ %..i.i.i.lcssa.unr, %next-block.i.i.i.preheader.split ], [ %..i.i.i.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, %else-block5
%..lcssa.i.i.i = phi i64 [ %.47.i.i.i, %else-block5 ], [ %..i.i.i.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit ]
%221 = icmp eq i64 %..lcssa.i.i.i, 1
br i1 %221, label %loop_body.i.preheader, label %next-block3.i
loop_body.i.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
br label %loop_body.i
loop_body.i: ; preds = %loop_body.i.preheader, %next-block.i306
%i.0.i305 = phi i32 [ %229, %next-block.i306 ], [ %6, %loop_body.i.preheader ]
%222 = icmp slt i32 %i.0.i305, %7
br i1 %222, label %next-block.i306, label %join7.loopexit701
next-block.i306: ; preds = %loop_body.i
%223 = sext i32 %i.0.i305 to i64
%224 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %223, i32 0
%225 = load i64* %224, align 8
%226 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %225, i64 1) #20
%227 = extractvalue { i64, i1 } %226, 0
%228 = extractvalue { i64, i1 } %226, 1
%x.sroa.0.0..sroa_idx6.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %223, i32 0
store i64 %227, i64* %x.sroa.0.0..sroa_idx6.i, align 8
%229 = add i32 %i.0.i305, 1
br i1 %228, label %loop_body.i, label %next-block3.i.loopexit
next-block3.i.loopexit: ; preds = %next-block.i306
%.lcssa709 = phi i32 [ %229, %next-block.i306 ]
br label %next-block3.i
next-block3.i: ; preds = %next-block3.i.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
%i.1.i = phi i32 [ %6, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i ], [ %.lcssa709, %next-block3.i.loopexit ]
%230 = icmp ne %"ll::limb::Limb"* %0, %1
%231 = icmp sgt i32 %7, %i.1.i
%..i307 = and i1 %230, %231
br i1 %..i307, label %then-block-803-.i, label %join7
then-block-803-.i: ; preds = %next-block3.i
%232 = sext i32 %i.1.i to i64
%233 = sub i32 %7, %i.1.i
%234 = icmp sgt i32 %233, 0
br i1 %234, label %while_body.lr.ph.i.i.i, label %join7
while_body.lr.ph.i.i.i: ; preds = %then-block-803-.i
%235 = add i32 %2, -1
%236 = sub i32 %235, %i.1.i
%237 = sub i32 %236, %6
%238 = zext i32 %237 to i64
%239 = add nuw nsw i64 %238, 1
%end.idx = add nuw nsw i64 %238, 1
%n.vec = and i64 %239, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%240 = sext i32 %i.1.i to i64
%241 = add i32 %2, -1
%242 = sub i32 %241, %i.1.i
%243 = sub i32 %242, %6
%244 = zext i32 %243 to i64
%245 = add nsw i64 %240, %244
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %0, i64 %240
%scevgep635 = getelementptr %"ll::limb::Limb"* %1, i64 %245
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep635
%scevgep633 = getelementptr %"ll::limb::Limb"* %1, i64 %240
%scevgep631 = getelementptr %"ll::limb::Limb"* %0, i64 %245
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep633, %scevgep631
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%246 = add i64 %index, %232
%247 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %246, i32 0
%248 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %246, i32 0
%249 = bitcast i64* %247 to <2 x i64>*
%wide.load = load <2 x i64>* %249, align 8
%250 = getelementptr i64* %247, i64 2
%251 = bitcast i64* %250 to <2 x i64>*
%wide.load640 = load <2 x i64>* %251, align 8
%252 = bitcast i64* %248 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %252, align 8
%253 = getelementptr i64* %248, i64 2
%254 = bitcast i64* %253 to <2 x i64>*
store <2 x i64> %wide.load640, <2 x i64>* %254, align 8
%index.next = add i64 %index, 4
%255 = icmp eq i64 %index.next, %n.vec
br i1 %255, label %middle.block.loopexit, label %vector.body, !llvm.loop !107
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %join7, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block
%256 = sub i32 %2, %i.1.i
%257 = sub i32 %256, %6
%258 = trunc i64 %resume.val to i32
%259 = sub i32 %257, %258
%260 = add i32 %2, -1
%261 = sub i32 %260, %i.1.i
%262 = sub i32 %261, %6
%263 = sub i32 %262, %258
%xtraiter744 = and i32 %259, 3
%lcmp.mod745 = icmp ne i32 %xtraiter744, 0
br i1 %lcmp.mod745, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val, %while_body.i.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter744, %while_body.i.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.i.prol ]
%.sum.i.i.prol = add i64 %indvars.iv.i.i.i.prol, %232
%264 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.prol, i32 0
%265 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.i.prol, i32 0
%266 = load i64* %264, align 8
store i64 %266, i64* %265, align 8
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv610.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond611.prol = icmp eq i32 %lftr.wideiv610.prol, %237
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !108
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%267 = icmp ult i32 %263, 3
br i1 %267, label %join7.loopexit700, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%.sum.i.i = add i64 %indvars.iv.i.i.i, %232
%268 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i, i32 0
%269 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.i, i32 0
%270 = load i64* %268, align 8
store i64 %270, i64* %269, align 8
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv610 = trunc i64 %indvars.iv.i.i.i to i32
%.sum.i.i.1 = add i64 %indvars.iv.next.i.i.i, %232
%271 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.1, i32 0
%272 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.i.1, i32 0
%273 = load i64* %271, align 8
store i64 %273, i64* %272, align 8
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv610.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%.sum.i.i.2 = add i64 %indvars.iv.next.i.i.i.1, %232
%274 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.2, i32 0
%275 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.i.2, i32 0
%276 = load i64* %274, align 8
store i64 %276, i64* %275, align 8
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv610.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%.sum.i.i.3 = add i64 %indvars.iv.next.i.i.i.2, %232
%277 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.3, i32 0
%278 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum.i.i.3, i32 0
%279 = load i64* %277, align 8
store i64 %279, i64* %278, align 8
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv610.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond611.3 = icmp eq i32 %lftr.wideiv610.3, %237
br i1 %exitcond611.3, label %join7.loopexit700.unr-lcssa, label %while_body.i.i.i, !llvm.loop !109
join7.loopexit.unr-lcssa: ; preds = %next-block.i.i271
br label %join7.loopexit
join7.loopexit: ; preds = %next-block.i.i271.preheader.split, %join7.loopexit.unr-lcssa
br label %join7
join7.loopexit699.unr-lcssa: ; preds = %next-block.i.i
br label %join7.loopexit699
join7.loopexit699: ; preds = %next-block.i.i.preheader.split, %join7.loopexit699.unr-lcssa
br label %join7
join7.loopexit700.unr-lcssa: ; preds = %while_body.i.i.i
br label %join7.loopexit700
join7.loopexit700: ; preds = %while_body.i.i.i.preheader.split, %join7.loopexit700.unr-lcssa
br label %join7
join7.loopexit701: ; preds = %loop_body.i
br label %join7
join7: ; preds = %join7.loopexit701, %join7.loopexit700, %join7.loopexit699, %join7.loopexit, %middle.block, %then-block-803-.i, %next-block3.i, %while_body.lr.ph.i, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304, %then-block-2370-, %else-block
%z1_neg.2 = phi i8 [ 1, %then-block-2370- ], [ 0, %else-block ], [ 1, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit304 ], [ 1, %while_body.lr.ph.i ], [ 0, %next-block3.i ], [ 0, %then-block-803-.i ], [ 0, %middle.block ], [ 0, %join7.loopexit ], [ 1, %join7.loopexit699 ], [ 0, %join7.loopexit700 ], [ 0, %join7.loopexit701 ]
%280 = icmp eq i32 %7, %8
br i1 %280, label %while_cond.i310.preheader, label %else-block11
while_cond.i310.preheader: ; preds = %join7
br label %while_cond.i310
while_cond.i310: ; preds = %while_cond.i310.preheader, %while_body.i311
%i.0.in.i308 = phi i32 [ %i.0.i309, %while_body.i311 ], [ %7, %while_cond.i310.preheader ]
%i.0.i309 = add i32 %i.0.in.i308, -1
%281 = icmp sgt i32 %i.0.i309, -1
br i1 %281, label %while_body.i311, label %else-block9.loopexit
while_body.i311: ; preds = %while_cond.i310
%282 = sext i32 %i.0.i309 to i64
%283 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %282, i32 0
%284 = load i64* %283, align 8
%.sum581 = add nsw i64 %282, %9
%285 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum581, i32 0
%286 = load i64* %285, align 8
%287 = icmp eq i64 %284, %286
br i1 %287, label %while_cond.i310, label %then-block-13036-.i313
then-block-13036-.i313: ; preds = %while_body.i311
%.lcssa703 = phi i64 [ %286, %while_body.i311 ]
%.lcssa = phi i64 [ %284, %while_body.i311 ]
%288 = icmp ugt i64 %.lcssa, %.lcssa703
br i1 %288, label %else-block9, label %then-block-2459-
then-block-2459-: ; preds = %then-block-13036-.i313
%xl.sroa.0.0..sroa_idx43.i.i318 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i319 = load i64* %xl.sroa.0.0..sroa_idx43.i.i318, align 8
%yl.sroa.0.0..sroa_idx45.i.i320 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i321 = load i64* %yl.sroa.0.0..sroa_idx45.i.i320, align 8
%289 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i319, i64 %yl.sroa.0.0.copyload46.i.i321) #20
%290 = extractvalue { i64, i1 } %289, 0
%rl.sroa.0.0..sroa_idx1648.i.i323 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %290, i64* %rl.sroa.0.0..sroa_idx1648.i.i323, align 8
%291 = add i32 %7, -1
%292 = icmp eq i32 %291, 0
br i1 %292, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336, label %next-block.i.i334.preheader
next-block.i.i334.preheader: ; preds = %then-block-2459-
%293 = extractvalue { i64, i1 } %289, 1
%.47.i.i322 = zext i1 %293 to i64
%294 = add i32 %2, -1
%295 = sub i32 %294, %6
%296 = add i32 %2, -2
%297 = sub i32 %296, %6
%xtraiter727 = and i32 %295, 1
%lcmp.mod728 = icmp ne i32 %xtraiter727, 0
br i1 %lcmp.mod728, label %next-block.i.i334.prol, label %next-block.i.i334.preheader.split
next-block.i.i334.prol: ; preds = %next-block.i.i334.preheader
%298 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%299 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 1
%300 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%xl.sroa.0.0..sroa_idx.i.i328.prol = getelementptr inbounds %"ll::limb::Limb"* %299, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i329.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i328.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i330.prol = getelementptr inbounds %"ll::limb::Limb"* %300, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i331.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i330.prol, align 8
%301 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i329.prol, i64 %yl.sroa.0.0.copyload.i.i331.prol) #20
%302 = extractvalue { i64, i1 } %301, 0
%303 = extractvalue { i64, i1 } %301, 1
%304 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %302, i64 %.47.i.i322) #20
%305 = extractvalue { i64, i1 } %304, 0
%306 = extractvalue { i64, i1 } %304, 1
%307 = or i1 %303, %306
%..i.i332.prol = zext i1 %307 to i64
%rl.sroa.0.0..sroa_idx16.i.i333.prol = getelementptr inbounds %"ll::limb::Limb"* %298, i64 0, i32 0
store i64 %305, i64* %rl.sroa.0.0..sroa_idx16.i.i333.prol, align 8
%308 = add i32 %291, -1
%309 = icmp eq i32 %308, 0
br label %next-block.i.i334.preheader.split
next-block.i.i334.preheader.split: ; preds = %next-block.i.i334.prol, %next-block.i.i334.preheader
%.unr729 = phi i32 [ %291, %next-block.i.i334.preheader ], [ %308, %next-block.i.i334.prol ]
%.52.i.i324.unr = phi i64 [ %.47.i.i322, %next-block.i.i334.preheader ], [ %..i.i332.prol, %next-block.i.i334.prol ]
%wp.051.i.i325.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i334.preheader ], [ %298, %next-block.i.i334.prol ]
%xp.050.i.i326.unr = phi %"ll::limb::Limb"* [ %11, %next-block.i.i334.preheader ], [ %299, %next-block.i.i334.prol ]
%yp.049.i.i327.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i334.preheader ], [ %300, %next-block.i.i334.prol ]
%310 = icmp ult i32 %297, 1
br i1 %310, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit, label %next-block.i.i334.preheader.split.split
next-block.i.i334.preheader.split.split: ; preds = %next-block.i.i334.preheader.split
br label %next-block.i.i334
next-block.i.i334: ; preds = %next-block.i.i334, %next-block.i.i334.preheader.split.split
%311 = phi i32 [ %.unr729, %next-block.i.i334.preheader.split.split ], [ %333, %next-block.i.i334 ]
%.52.i.i324 = phi i64 [ %.52.i.i324.unr, %next-block.i.i334.preheader.split.split ], [ %..i.i332.1, %next-block.i.i334 ]
%wp.051.i.i325 = phi %"ll::limb::Limb"* [ %wp.051.i.i325.unr, %next-block.i.i334.preheader.split.split ], [ %323, %next-block.i.i334 ]
%xp.050.i.i326 = phi %"ll::limb::Limb"* [ %xp.050.i.i326.unr, %next-block.i.i334.preheader.split.split ], [ %324, %next-block.i.i334 ]
%yp.049.i.i327 = phi %"ll::limb::Limb"* [ %yp.049.i.i327.unr, %next-block.i.i334.preheader.split.split ], [ %325, %next-block.i.i334 ]
%312 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i325, i64 1
%313 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i326, i64 1
%314 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i327, i64 1
%xl.sroa.0.0..sroa_idx.i.i328 = getelementptr inbounds %"ll::limb::Limb"* %313, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i329 = load i64* %xl.sroa.0.0..sroa_idx.i.i328, align 8
%yl.sroa.0.0..sroa_idx.i.i330 = getelementptr inbounds %"ll::limb::Limb"* %314, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i331 = load i64* %yl.sroa.0.0..sroa_idx.i.i330, align 8
%315 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i329, i64 %yl.sroa.0.0.copyload.i.i331) #20
%316 = extractvalue { i64, i1 } %315, 0
%317 = extractvalue { i64, i1 } %315, 1
%318 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %316, i64 %.52.i.i324) #20
%319 = extractvalue { i64, i1 } %318, 0
%320 = extractvalue { i64, i1 } %318, 1
%321 = or i1 %317, %320
%..i.i332 = zext i1 %321 to i64
%rl.sroa.0.0..sroa_idx16.i.i333 = getelementptr inbounds %"ll::limb::Limb"* %312, i64 0, i32 0
store i64 %319, i64* %rl.sroa.0.0..sroa_idx16.i.i333, align 8
%322 = add i32 %311, -1
%323 = getelementptr inbounds %"ll::limb::Limb"* %312, i64 1
%324 = getelementptr inbounds %"ll::limb::Limb"* %313, i64 1
%325 = getelementptr inbounds %"ll::limb::Limb"* %314, i64 1
%xl.sroa.0.0..sroa_idx.i.i328.1 = getelementptr inbounds %"ll::limb::Limb"* %324, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i329.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i328.1, align 8
%yl.sroa.0.0..sroa_idx.i.i330.1 = getelementptr inbounds %"ll::limb::Limb"* %325, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i331.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i330.1, align 8
%326 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i329.1, i64 %yl.sroa.0.0.copyload.i.i331.1) #20
%327 = extractvalue { i64, i1 } %326, 0
%328 = extractvalue { i64, i1 } %326, 1
%329 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %327, i64 %..i.i332) #20
%330 = extractvalue { i64, i1 } %329, 0
%331 = extractvalue { i64, i1 } %329, 1
%332 = or i1 %328, %331
%..i.i332.1 = zext i1 %332 to i64
%rl.sroa.0.0..sroa_idx16.i.i333.1 = getelementptr inbounds %"ll::limb::Limb"* %323, i64 0, i32 0
store i64 %330, i64* %rl.sroa.0.0..sroa_idx16.i.i333.1, align 8
%333 = add i32 %322, -1
%334 = icmp eq i32 %333, 0
br i1 %334, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit.unr-lcssa, label %next-block.i.i334
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit.unr-lcssa: ; preds = %next-block.i.i334
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit: ; preds = %next-block.i.i334.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336.loopexit, %then-block-2459-
%335 = xor i8 %z1_neg.2, 1
br label %join19
else-block9.loopexit: ; preds = %while_cond.i310
br label %else-block9
else-block9: ; preds = %else-block9.loopexit, %then-block-13036-.i313
%xl.sroa.0.0..sroa_idx43.i.i337 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i338 = load i64* %xl.sroa.0.0..sroa_idx43.i.i337, align 8
%yl.sroa.0.0..sroa_idx45.i.i339 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i340 = load i64* %yl.sroa.0.0..sroa_idx45.i.i339, align 8
%336 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i338, i64 %yl.sroa.0.0.copyload46.i.i340) #20
%337 = extractvalue { i64, i1 } %336, 0
%rl.sroa.0.0..sroa_idx1648.i.i342 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %337, i64* %rl.sroa.0.0..sroa_idx1648.i.i342, align 8
%338 = add i32 %7, -1
%339 = icmp eq i32 %338, 0
br i1 %339, label %join19, label %next-block.i.i353.preheader
next-block.i.i353.preheader: ; preds = %else-block9
%340 = extractvalue { i64, i1 } %336, 1
%.47.i.i341 = zext i1 %340 to i64
%341 = add i32 %2, -1
%342 = sub i32 %341, %6
%343 = add i32 %2, -2
%344 = sub i32 %343, %6
%xtraiter724 = and i32 %342, 1
%lcmp.mod725 = icmp ne i32 %xtraiter724, 0
br i1 %lcmp.mod725, label %next-block.i.i353.prol, label %next-block.i.i353.preheader.split
next-block.i.i353.prol: ; preds = %next-block.i.i353.preheader
%345 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%346 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%347 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 1
%xl.sroa.0.0..sroa_idx.i.i347.prol = getelementptr inbounds %"ll::limb::Limb"* %346, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i348.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i347.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i349.prol = getelementptr inbounds %"ll::limb::Limb"* %347, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i350.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i349.prol, align 8
%348 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i348.prol, i64 %yl.sroa.0.0.copyload.i.i350.prol) #20
%349 = extractvalue { i64, i1 } %348, 0
%350 = extractvalue { i64, i1 } %348, 1
%351 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %349, i64 %.47.i.i341) #20
%352 = extractvalue { i64, i1 } %351, 0
%353 = extractvalue { i64, i1 } %351, 1
%354 = or i1 %350, %353
%..i.i351.prol = zext i1 %354 to i64
%rl.sroa.0.0..sroa_idx16.i.i352.prol = getelementptr inbounds %"ll::limb::Limb"* %345, i64 0, i32 0
store i64 %352, i64* %rl.sroa.0.0..sroa_idx16.i.i352.prol, align 8
%355 = add i32 %338, -1
%356 = icmp eq i32 %355, 0
br label %next-block.i.i353.preheader.split
next-block.i.i353.preheader.split: ; preds = %next-block.i.i353.prol, %next-block.i.i353.preheader
%.unr726 = phi i32 [ %338, %next-block.i.i353.preheader ], [ %355, %next-block.i.i353.prol ]
%.52.i.i343.unr = phi i64 [ %.47.i.i341, %next-block.i.i353.preheader ], [ %..i.i351.prol, %next-block.i.i353.prol ]
%wp.051.i.i344.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i353.preheader ], [ %345, %next-block.i.i353.prol ]
%xp.050.i.i345.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i353.preheader ], [ %346, %next-block.i.i353.prol ]
%yp.049.i.i346.unr = phi %"ll::limb::Limb"* [ %11, %next-block.i.i353.preheader ], [ %347, %next-block.i.i353.prol ]
%357 = icmp ult i32 %344, 1
br i1 %357, label %join19.loopexit, label %next-block.i.i353.preheader.split.split
next-block.i.i353.preheader.split.split: ; preds = %next-block.i.i353.preheader.split
br label %next-block.i.i353
next-block.i.i353: ; preds = %next-block.i.i353, %next-block.i.i353.preheader.split.split
%358 = phi i32 [ %.unr726, %next-block.i.i353.preheader.split.split ], [ %380, %next-block.i.i353 ]
%.52.i.i343 = phi i64 [ %.52.i.i343.unr, %next-block.i.i353.preheader.split.split ], [ %..i.i351.1, %next-block.i.i353 ]
%wp.051.i.i344 = phi %"ll::limb::Limb"* [ %wp.051.i.i344.unr, %next-block.i.i353.preheader.split.split ], [ %370, %next-block.i.i353 ]
%xp.050.i.i345 = phi %"ll::limb::Limb"* [ %xp.050.i.i345.unr, %next-block.i.i353.preheader.split.split ], [ %371, %next-block.i.i353 ]
%yp.049.i.i346 = phi %"ll::limb::Limb"* [ %yp.049.i.i346.unr, %next-block.i.i353.preheader.split.split ], [ %372, %next-block.i.i353 ]
%359 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i344, i64 1
%360 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i345, i64 1
%361 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i346, i64 1
%xl.sroa.0.0..sroa_idx.i.i347 = getelementptr inbounds %"ll::limb::Limb"* %360, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i348 = load i64* %xl.sroa.0.0..sroa_idx.i.i347, align 8
%yl.sroa.0.0..sroa_idx.i.i349 = getelementptr inbounds %"ll::limb::Limb"* %361, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i350 = load i64* %yl.sroa.0.0..sroa_idx.i.i349, align 8
%362 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i348, i64 %yl.sroa.0.0.copyload.i.i350) #20
%363 = extractvalue { i64, i1 } %362, 0
%364 = extractvalue { i64, i1 } %362, 1
%365 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %363, i64 %.52.i.i343) #20
%366 = extractvalue { i64, i1 } %365, 0
%367 = extractvalue { i64, i1 } %365, 1
%368 = or i1 %364, %367
%..i.i351 = zext i1 %368 to i64
%rl.sroa.0.0..sroa_idx16.i.i352 = getelementptr inbounds %"ll::limb::Limb"* %359, i64 0, i32 0
store i64 %366, i64* %rl.sroa.0.0..sroa_idx16.i.i352, align 8
%369 = add i32 %358, -1
%370 = getelementptr inbounds %"ll::limb::Limb"* %359, i64 1
%371 = getelementptr inbounds %"ll::limb::Limb"* %360, i64 1
%372 = getelementptr inbounds %"ll::limb::Limb"* %361, i64 1
%xl.sroa.0.0..sroa_idx.i.i347.1 = getelementptr inbounds %"ll::limb::Limb"* %371, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i348.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i347.1, align 8
%yl.sroa.0.0..sroa_idx.i.i349.1 = getelementptr inbounds %"ll::limb::Limb"* %372, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i350.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i349.1, align 8
%373 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i348.1, i64 %yl.sroa.0.0.copyload.i.i350.1) #20
%374 = extractvalue { i64, i1 } %373, 0
%375 = extractvalue { i64, i1 } %373, 1
%376 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %374, i64 %..i.i351) #20
%377 = extractvalue { i64, i1 } %376, 0
%378 = extractvalue { i64, i1 } %376, 1
%379 = or i1 %375, %378
%..i.i351.1 = zext i1 %379 to i64
%rl.sroa.0.0..sroa_idx16.i.i352.1 = getelementptr inbounds %"ll::limb::Limb"* %370, i64 0, i32 0
store i64 %377, i64* %rl.sroa.0.0..sroa_idx16.i.i352.1, align 8
%380 = add i32 %369, -1
%381 = icmp eq i32 %380, 0
br i1 %381, label %join19.loopexit.unr-lcssa, label %next-block.i.i353
else-block11: ; preds = %join7
%382 = sext i32 %8 to i64
%383 = sub i32 %7, %8
%384 = icmp sgt i32 %383, 0
br i1 %384, label %while_body.i358.preheader, label %while_cond.i364.preheader
while_body.i358.preheader: ; preds = %else-block11
%385 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %382
br label %while_body.i358
while_body.i358: ; preds = %while_body.i358.preheader, %next-block.i360
%np.08.i356 = phi %"ll::limb::Limb"* [ %389, %next-block.i360 ], [ %385, %while_body.i358.preheader ]
%nn.07.i357 = phi i32 [ %390, %next-block.i360 ], [ %383, %while_body.i358.preheader ]
%386 = getelementptr inbounds %"ll::limb::Limb"* %np.08.i356, i64 0, i32 0
%387 = load i64* %386, align 8, !alias.scope !110, !noalias !113
%388 = icmp eq i64 %387, 0
br i1 %388, label %next-block.i360, label %else-block17.loopexit698
next-block.i360: ; preds = %while_body.i358
%389 = getelementptr inbounds %"ll::limb::Limb"* %np.08.i356, i64 1
%390 = add nsw i32 %nn.07.i357, -1
%391 = icmp sgt i32 %nn.07.i357, 1
br i1 %391, label %while_body.i358, label %while_cond.i364.preheader.loopexit
while_cond.i364.preheader.loopexit: ; preds = %next-block.i360
br label %while_cond.i364.preheader
while_cond.i364.preheader: ; preds = %while_cond.i364.preheader.loopexit, %else-block11
br label %while_cond.i364
while_cond.i364: ; preds = %while_cond.i364.preheader, %while_body.i365
%i.0.in.i362 = phi i32 [ %i.0.i363, %while_body.i365 ], [ %8, %while_cond.i364.preheader ]
%i.0.i363 = add i32 %i.0.in.i362, -1
%392 = icmp sgt i32 %i.0.i363, -1
br i1 %392, label %while_body.i365, label %else-block17.loopexit
while_body.i365: ; preds = %while_cond.i364
%393 = sext i32 %i.0.i363 to i64
%394 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %393, i32 0
%395 = load i64* %394, align 8
%.sum579 = add nsw i64 %393, %9
%396 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum579, i32 0
%397 = load i64* %396, align 8
%398 = icmp eq i64 %395, %397
br i1 %398, label %while_cond.i364, label %then-block-13036-.i367
then-block-13036-.i367: ; preds = %while_body.i365
%.lcssa706 = phi i64 [ %397, %while_body.i365 ]
%.lcssa705 = phi i64 [ %395, %while_body.i365 ]
%399 = icmp ugt i64 %.lcssa705, %.lcssa706
br i1 %399, label %else-block17, label %then-block-2502-
then-block-2502-: ; preds = %then-block-13036-.i367
%xl.sroa.0.0..sroa_idx43.i.i372 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i373 = load i64* %xl.sroa.0.0..sroa_idx43.i.i372, align 8
%yl.sroa.0.0..sroa_idx45.i.i374 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i375 = load i64* %yl.sroa.0.0..sroa_idx45.i.i374, align 8
%400 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i373, i64 %yl.sroa.0.0.copyload46.i.i375) #20
%401 = extractvalue { i64, i1 } %400, 0
%rl.sroa.0.0..sroa_idx1648.i.i377 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %401, i64* %rl.sroa.0.0..sroa_idx1648.i.i377, align 8
%402 = add i32 %8, -1
%403 = icmp eq i32 %402, 0
br i1 %403, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390, label %next-block.i.i388.preheader
next-block.i.i388.preheader: ; preds = %then-block-2502-
%404 = extractvalue { i64, i1 } %400, 1
%.47.i.i376 = zext i1 %404 to i64
%405 = add i32 %6, %4
%406 = add i32 %405, -1
%407 = sub i32 %406, %2
%408 = add i32 %405, -2
%409 = sub i32 %408, %2
%xtraiter735 = and i32 %407, 1
%lcmp.mod736 = icmp ne i32 %xtraiter735, 0
br i1 %lcmp.mod736, label %next-block.i.i388.prol, label %next-block.i.i388.preheader.split
next-block.i.i388.prol: ; preds = %next-block.i.i388.preheader
%410 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%411 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 1
%412 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%xl.sroa.0.0..sroa_idx.i.i382.prol = getelementptr inbounds %"ll::limb::Limb"* %411, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i383.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i382.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i384.prol = getelementptr inbounds %"ll::limb::Limb"* %412, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i385.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i384.prol, align 8
%413 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i383.prol, i64 %yl.sroa.0.0.copyload.i.i385.prol) #20
%414 = extractvalue { i64, i1 } %413, 0
%415 = extractvalue { i64, i1 } %413, 1
%416 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %414, i64 %.47.i.i376) #20
%417 = extractvalue { i64, i1 } %416, 0
%418 = extractvalue { i64, i1 } %416, 1
%419 = or i1 %415, %418
%..i.i386.prol = zext i1 %419 to i64
%rl.sroa.0.0..sroa_idx16.i.i387.prol = getelementptr inbounds %"ll::limb::Limb"* %410, i64 0, i32 0
store i64 %417, i64* %rl.sroa.0.0..sroa_idx16.i.i387.prol, align 8
%420 = add i32 %402, -1
%421 = icmp eq i32 %420, 0
br label %next-block.i.i388.preheader.split
next-block.i.i388.preheader.split: ; preds = %next-block.i.i388.prol, %next-block.i.i388.preheader
%.unr737 = phi i32 [ %402, %next-block.i.i388.preheader ], [ %420, %next-block.i.i388.prol ]
%.52.i.i378.unr = phi i64 [ %.47.i.i376, %next-block.i.i388.preheader ], [ %..i.i386.prol, %next-block.i.i388.prol ]
%wp.051.i.i379.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i388.preheader ], [ %410, %next-block.i.i388.prol ]
%xp.050.i.i380.unr = phi %"ll::limb::Limb"* [ %11, %next-block.i.i388.preheader ], [ %411, %next-block.i.i388.prol ]
%yp.049.i.i381.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i388.preheader ], [ %412, %next-block.i.i388.prol ]
%422 = icmp ult i32 %409, 1
br i1 %422, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit, label %next-block.i.i388.preheader.split.split
next-block.i.i388.preheader.split.split: ; preds = %next-block.i.i388.preheader.split
br label %next-block.i.i388
next-block.i.i388: ; preds = %next-block.i.i388, %next-block.i.i388.preheader.split.split
%423 = phi i32 [ %.unr737, %next-block.i.i388.preheader.split.split ], [ %445, %next-block.i.i388 ]
%.52.i.i378 = phi i64 [ %.52.i.i378.unr, %next-block.i.i388.preheader.split.split ], [ %..i.i386.1, %next-block.i.i388 ]
%wp.051.i.i379 = phi %"ll::limb::Limb"* [ %wp.051.i.i379.unr, %next-block.i.i388.preheader.split.split ], [ %435, %next-block.i.i388 ]
%xp.050.i.i380 = phi %"ll::limb::Limb"* [ %xp.050.i.i380.unr, %next-block.i.i388.preheader.split.split ], [ %436, %next-block.i.i388 ]
%yp.049.i.i381 = phi %"ll::limb::Limb"* [ %yp.049.i.i381.unr, %next-block.i.i388.preheader.split.split ], [ %437, %next-block.i.i388 ]
%424 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i379, i64 1
%425 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i380, i64 1
%426 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i381, i64 1
%xl.sroa.0.0..sroa_idx.i.i382 = getelementptr inbounds %"ll::limb::Limb"* %425, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i383 = load i64* %xl.sroa.0.0..sroa_idx.i.i382, align 8
%yl.sroa.0.0..sroa_idx.i.i384 = getelementptr inbounds %"ll::limb::Limb"* %426, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i385 = load i64* %yl.sroa.0.0..sroa_idx.i.i384, align 8
%427 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i383, i64 %yl.sroa.0.0.copyload.i.i385) #20
%428 = extractvalue { i64, i1 } %427, 0
%429 = extractvalue { i64, i1 } %427, 1
%430 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %428, i64 %.52.i.i378) #20
%431 = extractvalue { i64, i1 } %430, 0
%432 = extractvalue { i64, i1 } %430, 1
%433 = or i1 %429, %432
%..i.i386 = zext i1 %433 to i64
%rl.sroa.0.0..sroa_idx16.i.i387 = getelementptr inbounds %"ll::limb::Limb"* %424, i64 0, i32 0
store i64 %431, i64* %rl.sroa.0.0..sroa_idx16.i.i387, align 8
%434 = add i32 %423, -1
%435 = getelementptr inbounds %"ll::limb::Limb"* %424, i64 1
%436 = getelementptr inbounds %"ll::limb::Limb"* %425, i64 1
%437 = getelementptr inbounds %"ll::limb::Limb"* %426, i64 1
%xl.sroa.0.0..sroa_idx.i.i382.1 = getelementptr inbounds %"ll::limb::Limb"* %436, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i383.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i382.1, align 8
%yl.sroa.0.0..sroa_idx.i.i384.1 = getelementptr inbounds %"ll::limb::Limb"* %437, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i385.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i384.1, align 8
%438 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i383.1, i64 %yl.sroa.0.0.copyload.i.i385.1) #20
%439 = extractvalue { i64, i1 } %438, 0
%440 = extractvalue { i64, i1 } %438, 1
%441 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %439, i64 %..i.i386) #20
%442 = extractvalue { i64, i1 } %441, 0
%443 = extractvalue { i64, i1 } %441, 1
%444 = or i1 %440, %443
%..i.i386.1 = zext i1 %444 to i64
%rl.sroa.0.0..sroa_idx16.i.i387.1 = getelementptr inbounds %"ll::limb::Limb"* %435, i64 0, i32 0
store i64 %442, i64* %rl.sroa.0.0..sroa_idx16.i.i387.1, align 8
%445 = add i32 %434, -1
%446 = icmp eq i32 %445, 0
br i1 %446, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit.unr-lcssa, label %next-block.i.i388
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit.unr-lcssa: ; preds = %next-block.i.i388
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit: ; preds = %next-block.i.i388.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390.loopexit, %then-block-2502-
br i1 %384, label %while_body.lr.ph.i391, label %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit392
while_body.lr.ph.i391: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390
%.sum580 = add nsw i64 %382, %9
%447 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum580
%448 = bitcast %"ll::limb::Limb"* %447 to i8*
%449 = add i32 %383, -1
%450 = zext i32 %449 to i64
%451 = shl nuw nsw i64 %450, 3
%452 = add nuw nsw i64 %451, 8
tail call void @llvm.memset.p0i8.i64(i8* %448, i8 0, i64 %452, i32 8, i1 false) #20
br label %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit392
_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit392: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit390, %while_body.lr.ph.i391
%453 = xor i8 %z1_neg.2, 1
br label %join19
else-block17.loopexit: ; preds = %while_cond.i364
br label %else-block17
else-block17.loopexit698: ; preds = %while_body.i358
br label %else-block17
else-block17: ; preds = %else-block17.loopexit698, %else-block17.loopexit, %then-block-13036-.i367
%xl.sroa.0.0..sroa_idx43.i.i.i393 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i394 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i393, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i395 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i396 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i395, align 8
%454 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i394, i64 %yl.sroa.0.0.copyload46.i.i.i396) #20
%455 = extractvalue { i64, i1 } %454, 0
%456 = extractvalue { i64, i1 } %454, 1
%.47.i.i.i397 = zext i1 %456 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i398 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %455, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i398, align 8
%457 = add i32 %8, -1
%458 = icmp eq i32 %457, 0
br i1 %458, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411, label %next-block.i.i.i409.preheader
next-block.i.i.i409.preheader: ; preds = %else-block17
%459 = add i32 %6, %4
%460 = add i32 %459, -1
%461 = sub i32 %460, %2
%462 = add i32 %459, -2
%463 = sub i32 %462, %2
%xtraiter732 = and i32 %461, 1
%lcmp.mod733 = icmp ne i32 %xtraiter732, 0
br i1 %lcmp.mod733, label %next-block.i.i.i409.prol, label %next-block.i.i.i409.preheader.split
next-block.i.i.i409.prol: ; preds = %next-block.i.i.i409.preheader
%464 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%465 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%466 = getelementptr inbounds %"ll::limb::Limb"* %11, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i403.prol = getelementptr inbounds %"ll::limb::Limb"* %465, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i404.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i403.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i405.prol = getelementptr inbounds %"ll::limb::Limb"* %466, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i406.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i405.prol, align 8
%467 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i404.prol, i64 %yl.sroa.0.0.copyload.i.i.i406.prol) #20
%468 = extractvalue { i64, i1 } %467, 0
%469 = extractvalue { i64, i1 } %467, 1
%470 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %468, i64 %.47.i.i.i397) #20
%471 = extractvalue { i64, i1 } %470, 0
%472 = extractvalue { i64, i1 } %470, 1
%473 = or i1 %469, %472
%..i.i.i407.prol = zext i1 %473 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i408.prol = getelementptr inbounds %"ll::limb::Limb"* %464, i64 0, i32 0
store i64 %471, i64* %rl.sroa.0.0..sroa_idx16.i.i.i408.prol, align 8
%474 = add i32 %457, -1
%475 = icmp eq i32 %474, 0
br label %next-block.i.i.i409.preheader.split
next-block.i.i.i409.preheader.split: ; preds = %next-block.i.i.i409.prol, %next-block.i.i.i409.preheader
%..i.i.i407.lcssa.unr = phi i64 [ 0, %next-block.i.i.i409.preheader ], [ %..i.i.i407.prol, %next-block.i.i.i409.prol ]
%.unr734 = phi i32 [ %457, %next-block.i.i.i409.preheader ], [ %474, %next-block.i.i.i409.prol ]
%.52.i.i.i399.unr = phi i64 [ %.47.i.i.i397, %next-block.i.i.i409.preheader ], [ %..i.i.i407.prol, %next-block.i.i.i409.prol ]
%wp.051.i.i.i400.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i.i409.preheader ], [ %464, %next-block.i.i.i409.prol ]
%xp.050.i.i.i401.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i.i409.preheader ], [ %465, %next-block.i.i.i409.prol ]
%yp.049.i.i.i402.unr = phi %"ll::limb::Limb"* [ %11, %next-block.i.i.i409.preheader ], [ %466, %next-block.i.i.i409.prol ]
%476 = icmp ult i32 %463, 1
br i1 %476, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit, label %next-block.i.i.i409.preheader.split.split
next-block.i.i.i409.preheader.split.split: ; preds = %next-block.i.i.i409.preheader.split
br label %next-block.i.i.i409
next-block.i.i.i409: ; preds = %next-block.i.i.i409, %next-block.i.i.i409.preheader.split.split
%477 = phi i32 [ %.unr734, %next-block.i.i.i409.preheader.split.split ], [ %499, %next-block.i.i.i409 ]
%.52.i.i.i399 = phi i64 [ %.52.i.i.i399.unr, %next-block.i.i.i409.preheader.split.split ], [ %..i.i.i407.1, %next-block.i.i.i409 ]
%wp.051.i.i.i400 = phi %"ll::limb::Limb"* [ %wp.051.i.i.i400.unr, %next-block.i.i.i409.preheader.split.split ], [ %489, %next-block.i.i.i409 ]
%xp.050.i.i.i401 = phi %"ll::limb::Limb"* [ %xp.050.i.i.i401.unr, %next-block.i.i.i409.preheader.split.split ], [ %490, %next-block.i.i.i409 ]
%yp.049.i.i.i402 = phi %"ll::limb::Limb"* [ %yp.049.i.i.i402.unr, %next-block.i.i.i409.preheader.split.split ], [ %491, %next-block.i.i.i409 ]
%478 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i400, i64 1
%479 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i401, i64 1
%480 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i402, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i403 = getelementptr inbounds %"ll::limb::Limb"* %479, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i404 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i403, align 8
%yl.sroa.0.0..sroa_idx.i.i.i405 = getelementptr inbounds %"ll::limb::Limb"* %480, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i406 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i405, align 8
%481 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i404, i64 %yl.sroa.0.0.copyload.i.i.i406) #20
%482 = extractvalue { i64, i1 } %481, 0
%483 = extractvalue { i64, i1 } %481, 1
%484 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %482, i64 %.52.i.i.i399) #20
%485 = extractvalue { i64, i1 } %484, 0
%486 = extractvalue { i64, i1 } %484, 1
%487 = or i1 %483, %486
%..i.i.i407 = zext i1 %487 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i408 = getelementptr inbounds %"ll::limb::Limb"* %478, i64 0, i32 0
store i64 %485, i64* %rl.sroa.0.0..sroa_idx16.i.i.i408, align 8
%488 = add i32 %477, -1
%489 = getelementptr inbounds %"ll::limb::Limb"* %478, i64 1
%490 = getelementptr inbounds %"ll::limb::Limb"* %479, i64 1
%491 = getelementptr inbounds %"ll::limb::Limb"* %480, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i403.1 = getelementptr inbounds %"ll::limb::Limb"* %490, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i404.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i403.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i405.1 = getelementptr inbounds %"ll::limb::Limb"* %491, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i406.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i405.1, align 8
%492 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i404.1, i64 %yl.sroa.0.0.copyload.i.i.i406.1) #20
%493 = extractvalue { i64, i1 } %492, 0
%494 = extractvalue { i64, i1 } %492, 1
%495 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %493, i64 %..i.i.i407) #20
%496 = extractvalue { i64, i1 } %495, 0
%497 = extractvalue { i64, i1 } %495, 1
%498 = or i1 %494, %497
%..i.i.i407.1 = zext i1 %498 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i408.1 = getelementptr inbounds %"ll::limb::Limb"* %489, i64 0, i32 0
store i64 %496, i64* %rl.sroa.0.0..sroa_idx16.i.i.i408.1, align 8
%499 = add i32 %488, -1
%500 = icmp eq i32 %499, 0
br i1 %500, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit.unr-lcssa, label %next-block.i.i.i409
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit.unr-lcssa: ; preds = %next-block.i.i.i409
%..i.i.i407.lcssa.ph = phi i64 [ %..i.i.i407.1, %next-block.i.i.i409 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit: ; preds = %next-block.i.i.i409.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit.unr-lcssa
%..i.i.i407.lcssa = phi i64 [ %..i.i.i407.lcssa.unr, %next-block.i.i.i409.preheader.split ], [ %..i.i.i407.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit, %else-block17
%..lcssa.i.i.i410 = phi i64 [ %.47.i.i.i397, %else-block17 ], [ %..i.i.i407.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411.loopexit ]
%501 = icmp eq i64 %..lcssa.i.i.i410, 1
br i1 %501, label %loop_body.i413.preheader, label %next-block3.i419
loop_body.i413.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411
br label %loop_body.i413
loop_body.i413: ; preds = %loop_body.i413.preheader, %next-block.i416
%i.0.i412 = phi i32 [ %509, %next-block.i416 ], [ %8, %loop_body.i413.preheader ]
%502 = icmp slt i32 %i.0.i412, %7
br i1 %502, label %next-block.i416, label %join19.loopexit697
next-block.i416: ; preds = %loop_body.i413
%503 = sext i32 %i.0.i412 to i64
%504 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %503, i32 0
%505 = load i64* %504, align 8
%506 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %505, i64 1) #20
%507 = extractvalue { i64, i1 } %506, 0
%508 = extractvalue { i64, i1 } %506, 1
%.sum578 = add nsw i64 %503, %9
%x.sroa.0.0..sroa_idx6.i415 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum578, i32 0
store i64 %507, i64* %x.sroa.0.0..sroa_idx6.i415, align 8
%509 = add i32 %i.0.i412, 1
br i1 %508, label %loop_body.i413, label %next-block3.i419.loopexit
next-block3.i419.loopexit: ; preds = %next-block.i416
%.lcssa704 = phi i32 [ %509, %next-block.i416 ]
br label %next-block3.i419
next-block3.i419: ; preds = %next-block3.i419.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411
%i.1.i417 = phi i32 [ %8, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i411 ], [ %.lcssa704, %next-block3.i419.loopexit ]
%510 = icmp ne %"ll::limb::Limb"* %12, %3
%511 = icmp sgt i32 %7, %i.1.i417
%..i418 = and i1 %510, %511
br i1 %..i418, label %then-block-803-.i420, label %join19
then-block-803-.i420: ; preds = %next-block3.i419
%512 = sext i32 %i.1.i417 to i64
%513 = sub i32 %7, %i.1.i417
%514 = icmp sgt i32 %513, 0
br i1 %514, label %while_body.lr.ph.i.i.i421, label %join19
while_body.lr.ph.i.i.i421: ; preds = %then-block-803-.i420
%515 = add i32 %2, -1
%516 = sub i32 %515, %i.1.i417
%517 = sub i32 %516, %6
%518 = zext i32 %517 to i64
%519 = add nuw nsw i64 %518, 1
%end.idx654 = add nuw nsw i64 %518, 1
%n.vec656 = and i64 %519, 8589934588
%cmp.zero658 = icmp eq i64 %n.vec656, 0
%520 = sext i32 %i.1.i417 to i64
%521 = sub i32 %2, %6
%522 = sext i32 %521 to i64
%523 = add nsw i64 %520, %522
%524 = add i32 %2, -1
%525 = sub i32 %524, %i.1.i417
%526 = sub i32 %525, %6
%527 = zext i32 %526 to i64
br i1 %cmp.zero658, label %middle.block651, label %vector.memcheck672
vector.memcheck672: ; preds = %while_body.lr.ph.i.i.i421
%scevgep660 = getelementptr %"ll::limb::Limb"* %0, i64 %523
%528 = add nsw i64 %520, %527
%scevgep666 = getelementptr %"ll::limb::Limb"* %3, i64 %528
%bound0668 = icmp ule %"ll::limb::Limb"* %scevgep660, %scevgep666
%scevgep664 = getelementptr %"ll::limb::Limb"* %3, i64 %520
%529 = add nsw i64 %523, %527
%scevgep662 = getelementptr %"ll::limb::Limb"* %0, i64 %529
%bound1669 = icmp ule %"ll::limb::Limb"* %scevgep664, %scevgep662
%memcheck.conflict671 = and i1 %bound0668, %bound1669
br i1 %memcheck.conflict671, label %middle.block651, label %vector.ph649
vector.ph649: ; preds = %vector.memcheck672
%broadcast.splatinsert683 = insertelement <2 x i64> undef, i64 %512, i32 0
%broadcast.splat684 = shufflevector <2 x i64> %broadcast.splatinsert683, <2 x i64> undef, <2 x i32> zeroinitializer
br label %vector.body650
vector.body650: ; preds = %vector.body650, %vector.ph649
%index653 = phi i64 [ 0, %vector.ph649 ], [ %index.next678, %vector.body650 ]
%broadcast.splatinsert679 = insertelement <2 x i64> undef, i64 %index653, i32 0
%broadcast.splat680 = shufflevector <2 x i64> %broadcast.splatinsert679, <2 x i64> undef, <2 x i32> zeroinitializer
%induction681 = add <2 x i64> %broadcast.splat680, <i64 0, i64 1>
%530 = add <2 x i64> %induction681, %broadcast.splat684
%531 = extractelement <2 x i64> %530, i32 0
%532 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %531, i32 0
%.lhs = extractelement <2 x i64> %530, i32 0
%533 = add i64 %.lhs, %9
%534 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %533, i32 0
%535 = bitcast i64* %532 to <2 x i64>*
%wide.load687 = load <2 x i64>* %535, align 8
%536 = getelementptr i64* %532, i64 2
%537 = bitcast i64* %536 to <2 x i64>*
%wide.load688 = load <2 x i64>* %537, align 8
%538 = bitcast i64* %534 to <2 x i64>*
store <2 x i64> %wide.load687, <2 x i64>* %538, align 8
%539 = getelementptr i64* %534, i64 2
%540 = bitcast i64* %539 to <2 x i64>*
store <2 x i64> %wide.load688, <2 x i64>* %540, align 8
%index.next678 = add i64 %index653, 4
%541 = icmp eq i64 %index.next678, %n.vec656
br i1 %541, label %middle.block651.loopexit, label %vector.body650, !llvm.loop !115
middle.block651.loopexit: ; preds = %vector.body650
br label %middle.block651
middle.block651: ; preds = %middle.block651.loopexit, %vector.memcheck672, %while_body.lr.ph.i.i.i421
%resume.val673 = phi i64 [ 0, %while_body.lr.ph.i.i.i421 ], [ 0, %vector.memcheck672 ], [ %n.vec656, %middle.block651.loopexit ]
%cmp.n677 = icmp eq i64 %end.idx654, %resume.val673
br i1 %cmp.n677, label %join19, label %while_body.i.i.i427.preheader
while_body.i.i.i427.preheader: ; preds = %middle.block651
%542 = sub i32 %2, %i.1.i417
%543 = sub i32 %542, %6
%544 = trunc i64 %resume.val673 to i32
%545 = sub i32 %543, %544
%546 = add i32 %2, -1
%547 = sub i32 %546, %i.1.i417
%548 = sub i32 %547, %6
%549 = sub i32 %548, %544
%xtraiter730 = and i32 %545, 1
%lcmp.mod731 = icmp ne i32 %xtraiter730, 0
br i1 %lcmp.mod731, label %while_body.i.i.i427.prol, label %while_body.i.i.i427.preheader.split
while_body.i.i.i427.prol: ; preds = %while_body.i.i.i427.preheader
%.sum.i.i423.prol = add i64 %resume.val673, %512
%550 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i423.prol, i32 0
%.sum577.prol = add i64 %.sum.i.i423.prol, %9
%551 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum577.prol, i32 0
%552 = load i64* %550, align 8
store i64 %552, i64* %551, align 8
%indvars.iv.next.i.i.i424.prol = add nuw nsw i64 %resume.val673, 1
%lftr.wideiv.prol = trunc i64 %resume.val673 to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %517
br label %while_body.i.i.i427.preheader.split
while_body.i.i.i427.preheader.split: ; preds = %while_body.i.i.i427.prol, %while_body.i.i.i427.preheader
%indvars.iv.i.i.i422.unr = phi i64 [ %resume.val673, %while_body.i.i.i427.preheader ], [ %indvars.iv.next.i.i.i424.prol, %while_body.i.i.i427.prol ]
%553 = icmp ult i32 %549, 1
br i1 %553, label %join19.loopexit696, label %while_body.i.i.i427.preheader.split.split
while_body.i.i.i427.preheader.split.split: ; preds = %while_body.i.i.i427.preheader.split
br label %while_body.i.i.i427
while_body.i.i.i427: ; preds = %while_body.i.i.i427, %while_body.i.i.i427.preheader.split.split
%indvars.iv.i.i.i422 = phi i64 [ %indvars.iv.i.i.i422.unr, %while_body.i.i.i427.preheader.split.split ], [ %indvars.iv.next.i.i.i424.1, %while_body.i.i.i427 ]
%.sum.i.i423 = add i64 %indvars.iv.i.i.i422, %512
%554 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i423, i32 0
%.sum577 = add i64 %.sum.i.i423, %9
%555 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum577, i32 0
%556 = load i64* %554, align 8
store i64 %556, i64* %555, align 8
%indvars.iv.next.i.i.i424 = add nuw nsw i64 %indvars.iv.i.i.i422, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i422 to i32
%.sum.i.i423.1 = add i64 %indvars.iv.next.i.i.i424, %512
%557 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i423.1, i32 0
%.sum577.1 = add i64 %.sum.i.i423.1, %9
%558 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum577.1, i32 0
%559 = load i64* %557, align 8
store i64 %559, i64* %558, align 8
%indvars.iv.next.i.i.i424.1 = add nuw nsw i64 %indvars.iv.next.i.i.i424, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i424 to i32
%exitcond.1 = icmp eq i32 %lftr.wideiv.1, %517
br i1 %exitcond.1, label %join19.loopexit696.unr-lcssa, label %while_body.i.i.i427, !llvm.loop !116
join19.loopexit.unr-lcssa: ; preds = %next-block.i.i353
br label %join19.loopexit
join19.loopexit: ; preds = %next-block.i.i353.preheader.split, %join19.loopexit.unr-lcssa
br label %join19
join19.loopexit696.unr-lcssa: ; preds = %while_body.i.i.i427
br label %join19.loopexit696
join19.loopexit696: ; preds = %while_body.i.i.i427.preheader.split, %join19.loopexit696.unr-lcssa
br label %join19
join19.loopexit697: ; preds = %loop_body.i413
br label %join19
join19: ; preds = %join19.loopexit697, %join19.loopexit696, %join19.loopexit, %middle.block651, %then-block-803-.i420, %next-block3.i419, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336, %else-block9, %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit392
%z1_neg.5 = phi i8 [ %453, %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit392 ], [ %335, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit336 ], [ %z1_neg.2, %else-block9 ], [ %z1_neg.2, %next-block3.i419 ], [ %z1_neg.2, %then-block-803-.i420 ], [ %z1_neg.2, %middle.block651 ], [ %z1_neg.2, %join19.loopexit ], [ %z1_neg.2, %join19.loopexit696 ], [ %z1_neg.2, %join19.loopexit697 ]
%560 = shl i32 %7, 1
%561 = sext i32 %560 to i64
%562 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %561
%563 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %561
%564 = icmp slt i32 %7, 21
br i1 %564, label %then-block-2005-.i541, label %else-block.i551
else-block.i551: ; preds = %join19
%565 = icmp slt i32 %7, 101
%566 = mul i32 %7, 3
%567 = icmp sge i32 %560, %566
br i1 %565, label %then-block-2018-.i552, label %else-block2.i555
then-block-2018-.i552: ; preds = %else-block.i551
br i1 %567, label %then-block-2029-.i553, label %else-block1.i554
then-block-2029-.i553: ; preds = %then-block-2018-.i552
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %0, i32 %7, %"ll::limb::Limb"* %12, i32 %7, %"ll::limb::Limb"* %563)
br label %then-block-2018-.i543
else-block1.i554: ; preds = %then-block-2018-.i552
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %0, i32 %7, %"ll::limb::Limb"* %12, i32 %7, %"ll::limb::Limb"* %563)
br label %then-block-2018-.i543
else-block2.i555: ; preds = %else-block.i551
br i1 %567, label %then-block-2062-.i556, label %else-block3.i557
then-block-2062-.i556: ; preds = %else-block2.i555
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %0, i32 %7, %"ll::limb::Limb"* %12, i32 %7, %"ll::limb::Limb"* %563)
br label %else-block2.i546
else-block3.i557: ; preds = %else-block2.i555
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %0, i32 %7, %"ll::limb::Limb"* %12, i32 %7, %"ll::limb::Limb"* %563)
br label %else-block2.i546
then-block-2005-.i541: ; preds = %join19
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %0, i32 %7, %"ll::limb::Limb"* %12, i32 %7)
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
then-block-2018-.i543: ; preds = %then-block-2029-.i553, %else-block1.i554
%568 = icmp slt i32 %560, %566
br i1 %568, label %else-block1.i545, label %then-block-2029-.i544
then-block-2029-.i544: ; preds = %then-block-2018-.i543
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
else-block1.i545: ; preds = %then-block-2018-.i543
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
else-block2.i546: ; preds = %else-block3.i557, %then-block-2062-.i556
%569 = icmp slt i32 %560, %566
br i1 %569, label %else-block3.i548, label %then-block-2062-.i547
then-block-2062-.i547: ; preds = %else-block2.i546
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
else-block3.i548: ; preds = %else-block2.i546
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549: ; preds = %then-block-2005-.i541, %then-block-2029-.i544, %else-block1.i545, %then-block-2062-.i547, %else-block3.i548
%570 = icmp slt i32 %8, 21
br i1 %570, label %then-block-2005-.i, label %else-block.i
then-block-2005-.i: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %562, %"ll::limb::Limb"* %10, i32 %6, %"ll::limb::Limb"* %11, i32 %8)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block.i: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit549
%571 = icmp slt i32 %8, 101
%572 = shl nsw i32 %6, 1
%573 = mul i32 %8, 3
%574 = icmp sge i32 %572, %573
br i1 %571, label %then-block-2018-.i, label %else-block2.i
then-block-2018-.i: ; preds = %else-block.i
br i1 %574, label %then-block-2029-.i, label %else-block1.i
then-block-2029-.i: ; preds = %then-block-2018-.i
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %562, %"ll::limb::Limb"* %10, i32 %6, %"ll::limb::Limb"* %11, i32 %8, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block1.i: ; preds = %then-block-2018-.i
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %562, %"ll::limb::Limb"* %10, i32 %6, %"ll::limb::Limb"* %11, i32 %8, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block2.i: ; preds = %else-block.i
br i1 %574, label %then-block-2062-.i, label %else-block3.i
then-block-2062-.i: ; preds = %else-block2.i
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %562, %"ll::limb::Limb"* %10, i32 %6, %"ll::limb::Limb"* %11, i32 %8, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block3.i: ; preds = %else-block2.i
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %562, %"ll::limb::Limb"* %10, i32 %6, %"ll::limb::Limb"* %11, i32 %8, %"ll::limb::Limb"* %563)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit: ; preds = %then-block-2005-.i, %then-block-2029-.i, %else-block1.i, %then-block-2062-.i, %else-block3.i
%xl.sroa.0.0..sroa_idx43.i.i429 = getelementptr inbounds %"ll::limb::Limb"* %562, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i430 = load i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
%yl.sroa.0.0..sroa_idx45.i.i431 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i432 = load i64* %yl.sroa.0.0..sroa_idx45.i.i431, align 8
%575 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i430, i64 %yl.sroa.0.0.copyload46.i.i432) #20
%576 = extractvalue { i64, i1 } %575, 0
%577 = extractvalue { i64, i1 } %575, 1
%.47.i.i433 = zext i1 %577 to i64
store i64 %576, i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
%578 = add i32 %7, -1
%579 = icmp eq i32 %578, 0
br i1 %579, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit, label %next-block.i.i445.preheader
next-block.i.i445.preheader: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
%580 = add i32 %2, -1
%581 = sub i32 %580, %6
%582 = add i32 %2, -2
%583 = sub i32 %582, %6
%xtraiter721 = and i32 %581, 1
%lcmp.mod722 = icmp ne i32 %xtraiter721, 0
br i1 %lcmp.mod722, label %next-block.i.i445.prol, label %next-block.i.i445.preheader.split
next-block.i.i445.prol: ; preds = %next-block.i.i445.preheader
%584 = getelementptr inbounds %"ll::limb::Limb"* %562, i64 1
%585 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%xl.sroa.0.0..sroa_idx.i.i439.prol = getelementptr inbounds %"ll::limb::Limb"* %584, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i440.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i439.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i441.prol = getelementptr inbounds %"ll::limb::Limb"* %585, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i442.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i441.prol, align 8
%586 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i440.prol, i64 %yl.sroa.0.0.copyload.i.i442.prol) #20
%587 = extractvalue { i64, i1 } %586, 0
%588 = extractvalue { i64, i1 } %586, 1
%589 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %587, i64 %.47.i.i433) #20
%590 = extractvalue { i64, i1 } %589, 0
%591 = extractvalue { i64, i1 } %589, 1
%592 = or i1 %588, %591
%..i.i443.prol = zext i1 %592 to i64
store i64 %590, i64* %xl.sroa.0.0..sroa_idx.i.i439.prol, align 8
%593 = add i32 %578, -1
%594 = icmp eq i32 %593, 0
br label %next-block.i.i445.preheader.split
next-block.i.i445.preheader.split: ; preds = %next-block.i.i445.prol, %next-block.i.i445.preheader
%..i.i443.lcssa.unr = phi i64 [ 0, %next-block.i.i445.preheader ], [ %..i.i443.prol, %next-block.i.i445.prol ]
%.unr723 = phi i32 [ %578, %next-block.i.i445.preheader ], [ %593, %next-block.i.i445.prol ]
%.52.i.i435.unr = phi i64 [ %.47.i.i433, %next-block.i.i445.preheader ], [ %..i.i443.prol, %next-block.i.i445.prol ]
%wp.051.i.i436.unr = phi %"ll::limb::Limb"* [ %562, %next-block.i.i445.preheader ], [ %584, %next-block.i.i445.prol ]
%yp.049.i.i438.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i445.preheader ], [ %585, %next-block.i.i445.prol ]
%595 = icmp ult i32 %583, 1
br i1 %595, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, label %next-block.i.i445.preheader.split.split
next-block.i.i445.preheader.split.split: ; preds = %next-block.i.i445.preheader.split
br label %next-block.i.i445
next-block.i.i445: ; preds = %next-block.i.i445, %next-block.i.i445.preheader.split.split
%596 = phi i32 [ %.unr723, %next-block.i.i445.preheader.split.split ], [ %616, %next-block.i.i445 ]
%.52.i.i435 = phi i64 [ %.52.i.i435.unr, %next-block.i.i445.preheader.split.split ], [ %..i.i443.1, %next-block.i.i445 ]
%wp.051.i.i436 = phi %"ll::limb::Limb"* [ %wp.051.i.i436.unr, %next-block.i.i445.preheader.split.split ], [ %607, %next-block.i.i445 ]
%yp.049.i.i438 = phi %"ll::limb::Limb"* [ %yp.049.i.i438.unr, %next-block.i.i445.preheader.split.split ], [ %608, %next-block.i.i445 ]
%597 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i436, i64 1
%598 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i438, i64 1
%xl.sroa.0.0..sroa_idx.i.i439 = getelementptr inbounds %"ll::limb::Limb"* %597, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i440 = load i64* %xl.sroa.0.0..sroa_idx.i.i439, align 8
%yl.sroa.0.0..sroa_idx.i.i441 = getelementptr inbounds %"ll::limb::Limb"* %598, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i442 = load i64* %yl.sroa.0.0..sroa_idx.i.i441, align 8
%599 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i440, i64 %yl.sroa.0.0.copyload.i.i442) #20
%600 = extractvalue { i64, i1 } %599, 0
%601 = extractvalue { i64, i1 } %599, 1
%602 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %600, i64 %.52.i.i435) #20
%603 = extractvalue { i64, i1 } %602, 0
%604 = extractvalue { i64, i1 } %602, 1
%605 = or i1 %601, %604
%..i.i443 = zext i1 %605 to i64
store i64 %603, i64* %xl.sroa.0.0..sroa_idx.i.i439, align 8
%606 = add i32 %596, -1
%607 = getelementptr inbounds %"ll::limb::Limb"* %597, i64 1
%608 = getelementptr inbounds %"ll::limb::Limb"* %598, i64 1
%xl.sroa.0.0..sroa_idx.i.i439.1 = getelementptr inbounds %"ll::limb::Limb"* %607, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i440.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i439.1, align 8
%yl.sroa.0.0..sroa_idx.i.i441.1 = getelementptr inbounds %"ll::limb::Limb"* %608, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i442.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i441.1, align 8
%609 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i440.1, i64 %yl.sroa.0.0.copyload.i.i442.1) #20
%610 = extractvalue { i64, i1 } %609, 0
%611 = extractvalue { i64, i1 } %609, 1
%612 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %610, i64 %..i.i443) #20
%613 = extractvalue { i64, i1 } %612, 0
%614 = extractvalue { i64, i1 } %612, 1
%615 = or i1 %611, %614
%..i.i443.1 = zext i1 %615 to i64
store i64 %613, i64* %xl.sroa.0.0..sroa_idx.i.i439.1, align 8
%616 = add i32 %606, -1
%617 = icmp eq i32 %616, 0
br i1 %617, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa, label %next-block.i.i445
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa: ; preds = %next-block.i.i445
%..i.i443.lcssa.ph = phi i64 [ %..i.i443.1, %next-block.i.i445 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit: ; preds = %next-block.i.i445.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa
%..i.i443.lcssa = phi i64 [ %..i.i443.lcssa.unr, %next-block.i.i445.preheader.split ], [ %..i.i443.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa ]
%yl.sroa.0.0.copyload46.i.i450.pre = load i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
%yl.sroa.0.0.copyload46.i.i450 = phi i64 [ %576, %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit ], [ %yl.sroa.0.0.copyload46.i.i450.pre, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit ]
%..lcssa.i.i446 = phi i64 [ %.47.i.i433, %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit ], [ %..i.i443.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit ]
%xl.sroa.0.0..sroa_idx43.i.i447 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i448 = load i64* %xl.sroa.0.0..sroa_idx43.i.i447, align 8
%618 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i448, i64 %yl.sroa.0.0.copyload46.i.i450) #20
%619 = extractvalue { i64, i1 } %618, 0
%620 = extractvalue { i64, i1 } %618, 1
%.47.i.i451 = zext i1 %620 to i64
store i64 %619, i64* %yl.sroa.0.0..sroa_idx45.i.i431, align 8
br i1 %579, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465, label %next-block.i.i463.preheader
next-block.i.i463.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
%621 = add i32 %2, -1
%622 = sub i32 %621, %6
%623 = add i32 %2, -2
%624 = sub i32 %623, %6
%xtraiter718 = and i32 %622, 1
%lcmp.mod719 = icmp ne i32 %xtraiter718, 0
br i1 %lcmp.mod719, label %next-block.i.i463.prol, label %next-block.i.i463.preheader.split
next-block.i.i463.prol: ; preds = %next-block.i.i463.preheader
%625 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%626 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%627 = getelementptr inbounds %"ll::limb::Limb"* %562, i64 1
%xl.sroa.0.0..sroa_idx.i.i457.prol = getelementptr inbounds %"ll::limb::Limb"* %626, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i458.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i457.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i459.prol = getelementptr inbounds %"ll::limb::Limb"* %627, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i460.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i459.prol, align 8
%628 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i458.prol, i64 %yl.sroa.0.0.copyload.i.i460.prol) #20
%629 = extractvalue { i64, i1 } %628, 0
%630 = extractvalue { i64, i1 } %628, 1
%631 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %629, i64 %.47.i.i451) #20
%632 = extractvalue { i64, i1 } %631, 0
%633 = extractvalue { i64, i1 } %631, 1
%634 = or i1 %630, %633
%..i.i461.prol = zext i1 %634 to i64
%rl.sroa.0.0..sroa_idx16.i.i462.prol = getelementptr inbounds %"ll::limb::Limb"* %625, i64 0, i32 0
store i64 %632, i64* %rl.sroa.0.0..sroa_idx16.i.i462.prol, align 8
%635 = add i32 %578, -1
%636 = icmp eq i32 %635, 0
br label %next-block.i.i463.preheader.split
next-block.i.i463.preheader.split: ; preds = %next-block.i.i463.prol, %next-block.i.i463.preheader
%..i.i461.lcssa.unr = phi i64 [ 0, %next-block.i.i463.preheader ], [ %..i.i461.prol, %next-block.i.i463.prol ]
%.unr720 = phi i32 [ %578, %next-block.i.i463.preheader ], [ %635, %next-block.i.i463.prol ]
%.52.i.i453.unr = phi i64 [ %.47.i.i451, %next-block.i.i463.preheader ], [ %..i.i461.prol, %next-block.i.i463.prol ]
%wp.051.i.i454.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i463.preheader ], [ %625, %next-block.i.i463.prol ]
%xp.050.i.i455.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i463.preheader ], [ %626, %next-block.i.i463.prol ]
%yp.049.i.i456.unr = phi %"ll::limb::Limb"* [ %562, %next-block.i.i463.preheader ], [ %627, %next-block.i.i463.prol ]
%637 = icmp ult i32 %624, 1
br i1 %637, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit, label %next-block.i.i463.preheader.split.split
next-block.i.i463.preheader.split.split: ; preds = %next-block.i.i463.preheader.split
br label %next-block.i.i463
next-block.i.i463: ; preds = %next-block.i.i463, %next-block.i.i463.preheader.split.split
%638 = phi i32 [ %.unr720, %next-block.i.i463.preheader.split.split ], [ %660, %next-block.i.i463 ]
%.52.i.i453 = phi i64 [ %.52.i.i453.unr, %next-block.i.i463.preheader.split.split ], [ %..i.i461.1, %next-block.i.i463 ]
%wp.051.i.i454 = phi %"ll::limb::Limb"* [ %wp.051.i.i454.unr, %next-block.i.i463.preheader.split.split ], [ %650, %next-block.i.i463 ]
%xp.050.i.i455 = phi %"ll::limb::Limb"* [ %xp.050.i.i455.unr, %next-block.i.i463.preheader.split.split ], [ %651, %next-block.i.i463 ]
%yp.049.i.i456 = phi %"ll::limb::Limb"* [ %yp.049.i.i456.unr, %next-block.i.i463.preheader.split.split ], [ %652, %next-block.i.i463 ]
%639 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i454, i64 1
%640 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i455, i64 1
%641 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i456, i64 1
%xl.sroa.0.0..sroa_idx.i.i457 = getelementptr inbounds %"ll::limb::Limb"* %640, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i458 = load i64* %xl.sroa.0.0..sroa_idx.i.i457, align 8
%yl.sroa.0.0..sroa_idx.i.i459 = getelementptr inbounds %"ll::limb::Limb"* %641, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i460 = load i64* %yl.sroa.0.0..sroa_idx.i.i459, align 8
%642 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i458, i64 %yl.sroa.0.0.copyload.i.i460) #20
%643 = extractvalue { i64, i1 } %642, 0
%644 = extractvalue { i64, i1 } %642, 1
%645 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %643, i64 %.52.i.i453) #20
%646 = extractvalue { i64, i1 } %645, 0
%647 = extractvalue { i64, i1 } %645, 1
%648 = or i1 %644, %647
%..i.i461 = zext i1 %648 to i64
%rl.sroa.0.0..sroa_idx16.i.i462 = getelementptr inbounds %"ll::limb::Limb"* %639, i64 0, i32 0
store i64 %646, i64* %rl.sroa.0.0..sroa_idx16.i.i462, align 8
%649 = add i32 %638, -1
%650 = getelementptr inbounds %"ll::limb::Limb"* %639, i64 1
%651 = getelementptr inbounds %"ll::limb::Limb"* %640, i64 1
%652 = getelementptr inbounds %"ll::limb::Limb"* %641, i64 1
%xl.sroa.0.0..sroa_idx.i.i457.1 = getelementptr inbounds %"ll::limb::Limb"* %651, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i458.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i457.1, align 8
%yl.sroa.0.0..sroa_idx.i.i459.1 = getelementptr inbounds %"ll::limb::Limb"* %652, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i460.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i459.1, align 8
%653 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i458.1, i64 %yl.sroa.0.0.copyload.i.i460.1) #20
%654 = extractvalue { i64, i1 } %653, 0
%655 = extractvalue { i64, i1 } %653, 1
%656 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %654, i64 %..i.i461) #20
%657 = extractvalue { i64, i1 } %656, 0
%658 = extractvalue { i64, i1 } %656, 1
%659 = or i1 %655, %658
%..i.i461.1 = zext i1 %659 to i64
%rl.sroa.0.0..sroa_idx16.i.i462.1 = getelementptr inbounds %"ll::limb::Limb"* %650, i64 0, i32 0
store i64 %657, i64* %rl.sroa.0.0..sroa_idx16.i.i462.1, align 8
%660 = add i32 %649, -1
%661 = icmp eq i32 %660, 0
br i1 %661, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit.unr-lcssa, label %next-block.i.i463
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit.unr-lcssa: ; preds = %next-block.i.i463
%..i.i461.lcssa.ph = phi i64 [ %..i.i461.1, %next-block.i.i463 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit: ; preds = %next-block.i.i463.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit.unr-lcssa
%..i.i461.lcssa = phi i64 [ %..i.i461.lcssa.unr, %next-block.i.i463.preheader.split ], [ %..i.i461.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
%..lcssa.i.i464 = phi i64 [ %.47.i.i451, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit ], [ %..i.i461.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465.loopexit ]
%662 = add nuw nsw i64 %..lcssa.i.i464, %..lcssa.i.i446
%.sum = add nsw i64 %561, %9
%663 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum
%664 = sub i32 %6, %7
%665 = add i32 %664, %8
%xl.sroa.0.0.copyload44.i.i.i467 = load i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i468 = getelementptr inbounds %"ll::limb::Limb"* %663, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i469 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i468, align 8
%666 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i467, i64 %yl.sroa.0.0.copyload46.i.i.i469) #20
%667 = extractvalue { i64, i1 } %666, 0
%668 = extractvalue { i64, i1 } %666, 1
%.47.i.i.i470 = zext i1 %668 to i64
store i64 %667, i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
%669 = add i32 %665, -1
%670 = icmp eq i32 %669, 0
br i1 %670, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, label %next-block.i.i.i482.preheader
next-block.i.i.i482.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465
%671 = mul i32 %6, 3
%672 = add i32 %4, %671
%673 = add i32 %672, -1
%674 = mul i32 %2, 2
%675 = sub i32 %673, %674
%676 = add i32 %672, -2
%677 = sub i32 %676, %674
%xtraiter715 = and i32 %675, 1
%lcmp.mod716 = icmp ne i32 %xtraiter715, 0
br i1 %lcmp.mod716, label %next-block.i.i.i482.prol, label %next-block.i.i.i482.preheader.split
next-block.i.i.i482.prol: ; preds = %next-block.i.i.i482.preheader
%678 = getelementptr inbounds %"ll::limb::Limb"* %562, i64 1
%679 = getelementptr inbounds %"ll::limb::Limb"* %663, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i476.prol = getelementptr inbounds %"ll::limb::Limb"* %678, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i477.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i476.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i478.prol = getelementptr inbounds %"ll::limb::Limb"* %679, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i479.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i478.prol, align 8
%680 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i477.prol, i64 %yl.sroa.0.0.copyload.i.i.i479.prol) #20
%681 = extractvalue { i64, i1 } %680, 0
%682 = extractvalue { i64, i1 } %680, 1
%683 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %681, i64 %.47.i.i.i470) #20
%684 = extractvalue { i64, i1 } %683, 0
%685 = extractvalue { i64, i1 } %683, 1
%686 = or i1 %682, %685
%..i.i.i480.prol = zext i1 %686 to i64
store i64 %684, i64* %xl.sroa.0.0..sroa_idx.i.i.i476.prol, align 8
%687 = add i32 %669, -1
%688 = icmp eq i32 %687, 0
br label %next-block.i.i.i482.preheader.split
next-block.i.i.i482.preheader.split: ; preds = %next-block.i.i.i482.prol, %next-block.i.i.i482.preheader
%..i.i.i480.lcssa.unr = phi i64 [ 0, %next-block.i.i.i482.preheader ], [ %..i.i.i480.prol, %next-block.i.i.i482.prol ]
%.unr717 = phi i32 [ %669, %next-block.i.i.i482.preheader ], [ %687, %next-block.i.i.i482.prol ]
%.52.i.i.i472.unr = phi i64 [ %.47.i.i.i470, %next-block.i.i.i482.preheader ], [ %..i.i.i480.prol, %next-block.i.i.i482.prol ]
%wp.051.i.i.i473.unr = phi %"ll::limb::Limb"* [ %562, %next-block.i.i.i482.preheader ], [ %678, %next-block.i.i.i482.prol ]
%yp.049.i.i.i475.unr = phi %"ll::limb::Limb"* [ %663, %next-block.i.i.i482.preheader ], [ %679, %next-block.i.i.i482.prol ]
%689 = icmp ult i32 %677, 1
br i1 %689, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, label %next-block.i.i.i482.preheader.split.split
next-block.i.i.i482.preheader.split.split: ; preds = %next-block.i.i.i482.preheader.split
br label %next-block.i.i.i482
next-block.i.i.i482: ; preds = %next-block.i.i.i482, %next-block.i.i.i482.preheader.split.split
%690 = phi i32 [ %.unr717, %next-block.i.i.i482.preheader.split.split ], [ %710, %next-block.i.i.i482 ]
%.52.i.i.i472 = phi i64 [ %.52.i.i.i472.unr, %next-block.i.i.i482.preheader.split.split ], [ %..i.i.i480.1, %next-block.i.i.i482 ]
%wp.051.i.i.i473 = phi %"ll::limb::Limb"* [ %wp.051.i.i.i473.unr, %next-block.i.i.i482.preheader.split.split ], [ %701, %next-block.i.i.i482 ]
%yp.049.i.i.i475 = phi %"ll::limb::Limb"* [ %yp.049.i.i.i475.unr, %next-block.i.i.i482.preheader.split.split ], [ %702, %next-block.i.i.i482 ]
%691 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i473, i64 1
%692 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i475, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i476 = getelementptr inbounds %"ll::limb::Limb"* %691, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i477 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i476, align 8
%yl.sroa.0.0..sroa_idx.i.i.i478 = getelementptr inbounds %"ll::limb::Limb"* %692, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i479 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i478, align 8
%693 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i477, i64 %yl.sroa.0.0.copyload.i.i.i479) #20
%694 = extractvalue { i64, i1 } %693, 0
%695 = extractvalue { i64, i1 } %693, 1
%696 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %694, i64 %.52.i.i.i472) #20
%697 = extractvalue { i64, i1 } %696, 0
%698 = extractvalue { i64, i1 } %696, 1
%699 = or i1 %695, %698
%..i.i.i480 = zext i1 %699 to i64
store i64 %697, i64* %xl.sroa.0.0..sroa_idx.i.i.i476, align 8
%700 = add i32 %690, -1
%701 = getelementptr inbounds %"ll::limb::Limb"* %691, i64 1
%702 = getelementptr inbounds %"ll::limb::Limb"* %692, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i476.1 = getelementptr inbounds %"ll::limb::Limb"* %701, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i477.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i476.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i478.1 = getelementptr inbounds %"ll::limb::Limb"* %702, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i479.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i478.1, align 8
%703 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i477.1, i64 %yl.sroa.0.0.copyload.i.i.i479.1) #20
%704 = extractvalue { i64, i1 } %703, 0
%705 = extractvalue { i64, i1 } %703, 1
%706 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %704, i64 %..i.i.i480) #20
%707 = extractvalue { i64, i1 } %706, 0
%708 = extractvalue { i64, i1 } %706, 1
%709 = or i1 %705, %708
%..i.i.i480.1 = zext i1 %709 to i64
store i64 %707, i64* %xl.sroa.0.0..sroa_idx.i.i.i476.1, align 8
%710 = add i32 %700, -1
%711 = icmp eq i32 %710, 0
br i1 %711, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i482
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i482
%..i.i.i480.lcssa.ph = phi i64 [ %..i.i.i480.1, %next-block.i.i.i482 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit: ; preds = %next-block.i.i.i482.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa
%..i.i.i480.lcssa = phi i64 [ %..i.i.i480.lcssa.unr, %next-block.i.i.i482.preheader.split ], [ %..i.i.i480.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465
%..lcssa.i.i.i483 = phi i64 [ %.47.i.i.i470, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit465 ], [ %..i.i.i480.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit ]
%712 = icmp eq i64 %..lcssa.i.i.i483, 1
br i1 %712, label %loop_body.i485.preheader, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
loop_body.i485.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
br label %loop_body.i485
loop_body.i485: ; preds = %loop_body.i485.preheader, %next-block.i488
%i.0.i484 = phi i32 [ %720, %next-block.i488 ], [ %665, %loop_body.i485.preheader ]
%713 = icmp slt i32 %i.0.i484, %7
br i1 %713, label %next-block.i488, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit
next-block.i488: ; preds = %loop_body.i485
%714 = sext i32 %i.0.i484 to i64
%.sum576 = add nsw i64 %714, %561
%715 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum576, i32 0
%716 = load i64* %715, align 8
%717 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %716, i64 1) #20
%718 = extractvalue { i64, i1 } %717, 0
%719 = extractvalue { i64, i1 } %717, 1
store i64 %718, i64* %715, align 8
%720 = add i32 %i.0.i484, 1
br i1 %719, label %loop_body.i485, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit: ; preds = %loop_body.i485, %next-block.i488
%sret_slot.sroa.0.0.i486.ph = phi i64 [ 0, %next-block.i488 ], [ 1, %loop_body.i485 ]
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
%sret_slot.sroa.0.0.i486 = phi i64 [ 0, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %sret_slot.sroa.0.0.i486.ph, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit ]
%721 = add nuw nsw i64 %sret_slot.sroa.0.0.i486, %..lcssa.i.i446
%722 = and i8 %z1_neg.5, 1
%723 = icmp eq i8 %722, 0
%xl.sroa.0.0.copyload44.i.i519 = load i64* %yl.sroa.0.0..sroa_idx45.i.i431, align 8
%yl.sroa.0.0..sroa_idx45.i.i520 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i521 = load i64* %yl.sroa.0.0..sroa_idx45.i.i520, align 8
br i1 %723, label %else-block28, label %then-block-2658-
then-block-2658-: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
%724 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i519, i64 %yl.sroa.0.0.copyload46.i.i521) #20
%725 = extractvalue { i64, i1 } %724, 0
%726 = extractvalue { i64, i1 } %724, 1
%.47.i.i503 = zext i1 %726 to i64
store i64 %725, i64* %yl.sroa.0.0..sroa_idx45.i.i431, align 8
%727 = add i32 %560, -1
%728 = mul i32 %2, 2
%729 = add i32 %728, -1
%730 = mul i32 %6, 2
%731 = sub i32 %729, %730
%732 = add i32 %728, -2
%733 = sub i32 %732, %730
%xtraiter712 = and i32 %731, 1
%lcmp.mod713 = icmp ne i32 %xtraiter712, 0
br i1 %lcmp.mod713, label %next-block.i.i515.prol, label %then-block-2658-.split
next-block.i.i515.prol: ; preds = %then-block-2658-
%734 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%735 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i509.prol = getelementptr inbounds %"ll::limb::Limb"* %734, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i510.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i509.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i511.prol = getelementptr inbounds %"ll::limb::Limb"* %735, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i512.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i511.prol, align 8
%736 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i510.prol, i64 %yl.sroa.0.0.copyload.i.i512.prol) #20
%737 = extractvalue { i64, i1 } %736, 0
%738 = extractvalue { i64, i1 } %736, 1
%739 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %737, i64 %.47.i.i503) #20
%740 = extractvalue { i64, i1 } %739, 0
%741 = extractvalue { i64, i1 } %739, 1
%742 = or i1 %738, %741
%..i.i513.prol = zext i1 %742 to i64
store i64 %740, i64* %xl.sroa.0.0..sroa_idx.i.i509.prol, align 8
%743 = add i32 %727, -1
%744 = icmp eq i32 %743, 0
br label %then-block-2658-.split
then-block-2658-.split: ; preds = %next-block.i.i515.prol, %then-block-2658-
%..i.i513.lcssa.unr = phi i64 [ 0, %then-block-2658- ], [ %..i.i513.prol, %next-block.i.i515.prol ]
%.unr714 = phi i32 [ %727, %then-block-2658- ], [ %743, %next-block.i.i515.prol ]
%.52.i.i505.unr = phi i64 [ %.47.i.i503, %then-block-2658- ], [ %..i.i513.prol, %next-block.i.i515.prol ]
%wp.051.i.i506.unr = phi %"ll::limb::Limb"* [ %12, %then-block-2658- ], [ %734, %next-block.i.i515.prol ]
%yp.049.i.i508.unr = phi %"ll::limb::Limb"* [ %5, %then-block-2658- ], [ %735, %next-block.i.i515.prol ]
%745 = icmp ult i32 %733, 1
br i1 %745, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517, label %then-block-2658-.split.split
then-block-2658-.split.split: ; preds = %then-block-2658-.split
br label %next-block.i.i515
next-block.i.i515: ; preds = %next-block.i.i515, %then-block-2658-.split.split
%746 = phi i32 [ %.unr714, %then-block-2658-.split.split ], [ %766, %next-block.i.i515 ]
%.52.i.i505 = phi i64 [ %.52.i.i505.unr, %then-block-2658-.split.split ], [ %..i.i513.1, %next-block.i.i515 ]
%wp.051.i.i506 = phi %"ll::limb::Limb"* [ %wp.051.i.i506.unr, %then-block-2658-.split.split ], [ %757, %next-block.i.i515 ]
%yp.049.i.i508 = phi %"ll::limb::Limb"* [ %yp.049.i.i508.unr, %then-block-2658-.split.split ], [ %758, %next-block.i.i515 ]
%747 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i506, i64 1
%748 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i508, i64 1
%xl.sroa.0.0..sroa_idx.i.i509 = getelementptr inbounds %"ll::limb::Limb"* %747, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i510 = load i64* %xl.sroa.0.0..sroa_idx.i.i509, align 8
%yl.sroa.0.0..sroa_idx.i.i511 = getelementptr inbounds %"ll::limb::Limb"* %748, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i512 = load i64* %yl.sroa.0.0..sroa_idx.i.i511, align 8
%749 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i510, i64 %yl.sroa.0.0.copyload.i.i512) #20
%750 = extractvalue { i64, i1 } %749, 0
%751 = extractvalue { i64, i1 } %749, 1
%752 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %750, i64 %.52.i.i505) #20
%753 = extractvalue { i64, i1 } %752, 0
%754 = extractvalue { i64, i1 } %752, 1
%755 = or i1 %751, %754
%..i.i513 = zext i1 %755 to i64
store i64 %753, i64* %xl.sroa.0.0..sroa_idx.i.i509, align 8
%756 = add i32 %746, -1
%757 = getelementptr inbounds %"ll::limb::Limb"* %747, i64 1
%758 = getelementptr inbounds %"ll::limb::Limb"* %748, i64 1
%xl.sroa.0.0..sroa_idx.i.i509.1 = getelementptr inbounds %"ll::limb::Limb"* %757, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i510.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i509.1, align 8
%yl.sroa.0.0..sroa_idx.i.i511.1 = getelementptr inbounds %"ll::limb::Limb"* %758, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i512.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i511.1, align 8
%759 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i510.1, i64 %yl.sroa.0.0.copyload.i.i512.1) #20
%760 = extractvalue { i64, i1 } %759, 0
%761 = extractvalue { i64, i1 } %759, 1
%762 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %760, i64 %..i.i513) #20
%763 = extractvalue { i64, i1 } %762, 0
%764 = extractvalue { i64, i1 } %762, 1
%765 = or i1 %761, %764
%..i.i513.1 = zext i1 %765 to i64
store i64 %763, i64* %xl.sroa.0.0..sroa_idx.i.i509.1, align 8
%766 = add i32 %756, -1
%767 = icmp eq i32 %766, 0
br i1 %767, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517.unr-lcssa, label %next-block.i.i515
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517.unr-lcssa: ; preds = %next-block.i.i515
%..i.i513.lcssa.ph = phi i64 [ %..i.i513.1, %next-block.i.i515 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517: ; preds = %then-block-2658-.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517.unr-lcssa
%..i.i513.lcssa = phi i64 [ %..i.i513.lcssa.unr, %then-block-2658-.split ], [ %..i.i513.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517.unr-lcssa ]
%768 = add nuw nsw i64 %..i.i513.lcssa, %721
br label %join31
else-block28: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
%769 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i519, i64 %yl.sroa.0.0.copyload46.i.i521) #20
%770 = extractvalue { i64, i1 } %769, 0
%771 = extractvalue { i64, i1 } %769, 1
%.47.i.i522 = zext i1 %771 to i64
store i64 %770, i64* %yl.sroa.0.0..sroa_idx45.i.i431, align 8
%772 = add i32 %560, -1
%773 = mul i32 %2, 2
%774 = add i32 %773, -1
%775 = mul i32 %6, 2
%776 = sub i32 %774, %775
%777 = add i32 %773, -2
%778 = sub i32 %777, %775
%xtraiter = and i32 %776, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.i.i534.prol, label %else-block28.split
next-block.i.i534.prol: ; preds = %else-block28
%779 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%780 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i528.prol = getelementptr inbounds %"ll::limb::Limb"* %779, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i529.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i528.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i530.prol = getelementptr inbounds %"ll::limb::Limb"* %780, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i531.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i530.prol, align 8
%781 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i529.prol, i64 %yl.sroa.0.0.copyload.i.i531.prol) #20
%782 = extractvalue { i64, i1 } %781, 0
%783 = extractvalue { i64, i1 } %781, 1
%784 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %782, i64 %.47.i.i522) #20
%785 = extractvalue { i64, i1 } %784, 0
%786 = extractvalue { i64, i1 } %784, 1
%787 = or i1 %783, %786
%..i.i532.prol = zext i1 %787 to i64
store i64 %785, i64* %xl.sroa.0.0..sroa_idx.i.i528.prol, align 8
%788 = add i32 %772, -1
%789 = icmp eq i32 %788, 0
br label %else-block28.split
else-block28.split: ; preds = %next-block.i.i534.prol, %else-block28
%..i.i532.lcssa.unr = phi i64 [ 0, %else-block28 ], [ %..i.i532.prol, %next-block.i.i534.prol ]
%.unr = phi i32 [ %772, %else-block28 ], [ %788, %next-block.i.i534.prol ]
%.52.i.i524.unr = phi i64 [ %.47.i.i522, %else-block28 ], [ %..i.i532.prol, %next-block.i.i534.prol ]
%wp.051.i.i525.unr = phi %"ll::limb::Limb"* [ %12, %else-block28 ], [ %779, %next-block.i.i534.prol ]
%yp.049.i.i527.unr = phi %"ll::limb::Limb"* [ %5, %else-block28 ], [ %780, %next-block.i.i534.prol ]
%790 = icmp ult i32 %778, 1
br i1 %790, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536, label %else-block28.split.split
else-block28.split.split: ; preds = %else-block28.split
br label %next-block.i.i534
next-block.i.i534: ; preds = %next-block.i.i534, %else-block28.split.split
%791 = phi i32 [ %.unr, %else-block28.split.split ], [ %811, %next-block.i.i534 ]
%.52.i.i524 = phi i64 [ %.52.i.i524.unr, %else-block28.split.split ], [ %..i.i532.1, %next-block.i.i534 ]
%wp.051.i.i525 = phi %"ll::limb::Limb"* [ %wp.051.i.i525.unr, %else-block28.split.split ], [ %802, %next-block.i.i534 ]
%yp.049.i.i527 = phi %"ll::limb::Limb"* [ %yp.049.i.i527.unr, %else-block28.split.split ], [ %803, %next-block.i.i534 ]
%792 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i525, i64 1
%793 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i527, i64 1
%xl.sroa.0.0..sroa_idx.i.i528 = getelementptr inbounds %"ll::limb::Limb"* %792, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i529 = load i64* %xl.sroa.0.0..sroa_idx.i.i528, align 8
%yl.sroa.0.0..sroa_idx.i.i530 = getelementptr inbounds %"ll::limb::Limb"* %793, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i531 = load i64* %yl.sroa.0.0..sroa_idx.i.i530, align 8
%794 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i529, i64 %yl.sroa.0.0.copyload.i.i531) #20
%795 = extractvalue { i64, i1 } %794, 0
%796 = extractvalue { i64, i1 } %794, 1
%797 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %795, i64 %.52.i.i524) #20
%798 = extractvalue { i64, i1 } %797, 0
%799 = extractvalue { i64, i1 } %797, 1
%800 = or i1 %796, %799
%..i.i532 = zext i1 %800 to i64
store i64 %798, i64* %xl.sroa.0.0..sroa_idx.i.i528, align 8
%801 = add i32 %791, -1
%802 = getelementptr inbounds %"ll::limb::Limb"* %792, i64 1
%803 = getelementptr inbounds %"ll::limb::Limb"* %793, i64 1
%xl.sroa.0.0..sroa_idx.i.i528.1 = getelementptr inbounds %"ll::limb::Limb"* %802, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i529.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i528.1, align 8
%yl.sroa.0.0..sroa_idx.i.i530.1 = getelementptr inbounds %"ll::limb::Limb"* %803, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i531.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i530.1, align 8
%804 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i529.1, i64 %yl.sroa.0.0.copyload.i.i531.1) #20
%805 = extractvalue { i64, i1 } %804, 0
%806 = extractvalue { i64, i1 } %804, 1
%807 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %805, i64 %..i.i532) #20
%808 = extractvalue { i64, i1 } %807, 0
%809 = extractvalue { i64, i1 } %807, 1
%810 = or i1 %806, %809
%..i.i532.1 = zext i1 %810 to i64
store i64 %808, i64* %xl.sroa.0.0..sroa_idx.i.i528.1, align 8
%811 = add i32 %801, -1
%812 = icmp eq i32 %811, 0
br i1 %812, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536.unr-lcssa, label %next-block.i.i534
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536.unr-lcssa: ; preds = %next-block.i.i534
%..i.i532.lcssa.ph = phi i64 [ %..i.i532.1, %next-block.i.i534 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536: ; preds = %else-block28.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536.unr-lcssa
%..i.i532.lcssa = phi i64 [ %..i.i532.lcssa.unr, %else-block28.split ], [ %..i.i532.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536.unr-lcssa ]
%813 = sub nsw i64 %721, %..i.i532.lcssa
br label %join31
join31: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517
%cy23.sroa.0.0 = phi i64 [ %768, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit517 ], [ %813, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit536 ]
%814 = load i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
%815 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %814, i64 %662) #20
%816 = extractvalue { i64, i1 } %815, 0
%817 = extractvalue { i64, i1 } %815, 1
store i64 %816, i64* %xl.sroa.0.0..sroa_idx43.i.i429, align 8
br i1 %817, label %while_body.i537.preheader, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
while_body.i537.preheader: ; preds = %join31
br label %while_body.i537
while_body.i537: ; preds = %while_body.i537.preheader, %while_body.i537
%ptr.023.i = phi %"ll::limb::Limb"* [ %818, %while_body.i537 ], [ %562, %while_body.i537.preheader ]
%818 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i, i64 1
%819 = getelementptr inbounds %"ll::limb::Limb"* %818, i64 0, i32 0
%820 = load i64* %819, align 8
%821 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %820, i64 1) #20
%822 = extractvalue { i64, i1 } %821, 0
%823 = extractvalue { i64, i1 } %821, 1
store i64 %822, i64* %819, align 8
br i1 %823, label %while_body.i537, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit: ; preds = %while_body.i537
br label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit: ; preds = %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit, %join31
%824 = mul i32 %7, 3
%825 = sext i32 %824 to i64
%826 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %825
%827 = getelementptr inbounds %"ll::limb::Limb"* %826, i64 0, i32 0
%828 = load i64* %827, align 8
%829 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %828, i64 %cy23.sroa.0.0) #20
%830 = extractvalue { i64, i1 } %829, 0
%831 = extractvalue { i64, i1 } %829, 1
store i64 %830, i64* %827, align 8
br i1 %831, label %while_body.i539.preheader, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540
while_body.i539.preheader: ; preds = %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
br label %while_body.i539
while_body.i539: ; preds = %while_body.i539.preheader, %while_body.i539
%ptr.023.i538 = phi %"ll::limb::Limb"* [ %832, %while_body.i539 ], [ %826, %while_body.i539.preheader ]
%832 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i538, i64 1
%833 = getelementptr inbounds %"ll::limb::Limb"* %832, i64 0, i32 0
%834 = load i64* %833, align 8
%835 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %834, i64 1) #20
%836 = extractvalue { i64, i1 } %835, 0
%837 = extractvalue { i64, i1 } %835, 1
store i64 %836, i64* %833, align 8
br i1 %837, label %while_body.i539, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540.loopexit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540.loopexit: ; preds = %while_body.i539
br label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540: ; preds = %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit540.loopexit, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
ret void
}
; Function Attrs: uwtable
define internal fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"*, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*, i32, %"ll::limb::Limb"*) unnamed_addr #6 {
entry-block:
%6 = add i32 %2, 2
%7 = sdiv i32 %6, 3
%8 = shl i32 %7, 1
%9 = sub i32 %2, %8
%10 = sub i32 %4, %8
%11 = sext i32 %7 to i64
%12 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %11
%13 = sext i32 %8 to i64
%14 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %13
%15 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %11
%16 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %13
%17 = shl i32 %7, 2
%18 = add i32 %17, 4
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %19
%21 = add i32 %8, 2
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %22
%24 = add i32 %7, 1
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %25
%27 = mul i32 %7, 3
%28 = add i32 %27, 3
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %29
%31 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %22
%xl.sroa.0.0..sroa_idx43.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %14, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i, align 8
%32 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i, i64 %yl.sroa.0.0.copyload46.i.i.i) #20
%33 = extractvalue { i64, i1 } %32, 0
%34 = extractvalue { i64, i1 } %32, 1
%.47.i.i.i = zext i1 %34 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
store i64 %33, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%35 = add i32 %9, -1
%36 = icmp eq i32 %35, 0
br i1 %36, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %entry-block
%37 = add i32 %2, -1
%38 = mul i32 %7, 2
%39 = sub i32 %37, %38
%40 = add i32 %2, -2
%41 = sub i32 %40, %38
%xtraiter1337 = and i32 %39, 1
%lcmp.mod1338 = icmp ne i32 %xtraiter1337, 0
br i1 %lcmp.mod1338, label %next-block.i.i.i.prol, label %next-block.i.i.i.preheader.split
next-block.i.i.i.prol: ; preds = %next-block.i.i.i.preheader
%42 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%43 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %43, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%45 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.i.prol) #20
%46 = extractvalue { i64, i1 } %45, 0
%47 = extractvalue { i64, i1 } %45, 1
%48 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %46, i64 %.47.i.i.i) #20
%49 = extractvalue { i64, i1 } %48, 0
%50 = extractvalue { i64, i1 } %48, 1
%51 = or i1 %47, %50
%..i.i.i.prol = zext i1 %51 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %42, i64 0, i32 0
store i64 %49, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.prol, align 8
%52 = add i32 %35, -1
%53 = icmp eq i32 %52, 0
br label %next-block.i.i.i.preheader.split
next-block.i.i.i.preheader.split: ; preds = %next-block.i.i.i.prol, %next-block.i.i.i.preheader
%..i.i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%.unr1339 = phi i32 [ %35, %next-block.i.i.i.preheader ], [ %52, %next-block.i.i.i.prol ]
%.52.i.i.i.unr = phi i64 [ %.47.i.i.i, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%wp.051.i.i.i.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i.i.preheader ], [ %42, %next-block.i.i.i.prol ]
%xp.050.i.i.i.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i.i.preheader ], [ %43, %next-block.i.i.i.prol ]
%yp.049.i.i.i.unr = phi %"ll::limb::Limb"* [ %14, %next-block.i.i.i.preheader ], [ %44, %next-block.i.i.i.prol ]
%54 = icmp ult i32 %41, 1
br i1 %54, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, label %next-block.i.i.i.preheader.split.split
next-block.i.i.i.preheader.split.split: ; preds = %next-block.i.i.i.preheader.split
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i, %next-block.i.i.i.preheader.split.split
%55 = phi i32 [ %.unr1339, %next-block.i.i.i.preheader.split.split ], [ %77, %next-block.i.i.i ]
%.52.i.i.i = phi i64 [ %.52.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %..i.i.i.1, %next-block.i.i.i ]
%wp.051.i.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %67, %next-block.i.i.i ]
%xp.050.i.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %68, %next-block.i.i.i ]
%yp.049.i.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %69, %next-block.i.i.i ]
%56 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i, i64 1
%57 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i, i64 1
%58 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %57, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %58, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i.i, align 8
%59 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %yl.sroa.0.0.copyload.i.i.i) #20
%60 = extractvalue { i64, i1 } %59, 0
%61 = extractvalue { i64, i1 } %59, 1
%62 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %60, i64 %.52.i.i.i) #20
%63 = extractvalue { i64, i1 } %62, 0
%64 = extractvalue { i64, i1 } %62, 1
%65 = or i1 %61, %64
%..i.i.i = zext i1 %65 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %56, i64 0, i32 0
store i64 %63, i64* %rl.sroa.0.0..sroa_idx16.i.i.i, align 8
%66 = add i32 %55, -1
%67 = getelementptr inbounds %"ll::limb::Limb"* %56, i64 1
%68 = getelementptr inbounds %"ll::limb::Limb"* %57, i64 1
%69 = getelementptr inbounds %"ll::limb::Limb"* %58, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %68, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%70 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.i.1) #20
%71 = extractvalue { i64, i1 } %70, 0
%72 = extractvalue { i64, i1 } %70, 1
%73 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %71, i64 %..i.i.i) #20
%74 = extractvalue { i64, i1 } %73, 0
%75 = extractvalue { i64, i1 } %73, 1
%76 = or i1 %72, %75
%..i.i.i.1 = zext i1 %76 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %67, i64 0, i32 0
store i64 %74, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.1, align 8
%77 = add i32 %66, -1
%78 = icmp eq i32 %77, 0
br i1 %78, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i
%..i.i.i.lcssa.ph = phi i64 [ %..i.i.i.1, %next-block.i.i.i ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit: ; preds = %next-block.i.i.i.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa
%..i.i.i.lcssa = phi i64 [ %..i.i.i.lcssa.unr, %next-block.i.i.i.preheader.split ], [ %..i.i.i.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, %entry-block
%..lcssa.i.i.i = phi i64 [ %.47.i.i.i, %entry-block ], [ %..i.i.i.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit ]
%79 = icmp eq i64 %..lcssa.i.i.i, 1
br i1 %79, label %loop_body.i.preheader, label %next-block3.i
loop_body.i.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
br label %loop_body.i
loop_body.i: ; preds = %loop_body.i.preheader, %next-block.i
%i.0.i = phi i32 [ %87, %next-block.i ], [ %9, %loop_body.i.preheader ]
%80 = icmp slt i32 %i.0.i, %7
br i1 %80, label %next-block.i, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit1241
next-block.i: ; preds = %loop_body.i
%81 = sext i32 %i.0.i to i64
%82 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %81, i32 0
%83 = load i64* %82, align 8
%84 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %83, i64 1) #20
%85 = extractvalue { i64, i1 } %84, 0
%86 = extractvalue { i64, i1 } %84, 1
%x.sroa.0.0..sroa_idx6.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %81, i32 0
store i64 %85, i64* %x.sroa.0.0..sroa_idx6.i, align 8
%87 = add i32 %i.0.i, 1
br i1 %86, label %loop_body.i, label %next-block3.i.loopexit
next-block3.i.loopexit: ; preds = %next-block.i
%.lcssa1247 = phi i32 [ %87, %next-block.i ]
br label %next-block3.i
next-block3.i: ; preds = %next-block3.i.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
%i.1.i = phi i32 [ %9, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %.lcssa1247, %next-block3.i.loopexit ]
%88 = icmp ne %"ll::limb::Limb"* %5, %1
%89 = icmp sgt i32 %7, %i.1.i
%..i = and i1 %88, %89
br i1 %..i, label %then-block-629-.i, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
then-block-629-.i: ; preds = %next-block3.i
%90 = sext i32 %i.1.i to i64
%91 = sub i32 %7, %i.1.i
%92 = icmp sgt i32 %91, 0
br i1 %92, label %while_body.lr.ph.i.i.i, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
while_body.lr.ph.i.i.i: ; preds = %then-block-629-.i
%93 = add i32 %7, -1
%94 = sub i32 %93, %i.1.i
%95 = zext i32 %94 to i64
%96 = add nuw nsw i64 %95, 1
%end.idx = add nuw nsw i64 %95, 1
%n.vec = and i64 %96, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%97 = sext i32 %i.1.i to i64
%98 = add i32 %7, -1
%99 = sub i32 %98, %i.1.i
%100 = zext i32 %99 to i64
%101 = add nsw i64 %97, %100
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %5, i64 %97
%scevgep1179 = getelementptr %"ll::limb::Limb"* %1, i64 %101
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep1179
%scevgep1177 = getelementptr %"ll::limb::Limb"* %1, i64 %97
%scevgep1175 = getelementptr %"ll::limb::Limb"* %5, i64 %101
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep1177, %scevgep1175
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%102 = add i64 %index, %90
%103 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %102, i32 0
%104 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %102, i32 0
%105 = bitcast i64* %103 to <2 x i64>*
%wide.load = load <2 x i64>* %105, align 8
%106 = getelementptr i64* %103, i64 2
%107 = bitcast i64* %106 to <2 x i64>*
%wide.load1184 = load <2 x i64>* %107, align 8
%108 = bitcast i64* %104 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %108, align 8
%109 = getelementptr i64* %104, i64 2
%110 = bitcast i64* %109 to <2 x i64>*
store <2 x i64> %wide.load1184, <2 x i64>* %110, align 8
%index.next = add i64 %index, 4
%111 = icmp eq i64 %index.next, %n.vec
br i1 %111, label %middle.block.loopexit, label %vector.body, !llvm.loop !117
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block
%112 = sub i32 %7, %i.1.i
%113 = trunc i64 %resume.val to i32
%114 = sub i32 %112, %113
%115 = add i32 %7, -1
%116 = sub i32 %115, %i.1.i
%117 = sub i32 %116, %113
%xtraiter1334 = and i32 %114, 3
%lcmp.mod1335 = icmp ne i32 %xtraiter1334, 0
br i1 %lcmp.mod1335, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val, %while_body.i.i.i.preheader ]
%prol.iter1336 = phi i32 [ %xtraiter1334, %while_body.i.i.i.preheader ], [ %prol.iter1336.sub, %while_body.i.i.i.prol ]
%.sum.i.i.prol = add i64 %indvars.iv.i.i.i.prol, %90
%118 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.prol, i32 0
%119 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i.prol, i32 0
%120 = load i64* %118, align 8
store i64 %120, i64* %119, align 8
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv1156.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond1157.prol = icmp eq i32 %lftr.wideiv1156.prol, %94
%prol.iter1336.sub = sub i32 %prol.iter1336, 1
%prol.iter1336.cmp = icmp ne i32 %prol.iter1336.sub, 0
br i1 %prol.iter1336.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !118
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%121 = icmp ult i32 %117, 3
br i1 %121, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%.sum.i.i = add i64 %indvars.iv.i.i.i, %90
%122 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i, i32 0
%123 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i, i32 0
%124 = load i64* %122, align 8
store i64 %124, i64* %123, align 8
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv1156 = trunc i64 %indvars.iv.i.i.i to i32
%.sum.i.i.1 = add i64 %indvars.iv.next.i.i.i, %90
%125 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.1, i32 0
%126 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i.1, i32 0
%127 = load i64* %125, align 8
store i64 %127, i64* %126, align 8
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv1156.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%.sum.i.i.2 = add i64 %indvars.iv.next.i.i.i.1, %90
%128 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.2, i32 0
%129 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i.2, i32 0
%130 = load i64* %128, align 8
store i64 %130, i64* %129, align 8
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv1156.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%.sum.i.i.3 = add i64 %indvars.iv.next.i.i.i.2, %90
%131 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum.i.i.3, i32 0
%132 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i.3, i32 0
%133 = load i64* %131, align 8
store i64 %133, i64* %132, align 8
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv1156.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond1157.3 = icmp eq i32 %lftr.wideiv1156.3, %94
br i1 %exitcond1157.3, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit.unr-lcssa, label %while_body.i.i.i, !llvm.loop !119
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i.i
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit: ; preds = %while_body.i.i.i.preheader.split, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit.unr-lcssa
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit1241: ; preds = %loop_body.i
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit1241, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit, %middle.block, %next-block3.i, %then-block-629-.i
%sret_slot.sroa.0.0.i = phi i64 [ 0, %next-block3.i ], [ 0, %then-block-629-.i ], [ 0, %middle.block ], [ 0, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit ], [ 1, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit.loopexit1241 ]
%xl.sroa.0.0.copyload44.i.i = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%134 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i, i64 %yl.sroa.0.0.copyload46.i.i) #20
%135 = extractvalue { i64, i1 } %134, 0
%136 = extractvalue { i64, i1 } %134, 1
%.47.i.i = zext i1 %136 to i64
%rl.sroa.0.0..sroa_idx1648.i.i = getelementptr inbounds %"ll::limb::Limb"* %20, i64 0, i32 0
store i64 %135, i64* %rl.sroa.0.0..sroa_idx1648.i.i, align 8
%137 = add i32 %7, -1
%138 = icmp eq i32 %137, 0
br i1 %138, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
%139 = add i32 %7, -1
%140 = add i32 %7, -2
%xtraiter1331 = and i32 %139, 1
%lcmp.mod1332 = icmp ne i32 %xtraiter1331, 0
br i1 %lcmp.mod1332, label %next-block.i.i.prol, label %next-block.i.i.preheader.split
next-block.i.i.prol: ; preds = %next-block.i.i.preheader
%141 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 1
%142 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%143 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%xl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %142, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %143, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.prol, align 8
%144 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.prol) #20
%145 = extractvalue { i64, i1 } %144, 0
%146 = extractvalue { i64, i1 } %144, 1
%147 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %145, i64 %.47.i.i) #20
%148 = extractvalue { i64, i1 } %147, 0
%149 = extractvalue { i64, i1 } %147, 1
%150 = or i1 %146, %149
%..i.i.prol = zext i1 %150 to i64
%rl.sroa.0.0..sroa_idx16.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %141, i64 0, i32 0
store i64 %148, i64* %rl.sroa.0.0..sroa_idx16.i.i.prol, align 8
%151 = add i32 %137, -1
%152 = icmp eq i32 %151, 0
br label %next-block.i.i.preheader.split
next-block.i.i.preheader.split: ; preds = %next-block.i.i.prol, %next-block.i.i.preheader
%..i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%.unr1333 = phi i32 [ %137, %next-block.i.i.preheader ], [ %151, %next-block.i.i.prol ]
%.52.i.i.unr = phi i64 [ %.47.i.i, %next-block.i.i.preheader ], [ %..i.i.prol, %next-block.i.i.prol ]
%wp.051.i.i.unr = phi %"ll::limb::Limb"* [ %20, %next-block.i.i.preheader ], [ %141, %next-block.i.i.prol ]
%xp.050.i.i.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i.preheader ], [ %142, %next-block.i.i.prol ]
%yp.049.i.i.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i.preheader ], [ %143, %next-block.i.i.prol ]
%153 = icmp ult i32 %140, 1
br i1 %153, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, label %next-block.i.i.preheader.split.split
next-block.i.i.preheader.split.split: ; preds = %next-block.i.i.preheader.split
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i, %next-block.i.i.preheader.split.split
%154 = phi i32 [ %.unr1333, %next-block.i.i.preheader.split.split ], [ %176, %next-block.i.i ]
%.52.i.i = phi i64 [ %.52.i.i.unr, %next-block.i.i.preheader.split.split ], [ %..i.i.1, %next-block.i.i ]
%wp.051.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.unr, %next-block.i.i.preheader.split.split ], [ %166, %next-block.i.i ]
%xp.050.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.unr, %next-block.i.i.preheader.split.split ], [ %167, %next-block.i.i ]
%yp.049.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.unr, %next-block.i.i.preheader.split.split ], [ %168, %next-block.i.i ]
%155 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i, i64 1
%156 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i, i64 1
%157 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %156, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %157, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i, align 8
%158 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i, i64 %yl.sroa.0.0.copyload.i.i) #20
%159 = extractvalue { i64, i1 } %158, 0
%160 = extractvalue { i64, i1 } %158, 1
%161 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %159, i64 %.52.i.i) #20
%162 = extractvalue { i64, i1 } %161, 0
%163 = extractvalue { i64, i1 } %161, 1
%164 = or i1 %160, %163
%..i.i = zext i1 %164 to i64
%rl.sroa.0.0..sroa_idx16.i.i = getelementptr inbounds %"ll::limb::Limb"* %155, i64 0, i32 0
store i64 %162, i64* %rl.sroa.0.0..sroa_idx16.i.i, align 8
%165 = add i32 %154, -1
%166 = getelementptr inbounds %"ll::limb::Limb"* %155, i64 1
%167 = getelementptr inbounds %"ll::limb::Limb"* %156, i64 1
%168 = getelementptr inbounds %"ll::limb::Limb"* %157, i64 1
%xl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %167, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %168, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.1, align 8
%169 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.1) #20
%170 = extractvalue { i64, i1 } %169, 0
%171 = extractvalue { i64, i1 } %169, 1
%172 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %170, i64 %..i.i) #20
%173 = extractvalue { i64, i1 } %172, 0
%174 = extractvalue { i64, i1 } %172, 1
%175 = or i1 %171, %174
%..i.i.1 = zext i1 %175 to i64
%rl.sroa.0.0..sroa_idx16.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %166, i64 0, i32 0
store i64 %173, i64* %rl.sroa.0.0..sroa_idx16.i.i.1, align 8
%176 = add i32 %165, -1
%177 = icmp eq i32 %176, 0
br i1 %177, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa, label %next-block.i.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa: ; preds = %next-block.i.i
%..i.i.lcssa.ph = phi i64 [ %..i.i.1, %next-block.i.i ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit: ; preds = %next-block.i.i.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa
%..i.i.lcssa = phi i64 [ %..i.i.lcssa.unr, %next-block.i.i.preheader.split ], [ %..i.i.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit
%..lcssa.i.i = phi i64 [ %.47.i.i, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit ], [ %..i.i.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.loopexit ]
%178 = add nuw nsw i64 %..lcssa.i.i, %sret_slot.sroa.0.0.i
%.sum = add nsw i64 %19, %11
%179 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum, i32 0
store i64 %178, i64* %179, align 8
%180 = icmp eq i64 %sret_slot.sroa.0.0.i, 0
br i1 %180, label %while_cond.i.preheader, label %else-block
while_cond.i.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
br label %while_cond.i
while_cond.i: ; preds = %while_cond.i.preheader, %while_body.i
%i.0.in.i = phi i32 [ %i.0.i486, %while_body.i ], [ %7, %while_cond.i.preheader ]
%i.0.i486 = add i32 %i.0.in.i, -1
%181 = icmp sgt i32 %i.0.i486, -1
br i1 %181, label %while_body.i, label %else-block.loopexit
while_body.i: ; preds = %while_cond.i
%182 = sext i32 %i.0.i486 to i64
%183 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %182, i32 0
%184 = load i64* %183, align 8
%.sum1135 = add nsw i64 %182, %11
%185 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %.sum1135, i32 0
%186 = load i64* %185, align 8
%187 = icmp eq i64 %184, %186
br i1 %187, label %while_cond.i, label %then-block-13036-.i
then-block-13036-.i: ; preds = %while_body.i
%.lcssa1246 = phi i64 [ %186, %while_body.i ]
%.lcssa1245 = phi i64 [ %184, %while_body.i ]
%188 = icmp ugt i64 %.lcssa1245, %.lcssa1246
br i1 %188, label %else-block, label %then-block-3110-
then-block-3110-: ; preds = %then-block-13036-.i
%xl.sroa.0.0.copyload44.i.i490 = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%yl.sroa.0.0.copyload46.i.i492 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%189 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i490, i64 %yl.sroa.0.0.copyload46.i.i492) #20
%190 = extractvalue { i64, i1 } %189, 0
%rl.sroa.0.0..sroa_idx1648.i.i494 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %190, i64* %rl.sroa.0.0..sroa_idx1648.i.i494, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit, label %next-block.i.i505.preheader
next-block.i.i505.preheader: ; preds = %then-block-3110-
%191 = extractvalue { i64, i1 } %189, 1
%.47.i.i493 = zext i1 %191 to i64
%192 = add i32 %7, -1
%193 = add i32 %7, -2
%xtraiter1328 = and i32 %192, 1
%lcmp.mod1329 = icmp ne i32 %xtraiter1328, 0
br i1 %lcmp.mod1329, label %next-block.i.i505.prol, label %next-block.i.i505.preheader.split
next-block.i.i505.prol: ; preds = %next-block.i.i505.preheader
%194 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%195 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%196 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i499.prol = getelementptr inbounds %"ll::limb::Limb"* %195, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i500.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i499.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i501.prol = getelementptr inbounds %"ll::limb::Limb"* %196, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i502.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i501.prol, align 8
%197 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i500.prol, i64 %yl.sroa.0.0.copyload.i.i502.prol) #20
%198 = extractvalue { i64, i1 } %197, 0
%199 = extractvalue { i64, i1 } %197, 1
%200 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %198, i64 %.47.i.i493) #20
%201 = extractvalue { i64, i1 } %200, 0
%202 = extractvalue { i64, i1 } %200, 1
%203 = or i1 %199, %202
%..i.i503.prol = zext i1 %203 to i64
%rl.sroa.0.0..sroa_idx16.i.i504.prol = getelementptr inbounds %"ll::limb::Limb"* %194, i64 0, i32 0
store i64 %201, i64* %rl.sroa.0.0..sroa_idx16.i.i504.prol, align 8
%204 = add i32 %137, -1
%205 = icmp eq i32 %204, 0
br label %next-block.i.i505.preheader.split
next-block.i.i505.preheader.split: ; preds = %next-block.i.i505.prol, %next-block.i.i505.preheader
%.unr1330 = phi i32 [ %137, %next-block.i.i505.preheader ], [ %204, %next-block.i.i505.prol ]
%.52.i.i495.unr = phi i64 [ %.47.i.i493, %next-block.i.i505.preheader ], [ %..i.i503.prol, %next-block.i.i505.prol ]
%wp.051.i.i496.unr = phi %"ll::limb::Limb"* [ %23, %next-block.i.i505.preheader ], [ %194, %next-block.i.i505.prol ]
%xp.050.i.i497.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i505.preheader ], [ %195, %next-block.i.i505.prol ]
%yp.049.i.i498.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i505.preheader ], [ %196, %next-block.i.i505.prol ]
%206 = icmp ult i32 %193, 1
br i1 %206, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit, label %next-block.i.i505.preheader.split.split
next-block.i.i505.preheader.split.split: ; preds = %next-block.i.i505.preheader.split
br label %next-block.i.i505
next-block.i.i505: ; preds = %next-block.i.i505, %next-block.i.i505.preheader.split.split
%207 = phi i32 [ %.unr1330, %next-block.i.i505.preheader.split.split ], [ %229, %next-block.i.i505 ]
%.52.i.i495 = phi i64 [ %.52.i.i495.unr, %next-block.i.i505.preheader.split.split ], [ %..i.i503.1, %next-block.i.i505 ]
%wp.051.i.i496 = phi %"ll::limb::Limb"* [ %wp.051.i.i496.unr, %next-block.i.i505.preheader.split.split ], [ %219, %next-block.i.i505 ]
%xp.050.i.i497 = phi %"ll::limb::Limb"* [ %xp.050.i.i497.unr, %next-block.i.i505.preheader.split.split ], [ %220, %next-block.i.i505 ]
%yp.049.i.i498 = phi %"ll::limb::Limb"* [ %yp.049.i.i498.unr, %next-block.i.i505.preheader.split.split ], [ %221, %next-block.i.i505 ]
%208 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i496, i64 1
%209 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i497, i64 1
%210 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i498, i64 1
%xl.sroa.0.0..sroa_idx.i.i499 = getelementptr inbounds %"ll::limb::Limb"* %209, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i500 = load i64* %xl.sroa.0.0..sroa_idx.i.i499, align 8
%yl.sroa.0.0..sroa_idx.i.i501 = getelementptr inbounds %"ll::limb::Limb"* %210, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i502 = load i64* %yl.sroa.0.0..sroa_idx.i.i501, align 8
%211 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i500, i64 %yl.sroa.0.0.copyload.i.i502) #20
%212 = extractvalue { i64, i1 } %211, 0
%213 = extractvalue { i64, i1 } %211, 1
%214 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %212, i64 %.52.i.i495) #20
%215 = extractvalue { i64, i1 } %214, 0
%216 = extractvalue { i64, i1 } %214, 1
%217 = or i1 %213, %216
%..i.i503 = zext i1 %217 to i64
%rl.sroa.0.0..sroa_idx16.i.i504 = getelementptr inbounds %"ll::limb::Limb"* %208, i64 0, i32 0
store i64 %215, i64* %rl.sroa.0.0..sroa_idx16.i.i504, align 8
%218 = add i32 %207, -1
%219 = getelementptr inbounds %"ll::limb::Limb"* %208, i64 1
%220 = getelementptr inbounds %"ll::limb::Limb"* %209, i64 1
%221 = getelementptr inbounds %"ll::limb::Limb"* %210, i64 1
%xl.sroa.0.0..sroa_idx.i.i499.1 = getelementptr inbounds %"ll::limb::Limb"* %220, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i500.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i499.1, align 8
%yl.sroa.0.0..sroa_idx.i.i501.1 = getelementptr inbounds %"ll::limb::Limb"* %221, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i502.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i501.1, align 8
%222 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i500.1, i64 %yl.sroa.0.0.copyload.i.i502.1) #20
%223 = extractvalue { i64, i1 } %222, 0
%224 = extractvalue { i64, i1 } %222, 1
%225 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %223, i64 %..i.i503) #20
%226 = extractvalue { i64, i1 } %225, 0
%227 = extractvalue { i64, i1 } %225, 1
%228 = or i1 %224, %227
%..i.i503.1 = zext i1 %228 to i64
%rl.sroa.0.0..sroa_idx16.i.i504.1 = getelementptr inbounds %"ll::limb::Limb"* %219, i64 0, i32 0
store i64 %226, i64* %rl.sroa.0.0..sroa_idx16.i.i504.1, align 8
%229 = add i32 %218, -1
%230 = icmp eq i32 %229, 0
br i1 %230, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa, label %next-block.i.i505
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa: ; preds = %next-block.i.i505
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit: ; preds = %next-block.i.i505.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.loopexit, %then-block-3110-
%.sum1136 = add nsw i64 %22, %11
%231 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1136, i32 0
store i64 0, i64* %231, align 8
br label %join1
else-block.loopexit: ; preds = %while_cond.i
br label %else-block
else-block: ; preds = %else-block.loopexit, %then-block-13036-.i, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit
%xl.sroa.0.0.copyload44.i.i508 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%yl.sroa.0.0.copyload46.i.i510 = load i64* %yl.sroa.0.0..sroa_idx45.i.i, align 8
%232 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i508, i64 %yl.sroa.0.0.copyload46.i.i510) #20
%233 = extractvalue { i64, i1 } %232, 0
%234 = extractvalue { i64, i1 } %232, 1
%.47.i.i511 = zext i1 %234 to i64
%rl.sroa.0.0..sroa_idx1648.i.i512 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %233, i64* %rl.sroa.0.0..sroa_idx1648.i.i512, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525, label %next-block.i.i523.preheader
next-block.i.i523.preheader: ; preds = %else-block
%235 = add i32 %7, -1
%236 = add i32 %7, -2
%xtraiter1325 = and i32 %235, 1
%lcmp.mod1326 = icmp ne i32 %xtraiter1325, 0
br i1 %lcmp.mod1326, label %next-block.i.i523.prol, label %next-block.i.i523.preheader.split
next-block.i.i523.prol: ; preds = %next-block.i.i523.preheader
%237 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%238 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%239 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 1
%xl.sroa.0.0..sroa_idx.i.i517.prol = getelementptr inbounds %"ll::limb::Limb"* %238, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i518.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i517.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i519.prol = getelementptr inbounds %"ll::limb::Limb"* %239, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i520.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i519.prol, align 8
%240 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i518.prol, i64 %yl.sroa.0.0.copyload.i.i520.prol) #20
%241 = extractvalue { i64, i1 } %240, 0
%242 = extractvalue { i64, i1 } %240, 1
%243 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %241, i64 %.47.i.i511) #20
%244 = extractvalue { i64, i1 } %243, 0
%245 = extractvalue { i64, i1 } %243, 1
%246 = or i1 %242, %245
%..i.i521.prol = zext i1 %246 to i64
%rl.sroa.0.0..sroa_idx16.i.i522.prol = getelementptr inbounds %"ll::limb::Limb"* %237, i64 0, i32 0
store i64 %244, i64* %rl.sroa.0.0..sroa_idx16.i.i522.prol, align 8
%247 = add i32 %137, -1
%248 = icmp eq i32 %247, 0
br label %next-block.i.i523.preheader.split
next-block.i.i523.preheader.split: ; preds = %next-block.i.i523.prol, %next-block.i.i523.preheader
%..i.i521.lcssa.unr = phi i64 [ 0, %next-block.i.i523.preheader ], [ %..i.i521.prol, %next-block.i.i523.prol ]
%.unr1327 = phi i32 [ %137, %next-block.i.i523.preheader ], [ %247, %next-block.i.i523.prol ]
%.52.i.i513.unr = phi i64 [ %.47.i.i511, %next-block.i.i523.preheader ], [ %..i.i521.prol, %next-block.i.i523.prol ]
%wp.051.i.i514.unr = phi %"ll::limb::Limb"* [ %23, %next-block.i.i523.preheader ], [ %237, %next-block.i.i523.prol ]
%xp.050.i.i515.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i523.preheader ], [ %238, %next-block.i.i523.prol ]
%yp.049.i.i516.unr = phi %"ll::limb::Limb"* [ %12, %next-block.i.i523.preheader ], [ %239, %next-block.i.i523.prol ]
%249 = icmp ult i32 %236, 1
br i1 %249, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit, label %next-block.i.i523.preheader.split.split
next-block.i.i523.preheader.split.split: ; preds = %next-block.i.i523.preheader.split
br label %next-block.i.i523
next-block.i.i523: ; preds = %next-block.i.i523, %next-block.i.i523.preheader.split.split
%250 = phi i32 [ %.unr1327, %next-block.i.i523.preheader.split.split ], [ %272, %next-block.i.i523 ]
%.52.i.i513 = phi i64 [ %.52.i.i513.unr, %next-block.i.i523.preheader.split.split ], [ %..i.i521.1, %next-block.i.i523 ]
%wp.051.i.i514 = phi %"ll::limb::Limb"* [ %wp.051.i.i514.unr, %next-block.i.i523.preheader.split.split ], [ %262, %next-block.i.i523 ]
%xp.050.i.i515 = phi %"ll::limb::Limb"* [ %xp.050.i.i515.unr, %next-block.i.i523.preheader.split.split ], [ %263, %next-block.i.i523 ]
%yp.049.i.i516 = phi %"ll::limb::Limb"* [ %yp.049.i.i516.unr, %next-block.i.i523.preheader.split.split ], [ %264, %next-block.i.i523 ]
%251 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i514, i64 1
%252 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i515, i64 1
%253 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i516, i64 1
%xl.sroa.0.0..sroa_idx.i.i517 = getelementptr inbounds %"ll::limb::Limb"* %252, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i518 = load i64* %xl.sroa.0.0..sroa_idx.i.i517, align 8
%yl.sroa.0.0..sroa_idx.i.i519 = getelementptr inbounds %"ll::limb::Limb"* %253, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i520 = load i64* %yl.sroa.0.0..sroa_idx.i.i519, align 8
%254 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i518, i64 %yl.sroa.0.0.copyload.i.i520) #20
%255 = extractvalue { i64, i1 } %254, 0
%256 = extractvalue { i64, i1 } %254, 1
%257 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %255, i64 %.52.i.i513) #20
%258 = extractvalue { i64, i1 } %257, 0
%259 = extractvalue { i64, i1 } %257, 1
%260 = or i1 %256, %259
%..i.i521 = zext i1 %260 to i64
%rl.sroa.0.0..sroa_idx16.i.i522 = getelementptr inbounds %"ll::limb::Limb"* %251, i64 0, i32 0
store i64 %258, i64* %rl.sroa.0.0..sroa_idx16.i.i522, align 8
%261 = add i32 %250, -1
%262 = getelementptr inbounds %"ll::limb::Limb"* %251, i64 1
%263 = getelementptr inbounds %"ll::limb::Limb"* %252, i64 1
%264 = getelementptr inbounds %"ll::limb::Limb"* %253, i64 1
%xl.sroa.0.0..sroa_idx.i.i517.1 = getelementptr inbounds %"ll::limb::Limb"* %263, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i518.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i517.1, align 8
%yl.sroa.0.0..sroa_idx.i.i519.1 = getelementptr inbounds %"ll::limb::Limb"* %264, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i520.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i519.1, align 8
%265 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i518.1, i64 %yl.sroa.0.0.copyload.i.i520.1) #20
%266 = extractvalue { i64, i1 } %265, 0
%267 = extractvalue { i64, i1 } %265, 1
%268 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %266, i64 %..i.i521) #20
%269 = extractvalue { i64, i1 } %268, 0
%270 = extractvalue { i64, i1 } %268, 1
%271 = or i1 %267, %270
%..i.i521.1 = zext i1 %271 to i64
%rl.sroa.0.0..sroa_idx16.i.i522.1 = getelementptr inbounds %"ll::limb::Limb"* %262, i64 0, i32 0
store i64 %269, i64* %rl.sroa.0.0..sroa_idx16.i.i522.1, align 8
%272 = add i32 %261, -1
%273 = icmp eq i32 %272, 0
br i1 %273, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit.unr-lcssa, label %next-block.i.i523
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit.unr-lcssa: ; preds = %next-block.i.i523
%..i.i521.lcssa.ph = phi i64 [ %..i.i521.1, %next-block.i.i523 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit: ; preds = %next-block.i.i523.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit.unr-lcssa
%..i.i521.lcssa = phi i64 [ %..i.i521.lcssa.unr, %next-block.i.i523.preheader.split ], [ %..i.i521.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit, %else-block
%..lcssa.i.i524 = phi i64 [ %.47.i.i511, %else-block ], [ %..i.i521.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525.loopexit ]
%274 = sub nsw i64 %sret_slot.sroa.0.0.i, %..lcssa.i.i524
%.sum1113 = add nsw i64 %22, %11
%275 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1113, i32 0
store i64 %274, i64* %275, align 8
br label %join1
join1: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit
%wm1_neg.0 = phi i8 [ 1, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit ], [ 0, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit525 ]
%xl.sroa.0.0.copyload44.i.i527 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i, align 8
%yl.sroa.0.0.copyload46.i.i529 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i, align 8
%276 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i527, i64 %yl.sroa.0.0.copyload46.i.i529) #20
%277 = extractvalue { i64, i1 } %276, 0
%278 = extractvalue { i64, i1 } %276, 1
%.47.i.i530 = zext i1 %278 to i64
%rl.sroa.0.0..sroa_idx1648.i.i531 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
store i64 %277, i64* %rl.sroa.0.0..sroa_idx1648.i.i531, align 8
br i1 %36, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544, label %next-block.i.i542.preheader
next-block.i.i542.preheader: ; preds = %join1
%279 = add i32 %2, -1
%280 = mul i32 %7, 2
%281 = sub i32 %279, %280
%282 = add i32 %2, -2
%283 = sub i32 %282, %280
%xtraiter1322 = and i32 %281, 1
%lcmp.mod1323 = icmp ne i32 %xtraiter1322, 0
br i1 %lcmp.mod1323, label %next-block.i.i542.prol, label %next-block.i.i542.preheader.split
next-block.i.i542.prol: ; preds = %next-block.i.i542.preheader
%284 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%285 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 1
%286 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 1
%xl.sroa.0.0..sroa_idx.i.i536.prol = getelementptr inbounds %"ll::limb::Limb"* %285, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i537.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i536.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i538.prol = getelementptr inbounds %"ll::limb::Limb"* %286, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i539.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i538.prol, align 8
%287 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i537.prol, i64 %yl.sroa.0.0.copyload.i.i539.prol) #20
%288 = extractvalue { i64, i1 } %287, 0
%289 = extractvalue { i64, i1 } %287, 1
%290 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %288, i64 %.47.i.i530) #20
%291 = extractvalue { i64, i1 } %290, 0
%292 = extractvalue { i64, i1 } %290, 1
%293 = or i1 %289, %292
%..i.i540.prol = zext i1 %293 to i64
%rl.sroa.0.0..sroa_idx16.i.i541.prol = getelementptr inbounds %"ll::limb::Limb"* %284, i64 0, i32 0
store i64 %291, i64* %rl.sroa.0.0..sroa_idx16.i.i541.prol, align 8
%294 = add i32 %35, -1
%295 = icmp eq i32 %294, 0
br label %next-block.i.i542.preheader.split
next-block.i.i542.preheader.split: ; preds = %next-block.i.i542.prol, %next-block.i.i542.preheader
%..i.i540.lcssa.unr = phi i64 [ 0, %next-block.i.i542.preheader ], [ %..i.i540.prol, %next-block.i.i542.prol ]
%.unr1324 = phi i32 [ %35, %next-block.i.i542.preheader ], [ %294, %next-block.i.i542.prol ]
%.52.i.i532.unr = phi i64 [ %.47.i.i530, %next-block.i.i542.preheader ], [ %..i.i540.prol, %next-block.i.i542.prol ]
%wp.051.i.i533.unr = phi %"ll::limb::Limb"* [ %26, %next-block.i.i542.preheader ], [ %284, %next-block.i.i542.prol ]
%xp.050.i.i534.unr = phi %"ll::limb::Limb"* [ %14, %next-block.i.i542.preheader ], [ %285, %next-block.i.i542.prol ]
%yp.049.i.i535.unr = phi %"ll::limb::Limb"* [ %20, %next-block.i.i542.preheader ], [ %286, %next-block.i.i542.prol ]
%296 = icmp ult i32 %283, 1
br i1 %296, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit, label %next-block.i.i542.preheader.split.split
next-block.i.i542.preheader.split.split: ; preds = %next-block.i.i542.preheader.split
br label %next-block.i.i542
next-block.i.i542: ; preds = %next-block.i.i542, %next-block.i.i542.preheader.split.split
%297 = phi i32 [ %.unr1324, %next-block.i.i542.preheader.split.split ], [ %319, %next-block.i.i542 ]
%.52.i.i532 = phi i64 [ %.52.i.i532.unr, %next-block.i.i542.preheader.split.split ], [ %..i.i540.1, %next-block.i.i542 ]
%wp.051.i.i533 = phi %"ll::limb::Limb"* [ %wp.051.i.i533.unr, %next-block.i.i542.preheader.split.split ], [ %309, %next-block.i.i542 ]
%xp.050.i.i534 = phi %"ll::limb::Limb"* [ %xp.050.i.i534.unr, %next-block.i.i542.preheader.split.split ], [ %310, %next-block.i.i542 ]
%yp.049.i.i535 = phi %"ll::limb::Limb"* [ %yp.049.i.i535.unr, %next-block.i.i542.preheader.split.split ], [ %311, %next-block.i.i542 ]
%298 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i533, i64 1
%299 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i534, i64 1
%300 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i535, i64 1
%xl.sroa.0.0..sroa_idx.i.i536 = getelementptr inbounds %"ll::limb::Limb"* %299, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i537 = load i64* %xl.sroa.0.0..sroa_idx.i.i536, align 8
%yl.sroa.0.0..sroa_idx.i.i538 = getelementptr inbounds %"ll::limb::Limb"* %300, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i539 = load i64* %yl.sroa.0.0..sroa_idx.i.i538, align 8
%301 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i537, i64 %yl.sroa.0.0.copyload.i.i539) #20
%302 = extractvalue { i64, i1 } %301, 0
%303 = extractvalue { i64, i1 } %301, 1
%304 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %302, i64 %.52.i.i532) #20
%305 = extractvalue { i64, i1 } %304, 0
%306 = extractvalue { i64, i1 } %304, 1
%307 = or i1 %303, %306
%..i.i540 = zext i1 %307 to i64
%rl.sroa.0.0..sroa_idx16.i.i541 = getelementptr inbounds %"ll::limb::Limb"* %298, i64 0, i32 0
store i64 %305, i64* %rl.sroa.0.0..sroa_idx16.i.i541, align 8
%308 = add i32 %297, -1
%309 = getelementptr inbounds %"ll::limb::Limb"* %298, i64 1
%310 = getelementptr inbounds %"ll::limb::Limb"* %299, i64 1
%311 = getelementptr inbounds %"ll::limb::Limb"* %300, i64 1
%xl.sroa.0.0..sroa_idx.i.i536.1 = getelementptr inbounds %"ll::limb::Limb"* %310, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i537.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i536.1, align 8
%yl.sroa.0.0..sroa_idx.i.i538.1 = getelementptr inbounds %"ll::limb::Limb"* %311, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i539.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i538.1, align 8
%312 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i537.1, i64 %yl.sroa.0.0.copyload.i.i539.1) #20
%313 = extractvalue { i64, i1 } %312, 0
%314 = extractvalue { i64, i1 } %312, 1
%315 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %313, i64 %..i.i540) #20
%316 = extractvalue { i64, i1 } %315, 0
%317 = extractvalue { i64, i1 } %315, 1
%318 = or i1 %314, %317
%..i.i540.1 = zext i1 %318 to i64
%rl.sroa.0.0..sroa_idx16.i.i541.1 = getelementptr inbounds %"ll::limb::Limb"* %309, i64 0, i32 0
store i64 %316, i64* %rl.sroa.0.0..sroa_idx16.i.i541.1, align 8
%319 = add i32 %308, -1
%320 = icmp eq i32 %319, 0
br i1 %320, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit.unr-lcssa, label %next-block.i.i542
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit.unr-lcssa: ; preds = %next-block.i.i542
%..i.i540.lcssa.ph = phi i64 [ %..i.i540.1, %next-block.i.i542 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit: ; preds = %next-block.i.i542.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit.unr-lcssa
%..i.i540.lcssa = phi i64 [ %..i.i540.lcssa.unr, %next-block.i.i542.preheader.split ], [ %..i.i540.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit, %join1
%..lcssa.i.i543 = phi i64 [ %.47.i.i530, %join1 ], [ %..i.i540.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544.loopexit ]
%321 = icmp ne i32 %7, %9
br i1 %321, label %join3, label %next-block
join3: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544
%322 = icmp eq i64 %..lcssa.i.i543, 0
br i1 %322, label %next-block, label %then-block-3173-
then-block-3173-: ; preds = %join3
%323 = sext i32 %9 to i64
%.sum1131 = add nsw i64 %323, %25
%.sum1132 = add nsw i64 %19, %323
%324 = sub i32 %7, %9
%325 = icmp sgt i32 %324, 0
br i1 %325, label %then-block-839-.i, label %next-block
then-block-839-.i: ; preds = %then-block-3173-
%326 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1132, i32 0
%327 = load i64* %326, align 8
%328 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %327, i64 %..lcssa.i.i543) #20
%329 = extractvalue { i64, i1 } %328, 0
%330 = extractvalue { i64, i1 } %328, 1
%v.sroa.0.0..sroa_idx15.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1131, i32 0
store i64 %329, i64* %v.sroa.0.0..sroa_idx15.i, align 8
br i1 %330, label %while_body.lr.ph.i, label %next-block
while_body.lr.ph.i: ; preds = %then-block-839-.i
%331 = sext i32 %324 to i64
br label %while_body.i545
while_body.i545: ; preds = %next-block.i547, %while_body.lr.ph.i
%indvars.iv.i = phi i64 [ %indvars.iv.next.i, %next-block.i547 ], [ 1, %while_body.lr.ph.i ]
%332 = icmp slt i64 %indvars.iv.i, %331
br i1 %332, label %next-block.i547, label %next-block.loopexit
next-block.i547: ; preds = %while_body.i545
%.sum1133 = add i64 %indvars.iv.i, %.sum1132
%333 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1133, i32 0
%334 = load i64* %333, align 8
%335 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %334, i64 1) #20
%336 = extractvalue { i64, i1 } %335, 0
%337 = extractvalue { i64, i1 } %335, 1
%.sum1134 = add i64 %indvars.iv.i, %.sum1131
%v1.sroa.0.0..sroa_idx4.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1134, i32 0
store i64 %336, i64* %v1.sroa.0.0..sroa_idx4.i, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
br i1 %337, label %while_body.i545, label %next-block.loopexit
next-block.loopexit: ; preds = %while_body.i545, %next-block.i547
%.ph1240 = phi i64 [ 0, %next-block.i547 ], [ 1, %while_body.i545 ]
br label %next-block
next-block: ; preds = %next-block.loopexit, %join3, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544, %then-block-839-.i, %then-block-3173-
%338 = phi i64 [ 0, %join3 ], [ 0, %then-block-3173- ], [ 0, %then-block-839-.i ], [ %..lcssa.i.i543, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit544 ], [ %.ph1240, %next-block.loopexit ]
%339 = load i64* %179, align 8
%340 = add i64 %339, %338
%341 = shl i64 %340, 1
%342 = sext i32 %137 to i64
%.sum1114 = add nsw i64 %25, %342
%343 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1114
%l.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %343, i64 0, i32 0
%l.sroa.0.0.copyload.i = load i64* %l.sroa.0.0..sroa_idx.i, align 8
%344 = lshr i64 %l.sroa.0.0.copyload.i, 63
%high_limb.sroa.0.049.i = shl i64 %l.sroa.0.0.copyload.i, 1
br i1 %138, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit, label %while_body.lr.ph.i548
while_body.lr.ph.i548: ; preds = %next-block
%345 = add i32 %7, -2
%346 = zext i32 %345 to i64
%347 = add i32 %7, -1
%xtraiter1319 = and i32 %347, 3
%lcmp.mod1320 = icmp ne i32 %xtraiter1319, 0
br i1 %lcmp.mod1320, label %while_body.i549.prol, label %while_body.lr.ph.i548.split
while_body.i549.prol: ; preds = %while_body.i549.prol, %while_body.lr.ph.i548
%high_limb.sroa.0.053.i.prol = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i548 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i549.prol ]
%rp.052.i.prol = phi %"ll::limb::Limb"* [ %343, %while_body.lr.ph.i548 ], [ %348, %while_body.i549.prol ]
%xs.050.i.prol = phi i32 [ %137, %while_body.lr.ph.i548 ], [ %352, %while_body.i549.prol ]
%prol.iter1321 = phi i32 [ %xtraiter1319, %while_body.lr.ph.i548 ], [ %prol.iter1321.sub, %while_body.i549.prol ]
%348 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 -1
%low.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %348, i64 0, i32 0
%low.sroa.0.0.copyload.i.prol = load i64* %low.sroa.0.0..sroa_idx.i.prol, align 8
%349 = lshr i64 %low.sroa.0.0.copyload.i.prol, 63
%350 = or i64 %349, %high_limb.sroa.0.053.i.prol
%351 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 0, i32 0
store i64 %350, i64* %351, align 8
%352 = add i32 %xs.050.i.prol, -1
%high_limb.sroa.0.0.i.prol = shl i64 %low.sroa.0.0.copyload.i.prol, 1
%353 = icmp eq i32 %352, 0
%prol.iter1321.sub = sub i32 %prol.iter1321, 1
%prol.iter1321.cmp = icmp ne i32 %prol.iter1321.sub, 0
br i1 %prol.iter1321.cmp, label %while_body.i549.prol, label %while_body.lr.ph.i548.split, !llvm.loop !120
while_body.lr.ph.i548.split: ; preds = %while_body.i549.prol, %while_body.lr.ph.i548
%high_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i548 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i549.prol ]
%high_limb.sroa.0.053.i.unr = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i548 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i549.prol ]
%rp.052.i.unr = phi %"ll::limb::Limb"* [ %343, %while_body.lr.ph.i548 ], [ %348, %while_body.i549.prol ]
%xs.050.i.unr = phi i32 [ %137, %while_body.lr.ph.i548 ], [ %352, %while_body.i549.prol ]
%354 = icmp ult i32 %345, 3
br i1 %354, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit, label %while_body.lr.ph.i548.split.split
while_body.lr.ph.i548.split.split: ; preds = %while_body.lr.ph.i548.split
br label %while_body.i549
while_body.i549: ; preds = %while_body.i549, %while_body.lr.ph.i548.split.split
%high_limb.sroa.0.053.i = phi i64 [ %high_limb.sroa.0.053.i.unr, %while_body.lr.ph.i548.split.split ], [ %high_limb.sroa.0.0.i.3, %while_body.i549 ]
%rp.052.i = phi %"ll::limb::Limb"* [ %rp.052.i.unr, %while_body.lr.ph.i548.split.split ], [ %370, %while_body.i549 ]
%xs.050.i = phi i32 [ %xs.050.i.unr, %while_body.lr.ph.i548.split.split ], [ %374, %while_body.i549 ]
%355 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 -1
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %355, i64 0, i32 0
%low.sroa.0.0.copyload.i = load i64* %low.sroa.0.0..sroa_idx.i, align 8
%356 = lshr i64 %low.sroa.0.0.copyload.i, 63
%357 = or i64 %356, %high_limb.sroa.0.053.i
%358 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 0, i32 0
store i64 %357, i64* %358, align 8
%359 = add i32 %xs.050.i, -1
%high_limb.sroa.0.0.i = shl i64 %low.sroa.0.0.copyload.i, 1
%360 = getelementptr inbounds %"ll::limb::Limb"* %355, i64 -1
%low.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %360, i64 0, i32 0
%low.sroa.0.0.copyload.i.1 = load i64* %low.sroa.0.0..sroa_idx.i.1, align 8
%361 = lshr i64 %low.sroa.0.0.copyload.i.1, 63
%362 = or i64 %361, %high_limb.sroa.0.0.i
%363 = getelementptr inbounds %"ll::limb::Limb"* %355, i64 0, i32 0
store i64 %362, i64* %363, align 8
%364 = add i32 %359, -1
%high_limb.sroa.0.0.i.1 = shl i64 %low.sroa.0.0.copyload.i.1, 1
%365 = getelementptr inbounds %"ll::limb::Limb"* %360, i64 -1
%low.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %365, i64 0, i32 0
%low.sroa.0.0.copyload.i.2 = load i64* %low.sroa.0.0..sroa_idx.i.2, align 8
%366 = lshr i64 %low.sroa.0.0.copyload.i.2, 63
%367 = or i64 %366, %high_limb.sroa.0.0.i.1
%368 = getelementptr inbounds %"ll::limb::Limb"* %360, i64 0, i32 0
store i64 %367, i64* %368, align 8
%369 = add i32 %364, -1
%high_limb.sroa.0.0.i.2 = shl i64 %low.sroa.0.0.copyload.i.2, 1
%370 = getelementptr inbounds %"ll::limb::Limb"* %365, i64 -1
%low.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %370, i64 0, i32 0
%low.sroa.0.0.copyload.i.3 = load i64* %low.sroa.0.0..sroa_idx.i.3, align 8
%371 = lshr i64 %low.sroa.0.0.copyload.i.3, 63
%372 = or i64 %371, %high_limb.sroa.0.0.i.2
%373 = getelementptr inbounds %"ll::limb::Limb"* %365, i64 0, i32 0
store i64 %372, i64* %373, align 8
%374 = add i32 %369, -1
%high_limb.sroa.0.0.i.3 = shl i64 %low.sroa.0.0.copyload.i.3, 1
%375 = icmp eq i32 %374, 0
br i1 %375, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit.unr-lcssa, label %while_body.i549
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit.unr-lcssa: ; preds = %while_body.i549
%high_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i.3, %while_body.i549 ]
br label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit: ; preds = %while_body.lr.ph.i548.split, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit.unr-lcssa
%high_limb.sroa.0.0.i.lcssa = phi i64 [ %high_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i548.split ], [ %high_limb.sroa.0.0.i.lcssa.ph, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit.unr-lcssa ]
%376 = add nsw i64 %342, -1
%377 = sub nsw i64 %376, %346
br label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit: ; preds = %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit, %next-block
%high_limb.sroa.0.0.lcssa.i = phi i64 [ %high_limb.sroa.0.049.i, %next-block ], [ %high_limb.sroa.0.0.i.lcssa, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit ]
%378 = phi i64 [ %342, %next-block ], [ %377, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit.loopexit ]
%.sum1115 = add nsw i64 %378, %25
%high_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1115, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i, i64* %high_limb.sroa.0.0..sroa_idx.i, align 8
%379 = or i64 %344, %341
%xl.sroa.0.0.copyload44.i.i551 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i531, align 8
%yl.sroa.0.0.copyload46.i.i553 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%380 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i551, i64 %yl.sroa.0.0.copyload46.i.i553) #20
%381 = extractvalue { i64, i1 } %380, 0
%382 = extractvalue { i64, i1 } %380, 1
%.47.i.i554 = zext i1 %382 to i64
store i64 %381, i64* %rl.sroa.0.0..sroa_idx1648.i.i531, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568, label %next-block.i.i566.preheader
next-block.i.i566.preheader: ; preds = %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit
%383 = add i32 %7, -1
%384 = add i32 %7, -2
%xtraiter1316 = and i32 %383, 1
%lcmp.mod1317 = icmp ne i32 %xtraiter1316, 0
br i1 %lcmp.mod1317, label %next-block.i.i566.prol, label %next-block.i.i566.preheader.split
next-block.i.i566.prol: ; preds = %next-block.i.i566.preheader
%385 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%386 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1
%xl.sroa.0.0..sroa_idx.i.i560.prol = getelementptr inbounds %"ll::limb::Limb"* %385, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i561.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i560.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i562.prol = getelementptr inbounds %"ll::limb::Limb"* %386, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i563.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i562.prol, align 8
%387 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i561.prol, i64 %yl.sroa.0.0.copyload.i.i563.prol) #20
%388 = extractvalue { i64, i1 } %387, 0
%389 = extractvalue { i64, i1 } %387, 1
%390 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %388, i64 %.47.i.i554) #20
%391 = extractvalue { i64, i1 } %390, 0
%392 = extractvalue { i64, i1 } %390, 1
%393 = or i1 %389, %392
%..i.i564.prol = zext i1 %393 to i64
store i64 %391, i64* %xl.sroa.0.0..sroa_idx.i.i560.prol, align 8
%394 = add i32 %137, -1
%395 = icmp eq i32 %394, 0
br label %next-block.i.i566.preheader.split
next-block.i.i566.preheader.split: ; preds = %next-block.i.i566.prol, %next-block.i.i566.preheader
%..i.i564.lcssa.unr = phi i64 [ 0, %next-block.i.i566.preheader ], [ %..i.i564.prol, %next-block.i.i566.prol ]
%.unr1318 = phi i32 [ %137, %next-block.i.i566.preheader ], [ %394, %next-block.i.i566.prol ]
%.52.i.i556.unr = phi i64 [ %.47.i.i554, %next-block.i.i566.preheader ], [ %..i.i564.prol, %next-block.i.i566.prol ]
%wp.051.i.i557.unr = phi %"ll::limb::Limb"* [ %26, %next-block.i.i566.preheader ], [ %385, %next-block.i.i566.prol ]
%yp.049.i.i559.unr = phi %"ll::limb::Limb"* [ %1, %next-block.i.i566.preheader ], [ %386, %next-block.i.i566.prol ]
%396 = icmp ult i32 %384, 1
br i1 %396, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit, label %next-block.i.i566.preheader.split.split
next-block.i.i566.preheader.split.split: ; preds = %next-block.i.i566.preheader.split
br label %next-block.i.i566
next-block.i.i566: ; preds = %next-block.i.i566, %next-block.i.i566.preheader.split.split
%397 = phi i32 [ %.unr1318, %next-block.i.i566.preheader.split.split ], [ %417, %next-block.i.i566 ]
%.52.i.i556 = phi i64 [ %.52.i.i556.unr, %next-block.i.i566.preheader.split.split ], [ %..i.i564.1, %next-block.i.i566 ]
%wp.051.i.i557 = phi %"ll::limb::Limb"* [ %wp.051.i.i557.unr, %next-block.i.i566.preheader.split.split ], [ %408, %next-block.i.i566 ]
%yp.049.i.i559 = phi %"ll::limb::Limb"* [ %yp.049.i.i559.unr, %next-block.i.i566.preheader.split.split ], [ %409, %next-block.i.i566 ]
%398 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i557, i64 1
%399 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i559, i64 1
%xl.sroa.0.0..sroa_idx.i.i560 = getelementptr inbounds %"ll::limb::Limb"* %398, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i561 = load i64* %xl.sroa.0.0..sroa_idx.i.i560, align 8
%yl.sroa.0.0..sroa_idx.i.i562 = getelementptr inbounds %"ll::limb::Limb"* %399, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i563 = load i64* %yl.sroa.0.0..sroa_idx.i.i562, align 8
%400 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i561, i64 %yl.sroa.0.0.copyload.i.i563) #20
%401 = extractvalue { i64, i1 } %400, 0
%402 = extractvalue { i64, i1 } %400, 1
%403 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %401, i64 %.52.i.i556) #20
%404 = extractvalue { i64, i1 } %403, 0
%405 = extractvalue { i64, i1 } %403, 1
%406 = or i1 %402, %405
%..i.i564 = zext i1 %406 to i64
store i64 %404, i64* %xl.sroa.0.0..sroa_idx.i.i560, align 8
%407 = add i32 %397, -1
%408 = getelementptr inbounds %"ll::limb::Limb"* %398, i64 1
%409 = getelementptr inbounds %"ll::limb::Limb"* %399, i64 1
%xl.sroa.0.0..sroa_idx.i.i560.1 = getelementptr inbounds %"ll::limb::Limb"* %408, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i561.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i560.1, align 8
%yl.sroa.0.0..sroa_idx.i.i562.1 = getelementptr inbounds %"ll::limb::Limb"* %409, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i563.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i562.1, align 8
%410 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i561.1, i64 %yl.sroa.0.0.copyload.i.i563.1) #20
%411 = extractvalue { i64, i1 } %410, 0
%412 = extractvalue { i64, i1 } %410, 1
%413 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %411, i64 %..i.i564) #20
%414 = extractvalue { i64, i1 } %413, 0
%415 = extractvalue { i64, i1 } %413, 1
%416 = or i1 %412, %415
%..i.i564.1 = zext i1 %416 to i64
store i64 %414, i64* %xl.sroa.0.0..sroa_idx.i.i560.1, align 8
%417 = add i32 %407, -1
%418 = icmp eq i32 %417, 0
br i1 %418, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit.unr-lcssa, label %next-block.i.i566
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit.unr-lcssa: ; preds = %next-block.i.i566
%..i.i564.lcssa.ph = phi i64 [ %..i.i564.1, %next-block.i.i566 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit: ; preds = %next-block.i.i566.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit.unr-lcssa
%..i.i564.lcssa = phi i64 [ %..i.i564.lcssa.unr, %next-block.i.i566.preheader.split ], [ %..i.i564.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit
%..lcssa.i.i567 = phi i64 [ %.47.i.i554, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit ], [ %..i.i564.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568.loopexit ]
%419 = sub i64 %379, %..lcssa.i.i567
%.sum1116 = add nsw i64 %25, %11
%420 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1116, i32 0
store i64 %419, i64* %420, align 8
%xl.sroa.0.0..sroa_idx43.i.i.i569 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i570 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i569, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i571 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i572 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i571, align 8
%421 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i570, i64 %yl.sroa.0.0.copyload46.i.i.i572) #20
%422 = extractvalue { i64, i1 } %421, 0
%423 = extractvalue { i64, i1 } %421, 1
%.47.i.i.i573 = zext i1 %423 to i64
store i64 %422, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
br i1 %36, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587, label %next-block.i.i.i585.preheader
next-block.i.i.i585.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568
%424 = add i32 %2, -1
%425 = mul i32 %7, 2
%426 = sub i32 %424, %425
%427 = add i32 %2, -2
%428 = sub i32 %427, %425
%xtraiter1313 = and i32 %426, 1
%lcmp.mod1314 = icmp ne i32 %xtraiter1313, 0
br i1 %lcmp.mod1314, label %next-block.i.i.i585.prol, label %next-block.i.i.i585.preheader.split
next-block.i.i.i585.prol: ; preds = %next-block.i.i.i585.preheader
%429 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%430 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%431 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i579.prol = getelementptr inbounds %"ll::limb::Limb"* %430, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i580.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i579.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i581.prol = getelementptr inbounds %"ll::limb::Limb"* %431, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i582.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i581.prol, align 8
%432 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i580.prol, i64 %yl.sroa.0.0.copyload.i.i.i582.prol) #20
%433 = extractvalue { i64, i1 } %432, 0
%434 = extractvalue { i64, i1 } %432, 1
%435 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %433, i64 %.47.i.i.i573) #20
%436 = extractvalue { i64, i1 } %435, 0
%437 = extractvalue { i64, i1 } %435, 1
%438 = or i1 %434, %437
%..i.i.i583.prol = zext i1 %438 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i584.prol = getelementptr inbounds %"ll::limb::Limb"* %429, i64 0, i32 0
store i64 %436, i64* %rl.sroa.0.0..sroa_idx16.i.i.i584.prol, align 8
%439 = add i32 %35, -1
%440 = icmp eq i32 %439, 0
br label %next-block.i.i.i585.preheader.split
next-block.i.i.i585.preheader.split: ; preds = %next-block.i.i.i585.prol, %next-block.i.i.i585.preheader
%..i.i.i583.lcssa.unr = phi i64 [ 0, %next-block.i.i.i585.preheader ], [ %..i.i.i583.prol, %next-block.i.i.i585.prol ]
%.unr1315 = phi i32 [ %35, %next-block.i.i.i585.preheader ], [ %439, %next-block.i.i.i585.prol ]
%.52.i.i.i575.unr = phi i64 [ %.47.i.i.i573, %next-block.i.i.i585.preheader ], [ %..i.i.i583.prol, %next-block.i.i.i585.prol ]
%wp.051.i.i.i576.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i.i585.preheader ], [ %429, %next-block.i.i.i585.prol ]
%xp.050.i.i.i577.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i.i585.preheader ], [ %430, %next-block.i.i.i585.prol ]
%yp.049.i.i.i578.unr = phi %"ll::limb::Limb"* [ %16, %next-block.i.i.i585.preheader ], [ %431, %next-block.i.i.i585.prol ]
%441 = icmp ult i32 %428, 1
br i1 %441, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit, label %next-block.i.i.i585.preheader.split.split
next-block.i.i.i585.preheader.split.split: ; preds = %next-block.i.i.i585.preheader.split
br label %next-block.i.i.i585
next-block.i.i.i585: ; preds = %next-block.i.i.i585, %next-block.i.i.i585.preheader.split.split
%442 = phi i32 [ %.unr1315, %next-block.i.i.i585.preheader.split.split ], [ %464, %next-block.i.i.i585 ]
%.52.i.i.i575 = phi i64 [ %.52.i.i.i575.unr, %next-block.i.i.i585.preheader.split.split ], [ %..i.i.i583.1, %next-block.i.i.i585 ]
%wp.051.i.i.i576 = phi %"ll::limb::Limb"* [ %wp.051.i.i.i576.unr, %next-block.i.i.i585.preheader.split.split ], [ %454, %next-block.i.i.i585 ]
%xp.050.i.i.i577 = phi %"ll::limb::Limb"* [ %xp.050.i.i.i577.unr, %next-block.i.i.i585.preheader.split.split ], [ %455, %next-block.i.i.i585 ]
%yp.049.i.i.i578 = phi %"ll::limb::Limb"* [ %yp.049.i.i.i578.unr, %next-block.i.i.i585.preheader.split.split ], [ %456, %next-block.i.i.i585 ]
%443 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i576, i64 1
%444 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i577, i64 1
%445 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i578, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i579 = getelementptr inbounds %"ll::limb::Limb"* %444, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i580 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i579, align 8
%yl.sroa.0.0..sroa_idx.i.i.i581 = getelementptr inbounds %"ll::limb::Limb"* %445, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i582 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i581, align 8
%446 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i580, i64 %yl.sroa.0.0.copyload.i.i.i582) #20
%447 = extractvalue { i64, i1 } %446, 0
%448 = extractvalue { i64, i1 } %446, 1
%449 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %447, i64 %.52.i.i.i575) #20
%450 = extractvalue { i64, i1 } %449, 0
%451 = extractvalue { i64, i1 } %449, 1
%452 = or i1 %448, %451
%..i.i.i583 = zext i1 %452 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i584 = getelementptr inbounds %"ll::limb::Limb"* %443, i64 0, i32 0
store i64 %450, i64* %rl.sroa.0.0..sroa_idx16.i.i.i584, align 8
%453 = add i32 %442, -1
%454 = getelementptr inbounds %"ll::limb::Limb"* %443, i64 1
%455 = getelementptr inbounds %"ll::limb::Limb"* %444, i64 1
%456 = getelementptr inbounds %"ll::limb::Limb"* %445, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i579.1 = getelementptr inbounds %"ll::limb::Limb"* %455, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i580.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i579.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i581.1 = getelementptr inbounds %"ll::limb::Limb"* %456, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i582.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i581.1, align 8
%457 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i580.1, i64 %yl.sroa.0.0.copyload.i.i.i582.1) #20
%458 = extractvalue { i64, i1 } %457, 0
%459 = extractvalue { i64, i1 } %457, 1
%460 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %458, i64 %..i.i.i583) #20
%461 = extractvalue { i64, i1 } %460, 0
%462 = extractvalue { i64, i1 } %460, 1
%463 = or i1 %459, %462
%..i.i.i583.1 = zext i1 %463 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i584.1 = getelementptr inbounds %"ll::limb::Limb"* %454, i64 0, i32 0
store i64 %461, i64* %rl.sroa.0.0..sroa_idx16.i.i.i584.1, align 8
%464 = add i32 %453, -1
%465 = icmp eq i32 %464, 0
br i1 %465, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit.unr-lcssa, label %next-block.i.i.i585
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit.unr-lcssa: ; preds = %next-block.i.i.i585
%..i.i.i583.lcssa.ph = phi i64 [ %..i.i.i583.1, %next-block.i.i.i585 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit: ; preds = %next-block.i.i.i585.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit.unr-lcssa
%..i.i.i583.lcssa = phi i64 [ %..i.i.i583.lcssa.unr, %next-block.i.i.i585.preheader.split ], [ %..i.i.i583.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568
%..lcssa.i.i.i586 = phi i64 [ %.47.i.i.i573, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit568 ], [ %..i.i.i583.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587.loopexit ]
%466 = icmp eq i64 %..lcssa.i.i.i586, 1
br i1 %466, label %loop_body.i589.preheader, label %next-block3.i595
loop_body.i589.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587
br label %loop_body.i589
loop_body.i589: ; preds = %loop_body.i589.preheader, %next-block.i592
%i.0.i588 = phi i32 [ %474, %next-block.i592 ], [ %9, %loop_body.i589.preheader ]
%467 = icmp slt i32 %i.0.i588, %7
br i1 %467, label %next-block.i592, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit1239
next-block.i592: ; preds = %loop_body.i589
%468 = sext i32 %i.0.i588 to i64
%469 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %468, i32 0
%470 = load i64* %469, align 8
%471 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %470, i64 1) #20
%472 = extractvalue { i64, i1 } %471, 0
%473 = extractvalue { i64, i1 } %471, 1
%x.sroa.0.0..sroa_idx6.i591 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %468, i32 0
store i64 %472, i64* %x.sroa.0.0..sroa_idx6.i591, align 8
%474 = add i32 %i.0.i588, 1
br i1 %473, label %loop_body.i589, label %next-block3.i595.loopexit
next-block3.i595.loopexit: ; preds = %next-block.i592
%.lcssa1244 = phi i32 [ %474, %next-block.i592 ]
br label %next-block3.i595
next-block3.i595: ; preds = %next-block3.i595.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587
%i.1.i593 = phi i32 [ %9, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i587 ], [ %.lcssa1244, %next-block3.i595.loopexit ]
%475 = icmp ne %"ll::limb::Limb"* %5, %3
%476 = icmp sgt i32 %7, %i.1.i593
%..i594 = and i1 %475, %476
br i1 %..i594, label %then-block-629-.i596, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
then-block-629-.i596: ; preds = %next-block3.i595
%477 = sext i32 %i.1.i593 to i64
%478 = sub i32 %7, %i.1.i593
%479 = icmp sgt i32 %478, 0
br i1 %479, label %while_body.lr.ph.i.i.i597, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
while_body.lr.ph.i.i.i597: ; preds = %then-block-629-.i596
%480 = sub i32 %137, %i.1.i593
%481 = add i32 %7, -1
%482 = sub i32 %481, %i.1.i593
%483 = zext i32 %482 to i64
%484 = add nuw nsw i64 %483, 1
%end.idx1198 = add nuw nsw i64 %483, 1
%n.vec1200 = and i64 %484, 8589934588
%cmp.zero1202 = icmp eq i64 %n.vec1200, 0
%485 = sext i32 %i.1.i593 to i64
%486 = add i32 %7, -1
%487 = sub i32 %486, %i.1.i593
%488 = zext i32 %487 to i64
%489 = add nsw i64 %485, %488
br i1 %cmp.zero1202, label %middle.block1195, label %vector.memcheck1216
vector.memcheck1216: ; preds = %while_body.lr.ph.i.i.i597
%scevgep1204 = getelementptr %"ll::limb::Limb"* %5, i64 %485
%scevgep1210 = getelementptr %"ll::limb::Limb"* %3, i64 %489
%bound01212 = icmp ule %"ll::limb::Limb"* %scevgep1204, %scevgep1210
%scevgep1208 = getelementptr %"ll::limb::Limb"* %3, i64 %485
%scevgep1206 = getelementptr %"ll::limb::Limb"* %5, i64 %489
%bound11213 = icmp ule %"ll::limb::Limb"* %scevgep1208, %scevgep1206
%memcheck.conflict1215 = and i1 %bound01212, %bound11213
br i1 %memcheck.conflict1215, label %middle.block1195, label %vector.body1194.preheader
vector.body1194.preheader: ; preds = %vector.memcheck1216
br label %vector.body1194
vector.body1194: ; preds = %vector.body1194.preheader, %vector.body1194
%index1197 = phi i64 [ %index.next1222, %vector.body1194 ], [ 0, %vector.body1194.preheader ]
%490 = add i64 %index1197, %477
%491 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %490, i32 0
%492 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %490, i32 0
%493 = bitcast i64* %491 to <2 x i64>*
%wide.load1229 = load <2 x i64>* %493, align 8
%494 = getelementptr i64* %491, i64 2
%495 = bitcast i64* %494 to <2 x i64>*
%wide.load1230 = load <2 x i64>* %495, align 8
%496 = bitcast i64* %492 to <2 x i64>*
store <2 x i64> %wide.load1229, <2 x i64>* %496, align 8
%497 = getelementptr i64* %492, i64 2
%498 = bitcast i64* %497 to <2 x i64>*
store <2 x i64> %wide.load1230, <2 x i64>* %498, align 8
%index.next1222 = add i64 %index1197, 4
%499 = icmp eq i64 %index.next1222, %n.vec1200
br i1 %499, label %middle.block1195.loopexit, label %vector.body1194, !llvm.loop !121
middle.block1195.loopexit: ; preds = %vector.body1194
br label %middle.block1195
middle.block1195: ; preds = %middle.block1195.loopexit, %vector.memcheck1216, %while_body.lr.ph.i.i.i597
%resume.val1217 = phi i64 [ 0, %while_body.lr.ph.i.i.i597 ], [ 0, %vector.memcheck1216 ], [ %n.vec1200, %middle.block1195.loopexit ]
%cmp.n1221 = icmp eq i64 %end.idx1198, %resume.val1217
br i1 %cmp.n1221, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604, label %while_body.i.i.i603.preheader
while_body.i.i.i603.preheader: ; preds = %middle.block1195
%500 = sub i32 %7, %i.1.i593
%501 = trunc i64 %resume.val1217 to i32
%502 = sub i32 %500, %501
%503 = add i32 %7, -1
%504 = sub i32 %503, %i.1.i593
%505 = sub i32 %504, %501
%xtraiter1310 = and i32 %502, 3
%lcmp.mod1311 = icmp ne i32 %xtraiter1310, 0
br i1 %lcmp.mod1311, label %while_body.i.i.i603.prol, label %while_body.i.i.i603.preheader.split
while_body.i.i.i603.prol: ; preds = %while_body.i.i.i603.prol, %while_body.i.i.i603.preheader
%indvars.iv.i.i.i598.prol = phi i64 [ %indvars.iv.next.i.i.i600.prol, %while_body.i.i.i603.prol ], [ %resume.val1217, %while_body.i.i.i603.preheader ]
%prol.iter1312 = phi i32 [ %xtraiter1310, %while_body.i.i.i603.preheader ], [ %prol.iter1312.sub, %while_body.i.i.i603.prol ]
%.sum.i.i599.prol = add i64 %indvars.iv.i.i.i598.prol, %477
%506 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i599.prol, i32 0
%507 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i599.prol, i32 0
%508 = load i64* %506, align 8
store i64 %508, i64* %507, align 8
%indvars.iv.next.i.i.i600.prol = add nuw nsw i64 %indvars.iv.i.i.i598.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.i598.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %480
%prol.iter1312.sub = sub i32 %prol.iter1312, 1
%prol.iter1312.cmp = icmp ne i32 %prol.iter1312.sub, 0
br i1 %prol.iter1312.cmp, label %while_body.i.i.i603.prol, label %while_body.i.i.i603.preheader.split, !llvm.loop !122
while_body.i.i.i603.preheader.split: ; preds = %while_body.i.i.i603.prol, %while_body.i.i.i603.preheader
%indvars.iv.i.i.i598.unr = phi i64 [ %resume.val1217, %while_body.i.i.i603.preheader ], [ %indvars.iv.next.i.i.i600.prol, %while_body.i.i.i603.prol ]
%509 = icmp ult i32 %505, 3
br i1 %509, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit, label %while_body.i.i.i603.preheader.split.split
while_body.i.i.i603.preheader.split.split: ; preds = %while_body.i.i.i603.preheader.split
br label %while_body.i.i.i603
while_body.i.i.i603: ; preds = %while_body.i.i.i603, %while_body.i.i.i603.preheader.split.split
%indvars.iv.i.i.i598 = phi i64 [ %indvars.iv.i.i.i598.unr, %while_body.i.i.i603.preheader.split.split ], [ %indvars.iv.next.i.i.i600.3, %while_body.i.i.i603 ]
%.sum.i.i599 = add i64 %indvars.iv.i.i.i598, %477
%510 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i599, i32 0
%511 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i599, i32 0
%512 = load i64* %510, align 8
store i64 %512, i64* %511, align 8
%indvars.iv.next.i.i.i600 = add nuw nsw i64 %indvars.iv.i.i.i598, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i598 to i32
%.sum.i.i599.1 = add i64 %indvars.iv.next.i.i.i600, %477
%513 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i599.1, i32 0
%514 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i599.1, i32 0
%515 = load i64* %513, align 8
store i64 %515, i64* %514, align 8
%indvars.iv.next.i.i.i600.1 = add nuw nsw i64 %indvars.iv.next.i.i.i600, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i600 to i32
%.sum.i.i599.2 = add i64 %indvars.iv.next.i.i.i600.1, %477
%516 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i599.2, i32 0
%517 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i599.2, i32 0
%518 = load i64* %516, align 8
store i64 %518, i64* %517, align 8
%indvars.iv.next.i.i.i600.2 = add nuw nsw i64 %indvars.iv.next.i.i.i600.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.i600.1 to i32
%.sum.i.i599.3 = add i64 %indvars.iv.next.i.i.i600.2, %477
%519 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum.i.i599.3, i32 0
%520 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum.i.i599.3, i32 0
%521 = load i64* %519, align 8
store i64 %521, i64* %520, align 8
%indvars.iv.next.i.i.i600.3 = add nuw nsw i64 %indvars.iv.next.i.i.i600.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.i600.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %480
br i1 %exitcond.3, label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit.unr-lcssa, label %while_body.i.i.i603, !llvm.loop !123
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit.unr-lcssa: ; preds = %while_body.i.i.i603
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit: ; preds = %while_body.i.i.i603.preheader.split, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit.unr-lcssa
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit1239: ; preds = %loop_body.i589
br label %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit1239, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit, %middle.block1195, %next-block3.i595, %then-block-629-.i596
%sret_slot.sroa.0.0.i590 = phi i64 [ 0, %next-block3.i595 ], [ 0, %then-block-629-.i596 ], [ 0, %middle.block1195 ], [ 0, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit ], [ 1, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604.loopexit1239 ]
%xl.sroa.0.0.copyload44.i.i606 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i607 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i608 = load i64* %yl.sroa.0.0..sroa_idx45.i.i607, align 8
%522 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i606, i64 %yl.sroa.0.0.copyload46.i.i608) #20
%523 = extractvalue { i64, i1 } %522, 0
%524 = extractvalue { i64, i1 } %522, 1
%.47.i.i609 = zext i1 %524 to i64
%rl.sroa.0.0..sroa_idx1648.i.i610 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %523, i64* %rl.sroa.0.0..sroa_idx1648.i.i610, align 8
br i1 %138, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623, label %next-block.i.i621.preheader
next-block.i.i621.preheader: ; preds = %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
%525 = add i32 %7, -1
%526 = add i32 %7, -2
%xtraiter1307 = and i32 %525, 1
%lcmp.mod1308 = icmp ne i32 %xtraiter1307, 0
br i1 %lcmp.mod1308, label %next-block.i.i621.prol, label %next-block.i.i621.preheader.split
next-block.i.i621.prol: ; preds = %next-block.i.i621.preheader
%527 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%528 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%529 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 1
%xl.sroa.0.0..sroa_idx.i.i615.prol = getelementptr inbounds %"ll::limb::Limb"* %528, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i616.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i615.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i617.prol = getelementptr inbounds %"ll::limb::Limb"* %529, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i618.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i617.prol, align 8
%530 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i616.prol, i64 %yl.sroa.0.0.copyload.i.i618.prol) #20
%531 = extractvalue { i64, i1 } %530, 0
%532 = extractvalue { i64, i1 } %530, 1
%533 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %531, i64 %.47.i.i609) #20
%534 = extractvalue { i64, i1 } %533, 0
%535 = extractvalue { i64, i1 } %533, 1
%536 = or i1 %532, %535
%..i.i619.prol = zext i1 %536 to i64
%rl.sroa.0.0..sroa_idx16.i.i620.prol = getelementptr inbounds %"ll::limb::Limb"* %527, i64 0, i32 0
store i64 %534, i64* %rl.sroa.0.0..sroa_idx16.i.i620.prol, align 8
%537 = add i32 %137, -1
%538 = icmp eq i32 %537, 0
br label %next-block.i.i621.preheader.split
next-block.i.i621.preheader.split: ; preds = %next-block.i.i621.prol, %next-block.i.i621.preheader
%..i.i619.lcssa.unr = phi i64 [ 0, %next-block.i.i621.preheader ], [ %..i.i619.prol, %next-block.i.i621.prol ]
%.unr1309 = phi i32 [ %137, %next-block.i.i621.preheader ], [ %537, %next-block.i.i621.prol ]
%.52.i.i611.unr = phi i64 [ %.47.i.i609, %next-block.i.i621.preheader ], [ %..i.i619.prol, %next-block.i.i621.prol ]
%wp.051.i.i612.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i621.preheader ], [ %527, %next-block.i.i621.prol ]
%xp.050.i.i613.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i621.preheader ], [ %528, %next-block.i.i621.prol ]
%yp.049.i.i614.unr = phi %"ll::limb::Limb"* [ %15, %next-block.i.i621.preheader ], [ %529, %next-block.i.i621.prol ]
%539 = icmp ult i32 %526, 1
br i1 %539, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit, label %next-block.i.i621.preheader.split.split
next-block.i.i621.preheader.split.split: ; preds = %next-block.i.i621.preheader.split
br label %next-block.i.i621
next-block.i.i621: ; preds = %next-block.i.i621, %next-block.i.i621.preheader.split.split
%540 = phi i32 [ %.unr1309, %next-block.i.i621.preheader.split.split ], [ %562, %next-block.i.i621 ]
%.52.i.i611 = phi i64 [ %.52.i.i611.unr, %next-block.i.i621.preheader.split.split ], [ %..i.i619.1, %next-block.i.i621 ]
%wp.051.i.i612 = phi %"ll::limb::Limb"* [ %wp.051.i.i612.unr, %next-block.i.i621.preheader.split.split ], [ %552, %next-block.i.i621 ]
%xp.050.i.i613 = phi %"ll::limb::Limb"* [ %xp.050.i.i613.unr, %next-block.i.i621.preheader.split.split ], [ %553, %next-block.i.i621 ]
%yp.049.i.i614 = phi %"ll::limb::Limb"* [ %yp.049.i.i614.unr, %next-block.i.i621.preheader.split.split ], [ %554, %next-block.i.i621 ]
%541 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i612, i64 1
%542 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i613, i64 1
%543 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i614, i64 1
%xl.sroa.0.0..sroa_idx.i.i615 = getelementptr inbounds %"ll::limb::Limb"* %542, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i616 = load i64* %xl.sroa.0.0..sroa_idx.i.i615, align 8
%yl.sroa.0.0..sroa_idx.i.i617 = getelementptr inbounds %"ll::limb::Limb"* %543, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i618 = load i64* %yl.sroa.0.0..sroa_idx.i.i617, align 8
%544 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i616, i64 %yl.sroa.0.0.copyload.i.i618) #20
%545 = extractvalue { i64, i1 } %544, 0
%546 = extractvalue { i64, i1 } %544, 1
%547 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %545, i64 %.52.i.i611) #20
%548 = extractvalue { i64, i1 } %547, 0
%549 = extractvalue { i64, i1 } %547, 1
%550 = or i1 %546, %549
%..i.i619 = zext i1 %550 to i64
%rl.sroa.0.0..sroa_idx16.i.i620 = getelementptr inbounds %"ll::limb::Limb"* %541, i64 0, i32 0
store i64 %548, i64* %rl.sroa.0.0..sroa_idx16.i.i620, align 8
%551 = add i32 %540, -1
%552 = getelementptr inbounds %"ll::limb::Limb"* %541, i64 1
%553 = getelementptr inbounds %"ll::limb::Limb"* %542, i64 1
%554 = getelementptr inbounds %"ll::limb::Limb"* %543, i64 1
%xl.sroa.0.0..sroa_idx.i.i615.1 = getelementptr inbounds %"ll::limb::Limb"* %553, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i616.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i615.1, align 8
%yl.sroa.0.0..sroa_idx.i.i617.1 = getelementptr inbounds %"ll::limb::Limb"* %554, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i618.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i617.1, align 8
%555 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i616.1, i64 %yl.sroa.0.0.copyload.i.i618.1) #20
%556 = extractvalue { i64, i1 } %555, 0
%557 = extractvalue { i64, i1 } %555, 1
%558 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %556, i64 %..i.i619) #20
%559 = extractvalue { i64, i1 } %558, 0
%560 = extractvalue { i64, i1 } %558, 1
%561 = or i1 %557, %560
%..i.i619.1 = zext i1 %561 to i64
%rl.sroa.0.0..sroa_idx16.i.i620.1 = getelementptr inbounds %"ll::limb::Limb"* %552, i64 0, i32 0
store i64 %559, i64* %rl.sroa.0.0..sroa_idx16.i.i620.1, align 8
%562 = add i32 %551, -1
%563 = icmp eq i32 %562, 0
br i1 %563, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit.unr-lcssa, label %next-block.i.i621
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit.unr-lcssa: ; preds = %next-block.i.i621
%..i.i619.lcssa.ph = phi i64 [ %..i.i619.1, %next-block.i.i621 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit: ; preds = %next-block.i.i621.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit.unr-lcssa
%..i.i619.lcssa = phi i64 [ %..i.i619.lcssa.unr, %next-block.i.i621.preheader.split ], [ %..i.i619.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604
%..lcssa.i.i622 = phi i64 [ %.47.i.i609, %_ZN2ll6addsub3add20hfa4684de924f828bIhaE.exit604 ], [ %..i.i619.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623.loopexit ]
%564 = add nuw nsw i64 %..lcssa.i.i622, %sret_slot.sroa.0.0.i590
%565 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %11
%566 = getelementptr inbounds %"ll::limb::Limb"* %565, i64 0, i32 0
store i64 %564, i64* %566, align 8
%567 = icmp eq i64 %sret_slot.sroa.0.0.i590, 0
br i1 %567, label %while_cond.i626.preheader, label %else-block10
while_cond.i626.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623
br label %while_cond.i626
while_cond.i626: ; preds = %while_cond.i626.preheader, %while_body.i627
%i.0.in.i624 = phi i32 [ %i.0.i625, %while_body.i627 ], [ %7, %while_cond.i626.preheader ]
%i.0.i625 = add i32 %i.0.in.i624, -1
%568 = icmp sgt i32 %i.0.i625, -1
br i1 %568, label %while_body.i627, label %else-block10.loopexit
while_body.i627: ; preds = %while_cond.i626
%569 = sext i32 %i.0.i625 to i64
%570 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %569, i32 0
%571 = load i64* %570, align 8
%.sum1129 = add nsw i64 %569, %11
%572 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 %.sum1129, i32 0
%573 = load i64* %572, align 8
%574 = icmp eq i64 %571, %573
br i1 %574, label %while_cond.i626, label %then-block-13036-.i629
then-block-13036-.i629: ; preds = %while_body.i627
%.lcssa1243 = phi i64 [ %573, %while_body.i627 ]
%.lcssa1242 = phi i64 [ %571, %while_body.i627 ]
%575 = icmp ugt i64 %.lcssa1242, %.lcssa1243
br i1 %575, label %else-block10, label %then-block-3276-
then-block-3276-: ; preds = %then-block-13036-.i629
%xl.sroa.0.0.copyload44.i.i635 = load i64* %yl.sroa.0.0..sroa_idx45.i.i607, align 8
%yl.sroa.0.0.copyload46.i.i637 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%576 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i635, i64 %yl.sroa.0.0.copyload46.i.i637) #20
%577 = extractvalue { i64, i1 } %576, 0
%rl.sroa.0.0..sroa_idx1648.i.i639 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 0, i32 0
store i64 %577, i64* %rl.sroa.0.0..sroa_idx1648.i.i639, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652, label %next-block.i.i650.preheader
next-block.i.i650.preheader: ; preds = %then-block-3276-
%578 = extractvalue { i64, i1 } %576, 1
%.47.i.i638 = zext i1 %578 to i64
%579 = add i32 %7, -1
%580 = add i32 %7, -2
%xtraiter1304 = and i32 %579, 1
%lcmp.mod1305 = icmp ne i32 %xtraiter1304, 0
br i1 %lcmp.mod1305, label %next-block.i.i650.prol, label %next-block.i.i650.preheader.split
next-block.i.i650.prol: ; preds = %next-block.i.i650.preheader
%581 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 1
%582 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 1
%583 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i644.prol = getelementptr inbounds %"ll::limb::Limb"* %582, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i645.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i644.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i646.prol = getelementptr inbounds %"ll::limb::Limb"* %583, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i647.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i646.prol, align 8
%584 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i645.prol, i64 %yl.sroa.0.0.copyload.i.i647.prol) #20
%585 = extractvalue { i64, i1 } %584, 0
%586 = extractvalue { i64, i1 } %584, 1
%587 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %585, i64 %.47.i.i638) #20
%588 = extractvalue { i64, i1 } %587, 0
%589 = extractvalue { i64, i1 } %587, 1
%590 = or i1 %586, %589
%..i.i648.prol = zext i1 %590 to i64
%rl.sroa.0.0..sroa_idx16.i.i649.prol = getelementptr inbounds %"ll::limb::Limb"* %581, i64 0, i32 0
store i64 %588, i64* %rl.sroa.0.0..sroa_idx16.i.i649.prol, align 8
%591 = add i32 %137, -1
%592 = icmp eq i32 %591, 0
br label %next-block.i.i650.preheader.split
next-block.i.i650.preheader.split: ; preds = %next-block.i.i650.prol, %next-block.i.i650.preheader
%.unr1306 = phi i32 [ %137, %next-block.i.i650.preheader ], [ %591, %next-block.i.i650.prol ]
%.52.i.i640.unr = phi i64 [ %.47.i.i638, %next-block.i.i650.preheader ], [ %..i.i648.prol, %next-block.i.i650.prol ]
%wp.051.i.i641.unr = phi %"ll::limb::Limb"* [ %30, %next-block.i.i650.preheader ], [ %581, %next-block.i.i650.prol ]
%xp.050.i.i642.unr = phi %"ll::limb::Limb"* [ %15, %next-block.i.i650.preheader ], [ %582, %next-block.i.i650.prol ]
%yp.049.i.i643.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i650.preheader ], [ %583, %next-block.i.i650.prol ]
%593 = icmp ult i32 %580, 1
br i1 %593, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit, label %next-block.i.i650.preheader.split.split
next-block.i.i650.preheader.split.split: ; preds = %next-block.i.i650.preheader.split
br label %next-block.i.i650
next-block.i.i650: ; preds = %next-block.i.i650, %next-block.i.i650.preheader.split.split
%594 = phi i32 [ %.unr1306, %next-block.i.i650.preheader.split.split ], [ %616, %next-block.i.i650 ]
%.52.i.i640 = phi i64 [ %.52.i.i640.unr, %next-block.i.i650.preheader.split.split ], [ %..i.i648.1, %next-block.i.i650 ]
%wp.051.i.i641 = phi %"ll::limb::Limb"* [ %wp.051.i.i641.unr, %next-block.i.i650.preheader.split.split ], [ %606, %next-block.i.i650 ]
%xp.050.i.i642 = phi %"ll::limb::Limb"* [ %xp.050.i.i642.unr, %next-block.i.i650.preheader.split.split ], [ %607, %next-block.i.i650 ]
%yp.049.i.i643 = phi %"ll::limb::Limb"* [ %yp.049.i.i643.unr, %next-block.i.i650.preheader.split.split ], [ %608, %next-block.i.i650 ]
%595 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i641, i64 1
%596 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i642, i64 1
%597 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i643, i64 1
%xl.sroa.0.0..sroa_idx.i.i644 = getelementptr inbounds %"ll::limb::Limb"* %596, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i645 = load i64* %xl.sroa.0.0..sroa_idx.i.i644, align 8
%yl.sroa.0.0..sroa_idx.i.i646 = getelementptr inbounds %"ll::limb::Limb"* %597, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i647 = load i64* %yl.sroa.0.0..sroa_idx.i.i646, align 8
%598 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i645, i64 %yl.sroa.0.0.copyload.i.i647) #20
%599 = extractvalue { i64, i1 } %598, 0
%600 = extractvalue { i64, i1 } %598, 1
%601 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %599, i64 %.52.i.i640) #20
%602 = extractvalue { i64, i1 } %601, 0
%603 = extractvalue { i64, i1 } %601, 1
%604 = or i1 %600, %603
%..i.i648 = zext i1 %604 to i64
%rl.sroa.0.0..sroa_idx16.i.i649 = getelementptr inbounds %"ll::limb::Limb"* %595, i64 0, i32 0
store i64 %602, i64* %rl.sroa.0.0..sroa_idx16.i.i649, align 8
%605 = add i32 %594, -1
%606 = getelementptr inbounds %"ll::limb::Limb"* %595, i64 1
%607 = getelementptr inbounds %"ll::limb::Limb"* %596, i64 1
%608 = getelementptr inbounds %"ll::limb::Limb"* %597, i64 1
%xl.sroa.0.0..sroa_idx.i.i644.1 = getelementptr inbounds %"ll::limb::Limb"* %607, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i645.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i644.1, align 8
%yl.sroa.0.0..sroa_idx.i.i646.1 = getelementptr inbounds %"ll::limb::Limb"* %608, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i647.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i646.1, align 8
%609 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i645.1, i64 %yl.sroa.0.0.copyload.i.i647.1) #20
%610 = extractvalue { i64, i1 } %609, 0
%611 = extractvalue { i64, i1 } %609, 1
%612 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %610, i64 %..i.i648) #20
%613 = extractvalue { i64, i1 } %612, 0
%614 = extractvalue { i64, i1 } %612, 1
%615 = or i1 %611, %614
%..i.i648.1 = zext i1 %615 to i64
%rl.sroa.0.0..sroa_idx16.i.i649.1 = getelementptr inbounds %"ll::limb::Limb"* %606, i64 0, i32 0
store i64 %613, i64* %rl.sroa.0.0..sroa_idx16.i.i649.1, align 8
%616 = add i32 %605, -1
%617 = icmp eq i32 %616, 0
br i1 %617, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit.unr-lcssa, label %next-block.i.i650
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit.unr-lcssa: ; preds = %next-block.i.i650
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit: ; preds = %next-block.i.i650.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652.loopexit, %then-block-3276-
%.sum1130 = add nsw i64 %29, %11
%618 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1130, i32 0
store i64 0, i64* %618, align 8
%619 = xor i8 %wm1_neg.0, 1
br label %join11
else-block10.loopexit: ; preds = %while_cond.i626
br label %else-block10
else-block10: ; preds = %else-block10.loopexit, %then-block-13036-.i629, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit623
%xl.sroa.0.0.copyload44.i.i654 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%yl.sroa.0.0.copyload46.i.i656 = load i64* %yl.sroa.0.0..sroa_idx45.i.i607, align 8
%620 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i654, i64 %yl.sroa.0.0.copyload46.i.i656) #20
%621 = extractvalue { i64, i1 } %620, 0
%622 = extractvalue { i64, i1 } %620, 1
%.47.i.i657 = zext i1 %622 to i64
%rl.sroa.0.0..sroa_idx1648.i.i658 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 0, i32 0
store i64 %621, i64* %rl.sroa.0.0..sroa_idx1648.i.i658, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671, label %next-block.i.i669.preheader
next-block.i.i669.preheader: ; preds = %else-block10
%623 = add i32 %7, -1
%624 = add i32 %7, -2
%xtraiter1301 = and i32 %623, 1
%lcmp.mod1302 = icmp ne i32 %xtraiter1301, 0
br i1 %lcmp.mod1302, label %next-block.i.i669.prol, label %next-block.i.i669.preheader.split
next-block.i.i669.prol: ; preds = %next-block.i.i669.preheader
%625 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 1
%626 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%627 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 1
%xl.sroa.0.0..sroa_idx.i.i663.prol = getelementptr inbounds %"ll::limb::Limb"* %626, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i664.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i663.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i665.prol = getelementptr inbounds %"ll::limb::Limb"* %627, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i666.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i665.prol, align 8
%628 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i664.prol, i64 %yl.sroa.0.0.copyload.i.i666.prol) #20
%629 = extractvalue { i64, i1 } %628, 0
%630 = extractvalue { i64, i1 } %628, 1
%631 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %629, i64 %.47.i.i657) #20
%632 = extractvalue { i64, i1 } %631, 0
%633 = extractvalue { i64, i1 } %631, 1
%634 = or i1 %630, %633
%..i.i667.prol = zext i1 %634 to i64
%rl.sroa.0.0..sroa_idx16.i.i668.prol = getelementptr inbounds %"ll::limb::Limb"* %625, i64 0, i32 0
store i64 %632, i64* %rl.sroa.0.0..sroa_idx16.i.i668.prol, align 8
%635 = add i32 %137, -1
%636 = icmp eq i32 %635, 0
br label %next-block.i.i669.preheader.split
next-block.i.i669.preheader.split: ; preds = %next-block.i.i669.prol, %next-block.i.i669.preheader
%..i.i667.lcssa.unr = phi i64 [ 0, %next-block.i.i669.preheader ], [ %..i.i667.prol, %next-block.i.i669.prol ]
%.unr1303 = phi i32 [ %137, %next-block.i.i669.preheader ], [ %635, %next-block.i.i669.prol ]
%.52.i.i659.unr = phi i64 [ %.47.i.i657, %next-block.i.i669.preheader ], [ %..i.i667.prol, %next-block.i.i669.prol ]
%wp.051.i.i660.unr = phi %"ll::limb::Limb"* [ %30, %next-block.i.i669.preheader ], [ %625, %next-block.i.i669.prol ]
%xp.050.i.i661.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i669.preheader ], [ %626, %next-block.i.i669.prol ]
%yp.049.i.i662.unr = phi %"ll::limb::Limb"* [ %15, %next-block.i.i669.preheader ], [ %627, %next-block.i.i669.prol ]
%637 = icmp ult i32 %624, 1
br i1 %637, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit, label %next-block.i.i669.preheader.split.split
next-block.i.i669.preheader.split.split: ; preds = %next-block.i.i669.preheader.split
br label %next-block.i.i669
next-block.i.i669: ; preds = %next-block.i.i669, %next-block.i.i669.preheader.split.split
%638 = phi i32 [ %.unr1303, %next-block.i.i669.preheader.split.split ], [ %660, %next-block.i.i669 ]
%.52.i.i659 = phi i64 [ %.52.i.i659.unr, %next-block.i.i669.preheader.split.split ], [ %..i.i667.1, %next-block.i.i669 ]
%wp.051.i.i660 = phi %"ll::limb::Limb"* [ %wp.051.i.i660.unr, %next-block.i.i669.preheader.split.split ], [ %650, %next-block.i.i669 ]
%xp.050.i.i661 = phi %"ll::limb::Limb"* [ %xp.050.i.i661.unr, %next-block.i.i669.preheader.split.split ], [ %651, %next-block.i.i669 ]
%yp.049.i.i662 = phi %"ll::limb::Limb"* [ %yp.049.i.i662.unr, %next-block.i.i669.preheader.split.split ], [ %652, %next-block.i.i669 ]
%639 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i660, i64 1
%640 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i661, i64 1
%641 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i662, i64 1
%xl.sroa.0.0..sroa_idx.i.i663 = getelementptr inbounds %"ll::limb::Limb"* %640, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i664 = load i64* %xl.sroa.0.0..sroa_idx.i.i663, align 8
%yl.sroa.0.0..sroa_idx.i.i665 = getelementptr inbounds %"ll::limb::Limb"* %641, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i666 = load i64* %yl.sroa.0.0..sroa_idx.i.i665, align 8
%642 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i664, i64 %yl.sroa.0.0.copyload.i.i666) #20
%643 = extractvalue { i64, i1 } %642, 0
%644 = extractvalue { i64, i1 } %642, 1
%645 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %643, i64 %.52.i.i659) #20
%646 = extractvalue { i64, i1 } %645, 0
%647 = extractvalue { i64, i1 } %645, 1
%648 = or i1 %644, %647
%..i.i667 = zext i1 %648 to i64
%rl.sroa.0.0..sroa_idx16.i.i668 = getelementptr inbounds %"ll::limb::Limb"* %639, i64 0, i32 0
store i64 %646, i64* %rl.sroa.0.0..sroa_idx16.i.i668, align 8
%649 = add i32 %638, -1
%650 = getelementptr inbounds %"ll::limb::Limb"* %639, i64 1
%651 = getelementptr inbounds %"ll::limb::Limb"* %640, i64 1
%652 = getelementptr inbounds %"ll::limb::Limb"* %641, i64 1
%xl.sroa.0.0..sroa_idx.i.i663.1 = getelementptr inbounds %"ll::limb::Limb"* %651, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i664.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i663.1, align 8
%yl.sroa.0.0..sroa_idx.i.i665.1 = getelementptr inbounds %"ll::limb::Limb"* %652, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i666.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i665.1, align 8
%653 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i664.1, i64 %yl.sroa.0.0.copyload.i.i666.1) #20
%654 = extractvalue { i64, i1 } %653, 0
%655 = extractvalue { i64, i1 } %653, 1
%656 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %654, i64 %..i.i667) #20
%657 = extractvalue { i64, i1 } %656, 0
%658 = extractvalue { i64, i1 } %656, 1
%659 = or i1 %655, %658
%..i.i667.1 = zext i1 %659 to i64
%rl.sroa.0.0..sroa_idx16.i.i668.1 = getelementptr inbounds %"ll::limb::Limb"* %650, i64 0, i32 0
store i64 %657, i64* %rl.sroa.0.0..sroa_idx16.i.i668.1, align 8
%660 = add i32 %649, -1
%661 = icmp eq i32 %660, 0
br i1 %661, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit.unr-lcssa, label %next-block.i.i669
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit.unr-lcssa: ; preds = %next-block.i.i669
%..i.i667.lcssa.ph = phi i64 [ %..i.i667.1, %next-block.i.i669 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit: ; preds = %next-block.i.i669.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit.unr-lcssa
%..i.i667.lcssa = phi i64 [ %..i.i667.lcssa.unr, %next-block.i.i669.preheader.split ], [ %..i.i667.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit, %else-block10
%..lcssa.i.i670 = phi i64 [ %.47.i.i657, %else-block10 ], [ %..i.i667.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671.loopexit ]
%662 = sub nsw i64 %sret_slot.sroa.0.0.i590, %..lcssa.i.i670
%.sum1117 = add nsw i64 %29, %11
%663 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1117, i32 0
store i64 %662, i64* %663, align 8
br label %join11
join11: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652
%wm1_neg.1 = phi i8 [ %619, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit652 ], [ %wm1_neg.0, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit671 ]
%xl.sroa.0.0.copyload44.i.i673 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i571, align 8
%yl.sroa.0.0.copyload46.i.i675 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i610, align 8
%664 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i673, i64 %yl.sroa.0.0.copyload46.i.i675) #20
%665 = extractvalue { i64, i1 } %664, 0
%666 = extractvalue { i64, i1 } %664, 1
%.47.i.i676 = zext i1 %666 to i64
%rl.sroa.0.0..sroa_idx1648.i.i677 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
store i64 %665, i64* %rl.sroa.0.0..sroa_idx1648.i.i677, align 8
br i1 %36, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690, label %next-block.i.i688.preheader
next-block.i.i688.preheader: ; preds = %join11
%667 = add i32 %2, -1
%668 = mul i32 %7, 2
%669 = sub i32 %667, %668
%670 = add i32 %2, -2
%671 = sub i32 %670, %668
%xtraiter1298 = and i32 %669, 1
%lcmp.mod1299 = icmp ne i32 %xtraiter1298, 0
br i1 %lcmp.mod1299, label %next-block.i.i688.prol, label %next-block.i.i688.preheader.split
next-block.i.i688.prol: ; preds = %next-block.i.i688.preheader
%672 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 1
%673 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 1
%674 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%xl.sroa.0.0..sroa_idx.i.i682.prol = getelementptr inbounds %"ll::limb::Limb"* %673, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i683.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i682.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i684.prol = getelementptr inbounds %"ll::limb::Limb"* %674, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i685.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i684.prol, align 8
%675 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i683.prol, i64 %yl.sroa.0.0.copyload.i.i685.prol) #20
%676 = extractvalue { i64, i1 } %675, 0
%677 = extractvalue { i64, i1 } %675, 1
%678 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %676, i64 %.47.i.i676) #20
%679 = extractvalue { i64, i1 } %678, 0
%680 = extractvalue { i64, i1 } %678, 1
%681 = or i1 %677, %680
%..i.i686.prol = zext i1 %681 to i64
%rl.sroa.0.0..sroa_idx16.i.i687.prol = getelementptr inbounds %"ll::limb::Limb"* %672, i64 0, i32 0
store i64 %679, i64* %rl.sroa.0.0..sroa_idx16.i.i687.prol, align 8
%682 = add i32 %35, -1
%683 = icmp eq i32 %682, 0
br label %next-block.i.i688.preheader.split
next-block.i.i688.preheader.split: ; preds = %next-block.i.i688.prol, %next-block.i.i688.preheader
%..i.i686.lcssa.unr = phi i64 [ 0, %next-block.i.i688.preheader ], [ %..i.i686.prol, %next-block.i.i688.prol ]
%.unr1300 = phi i32 [ %35, %next-block.i.i688.preheader ], [ %682, %next-block.i.i688.prol ]
%.52.i.i678.unr = phi i64 [ %.47.i.i676, %next-block.i.i688.preheader ], [ %..i.i686.prol, %next-block.i.i688.prol ]
%wp.051.i.i679.unr = phi %"ll::limb::Limb"* [ %31, %next-block.i.i688.preheader ], [ %672, %next-block.i.i688.prol ]
%xp.050.i.i680.unr = phi %"ll::limb::Limb"* [ %16, %next-block.i.i688.preheader ], [ %673, %next-block.i.i688.prol ]
%yp.049.i.i681.unr = phi %"ll::limb::Limb"* [ %0, %next-block.i.i688.preheader ], [ %674, %next-block.i.i688.prol ]
%684 = icmp ult i32 %671, 1
br i1 %684, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit, label %next-block.i.i688.preheader.split.split
next-block.i.i688.preheader.split.split: ; preds = %next-block.i.i688.preheader.split
br label %next-block.i.i688
next-block.i.i688: ; preds = %next-block.i.i688, %next-block.i.i688.preheader.split.split
%685 = phi i32 [ %.unr1300, %next-block.i.i688.preheader.split.split ], [ %707, %next-block.i.i688 ]
%.52.i.i678 = phi i64 [ %.52.i.i678.unr, %next-block.i.i688.preheader.split.split ], [ %..i.i686.1, %next-block.i.i688 ]
%wp.051.i.i679 = phi %"ll::limb::Limb"* [ %wp.051.i.i679.unr, %next-block.i.i688.preheader.split.split ], [ %697, %next-block.i.i688 ]
%xp.050.i.i680 = phi %"ll::limb::Limb"* [ %xp.050.i.i680.unr, %next-block.i.i688.preheader.split.split ], [ %698, %next-block.i.i688 ]
%yp.049.i.i681 = phi %"ll::limb::Limb"* [ %yp.049.i.i681.unr, %next-block.i.i688.preheader.split.split ], [ %699, %next-block.i.i688 ]
%686 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i679, i64 1
%687 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i680, i64 1
%688 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i681, i64 1
%xl.sroa.0.0..sroa_idx.i.i682 = getelementptr inbounds %"ll::limb::Limb"* %687, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i683 = load i64* %xl.sroa.0.0..sroa_idx.i.i682, align 8
%yl.sroa.0.0..sroa_idx.i.i684 = getelementptr inbounds %"ll::limb::Limb"* %688, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i685 = load i64* %yl.sroa.0.0..sroa_idx.i.i684, align 8
%689 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i683, i64 %yl.sroa.0.0.copyload.i.i685) #20
%690 = extractvalue { i64, i1 } %689, 0
%691 = extractvalue { i64, i1 } %689, 1
%692 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %690, i64 %.52.i.i678) #20
%693 = extractvalue { i64, i1 } %692, 0
%694 = extractvalue { i64, i1 } %692, 1
%695 = or i1 %691, %694
%..i.i686 = zext i1 %695 to i64
%rl.sroa.0.0..sroa_idx16.i.i687 = getelementptr inbounds %"ll::limb::Limb"* %686, i64 0, i32 0
store i64 %693, i64* %rl.sroa.0.0..sroa_idx16.i.i687, align 8
%696 = add i32 %685, -1
%697 = getelementptr inbounds %"ll::limb::Limb"* %686, i64 1
%698 = getelementptr inbounds %"ll::limb::Limb"* %687, i64 1
%699 = getelementptr inbounds %"ll::limb::Limb"* %688, i64 1
%xl.sroa.0.0..sroa_idx.i.i682.1 = getelementptr inbounds %"ll::limb::Limb"* %698, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i683.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i682.1, align 8
%yl.sroa.0.0..sroa_idx.i.i684.1 = getelementptr inbounds %"ll::limb::Limb"* %699, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i685.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i684.1, align 8
%700 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i683.1, i64 %yl.sroa.0.0.copyload.i.i685.1) #20
%701 = extractvalue { i64, i1 } %700, 0
%702 = extractvalue { i64, i1 } %700, 1
%703 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %701, i64 %..i.i686) #20
%704 = extractvalue { i64, i1 } %703, 0
%705 = extractvalue { i64, i1 } %703, 1
%706 = or i1 %702, %705
%..i.i686.1 = zext i1 %706 to i64
%rl.sroa.0.0..sroa_idx16.i.i687.1 = getelementptr inbounds %"ll::limb::Limb"* %697, i64 0, i32 0
store i64 %704, i64* %rl.sroa.0.0..sroa_idx16.i.i687.1, align 8
%707 = add i32 %696, -1
%708 = icmp eq i32 %707, 0
br i1 %708, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit.unr-lcssa, label %next-block.i.i688
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit.unr-lcssa: ; preds = %next-block.i.i688
%..i.i686.lcssa.ph = phi i64 [ %..i.i686.1, %next-block.i.i688 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit: ; preds = %next-block.i.i688.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit.unr-lcssa
%..i.i686.lcssa = phi i64 [ %..i.i686.lcssa.unr, %next-block.i.i688.preheader.split ], [ %..i.i686.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit, %join11
%..lcssa.i.i689 = phi i64 [ %.47.i.i676, %join11 ], [ %..i.i686.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690.loopexit ]
br i1 %321, label %join13, label %next-block17
join13: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690
%709 = icmp eq i64 %..lcssa.i.i689, 0
br i1 %709, label %next-block17, label %then-block-3340-
then-block-3340-: ; preds = %join13
%710 = sext i32 %9 to i64
%.sum1126 = add nsw i64 %22, %710
%711 = sub i32 %7, %9
%712 = icmp sgt i32 %711, 0
br i1 %712, label %then-block-839-.i692, label %next-block17
then-block-839-.i692: ; preds = %then-block-3340-
%713 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %710, i32 0
%714 = load i64* %713, align 8
%715 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %714, i64 %..lcssa.i.i689) #20
%716 = extractvalue { i64, i1 } %715, 0
%717 = extractvalue { i64, i1 } %715, 1
%v.sroa.0.0..sroa_idx15.i691 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1126, i32 0
store i64 %716, i64* %v.sroa.0.0..sroa_idx15.i691, align 8
br i1 %717, label %while_body.lr.ph.i693, label %next-block17
while_body.lr.ph.i693: ; preds = %then-block-839-.i692
%718 = sext i32 %711 to i64
br label %while_body.i695
while_body.i695: ; preds = %next-block.i699, %while_body.lr.ph.i693
%indvars.iv.i694 = phi i64 [ %indvars.iv.next.i698, %next-block.i699 ], [ 1, %while_body.lr.ph.i693 ]
%719 = icmp slt i64 %indvars.iv.i694, %718
br i1 %719, label %next-block.i699, label %next-block17.loopexit
next-block.i699: ; preds = %while_body.i695
%.sum1127 = add i64 %indvars.iv.i694, %710
%720 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1127, i32 0
%721 = load i64* %720, align 8
%722 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %721, i64 1) #20
%723 = extractvalue { i64, i1 } %722, 0
%724 = extractvalue { i64, i1 } %722, 1
%.sum1128 = add i64 %indvars.iv.i694, %.sum1126
%v1.sroa.0.0..sroa_idx4.i697 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1128, i32 0
store i64 %723, i64* %v1.sroa.0.0..sroa_idx4.i697, align 8
%indvars.iv.next.i698 = add nuw nsw i64 %indvars.iv.i694, 1
br i1 %724, label %while_body.i695, label %next-block17.loopexit
next-block17.loopexit: ; preds = %while_body.i695, %next-block.i699
%.ph = phi i64 [ 0, %next-block.i699 ], [ 1, %while_body.i695 ]
br label %next-block17
next-block17: ; preds = %next-block17.loopexit, %join13, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690, %then-block-839-.i692, %then-block-3340-
%725 = phi i64 [ 0, %join13 ], [ 0, %then-block-3340- ], [ 0, %then-block-839-.i692 ], [ %..lcssa.i.i689, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit690 ], [ %.ph, %next-block17.loopexit ]
%726 = load i64* %566, align 8
%727 = add i64 %726, %725
%728 = shl i64 %727, 1
%.sum1118 = add nsw i64 %22, %342
%729 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1118
%l.sroa.0.0..sroa_idx.i701 = getelementptr inbounds %"ll::limb::Limb"* %729, i64 0, i32 0
%l.sroa.0.0.copyload.i702 = load i64* %l.sroa.0.0..sroa_idx.i701, align 8
%730 = lshr i64 %l.sroa.0.0.copyload.i702, 63
%high_limb.sroa.0.049.i703 = shl i64 %l.sroa.0.0.copyload.i702, 1
br i1 %138, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715, label %while_body.lr.ph.i704
while_body.lr.ph.i704: ; preds = %next-block17
%731 = add i32 %7, -2
%732 = zext i32 %731 to i64
%733 = add i32 %7, -1
%xtraiter1295 = and i32 %733, 3
%lcmp.mod1296 = icmp ne i32 %xtraiter1295, 0
br i1 %lcmp.mod1296, label %while_body.i714.prol, label %while_body.lr.ph.i704.split
while_body.i714.prol: ; preds = %while_body.i714.prol, %while_body.lr.ph.i704
%high_limb.sroa.0.053.i707.prol = phi i64 [ %high_limb.sroa.0.049.i703, %while_body.lr.ph.i704 ], [ %high_limb.sroa.0.0.i713.prol, %while_body.i714.prol ]
%rp.052.i708.prol = phi %"ll::limb::Limb"* [ %729, %while_body.lr.ph.i704 ], [ %734, %while_body.i714.prol ]
%xs.050.i710.prol = phi i32 [ %137, %while_body.lr.ph.i704 ], [ %738, %while_body.i714.prol ]
%prol.iter1297 = phi i32 [ %xtraiter1295, %while_body.lr.ph.i704 ], [ %prol.iter1297.sub, %while_body.i714.prol ]
%734 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i708.prol, i64 -1
%low.sroa.0.0..sroa_idx.i711.prol = getelementptr inbounds %"ll::limb::Limb"* %734, i64 0, i32 0
%low.sroa.0.0.copyload.i712.prol = load i64* %low.sroa.0.0..sroa_idx.i711.prol, align 8
%735 = lshr i64 %low.sroa.0.0.copyload.i712.prol, 63
%736 = or i64 %735, %high_limb.sroa.0.053.i707.prol
%737 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i708.prol, i64 0, i32 0
store i64 %736, i64* %737, align 8
%738 = add i32 %xs.050.i710.prol, -1
%high_limb.sroa.0.0.i713.prol = shl i64 %low.sroa.0.0.copyload.i712.prol, 1
%739 = icmp eq i32 %738, 0
%prol.iter1297.sub = sub i32 %prol.iter1297, 1
%prol.iter1297.cmp = icmp ne i32 %prol.iter1297.sub, 0
br i1 %prol.iter1297.cmp, label %while_body.i714.prol, label %while_body.lr.ph.i704.split, !llvm.loop !124
while_body.lr.ph.i704.split: ; preds = %while_body.i714.prol, %while_body.lr.ph.i704
%high_limb.sroa.0.0.i713.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i704 ], [ %high_limb.sroa.0.0.i713.prol, %while_body.i714.prol ]
%high_limb.sroa.0.053.i707.unr = phi i64 [ %high_limb.sroa.0.049.i703, %while_body.lr.ph.i704 ], [ %high_limb.sroa.0.0.i713.prol, %while_body.i714.prol ]
%rp.052.i708.unr = phi %"ll::limb::Limb"* [ %729, %while_body.lr.ph.i704 ], [ %734, %while_body.i714.prol ]
%xs.050.i710.unr = phi i32 [ %137, %while_body.lr.ph.i704 ], [ %738, %while_body.i714.prol ]
%740 = icmp ult i32 %731, 3
br i1 %740, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit, label %while_body.lr.ph.i704.split.split
while_body.lr.ph.i704.split.split: ; preds = %while_body.lr.ph.i704.split
br label %while_body.i714
while_body.i714: ; preds = %while_body.i714, %while_body.lr.ph.i704.split.split
%high_limb.sroa.0.053.i707 = phi i64 [ %high_limb.sroa.0.053.i707.unr, %while_body.lr.ph.i704.split.split ], [ %high_limb.sroa.0.0.i713.3, %while_body.i714 ]
%rp.052.i708 = phi %"ll::limb::Limb"* [ %rp.052.i708.unr, %while_body.lr.ph.i704.split.split ], [ %756, %while_body.i714 ]
%xs.050.i710 = phi i32 [ %xs.050.i710.unr, %while_body.lr.ph.i704.split.split ], [ %760, %while_body.i714 ]
%741 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i708, i64 -1
%low.sroa.0.0..sroa_idx.i711 = getelementptr inbounds %"ll::limb::Limb"* %741, i64 0, i32 0
%low.sroa.0.0.copyload.i712 = load i64* %low.sroa.0.0..sroa_idx.i711, align 8
%742 = lshr i64 %low.sroa.0.0.copyload.i712, 63
%743 = or i64 %742, %high_limb.sroa.0.053.i707
%744 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i708, i64 0, i32 0
store i64 %743, i64* %744, align 8
%745 = add i32 %xs.050.i710, -1
%high_limb.sroa.0.0.i713 = shl i64 %low.sroa.0.0.copyload.i712, 1
%746 = getelementptr inbounds %"ll::limb::Limb"* %741, i64 -1
%low.sroa.0.0..sroa_idx.i711.1 = getelementptr inbounds %"ll::limb::Limb"* %746, i64 0, i32 0
%low.sroa.0.0.copyload.i712.1 = load i64* %low.sroa.0.0..sroa_idx.i711.1, align 8
%747 = lshr i64 %low.sroa.0.0.copyload.i712.1, 63
%748 = or i64 %747, %high_limb.sroa.0.0.i713
%749 = getelementptr inbounds %"ll::limb::Limb"* %741, i64 0, i32 0
store i64 %748, i64* %749, align 8
%750 = add i32 %745, -1
%high_limb.sroa.0.0.i713.1 = shl i64 %low.sroa.0.0.copyload.i712.1, 1
%751 = getelementptr inbounds %"ll::limb::Limb"* %746, i64 -1
%low.sroa.0.0..sroa_idx.i711.2 = getelementptr inbounds %"ll::limb::Limb"* %751, i64 0, i32 0
%low.sroa.0.0.copyload.i712.2 = load i64* %low.sroa.0.0..sroa_idx.i711.2, align 8
%752 = lshr i64 %low.sroa.0.0.copyload.i712.2, 63
%753 = or i64 %752, %high_limb.sroa.0.0.i713.1
%754 = getelementptr inbounds %"ll::limb::Limb"* %746, i64 0, i32 0
store i64 %753, i64* %754, align 8
%755 = add i32 %750, -1
%high_limb.sroa.0.0.i713.2 = shl i64 %low.sroa.0.0.copyload.i712.2, 1
%756 = getelementptr inbounds %"ll::limb::Limb"* %751, i64 -1
%low.sroa.0.0..sroa_idx.i711.3 = getelementptr inbounds %"ll::limb::Limb"* %756, i64 0, i32 0
%low.sroa.0.0.copyload.i712.3 = load i64* %low.sroa.0.0..sroa_idx.i711.3, align 8
%757 = lshr i64 %low.sroa.0.0.copyload.i712.3, 63
%758 = or i64 %757, %high_limb.sroa.0.0.i713.2
%759 = getelementptr inbounds %"ll::limb::Limb"* %751, i64 0, i32 0
store i64 %758, i64* %759, align 8
%760 = add i32 %755, -1
%high_limb.sroa.0.0.i713.3 = shl i64 %low.sroa.0.0.copyload.i712.3, 1
%761 = icmp eq i32 %760, 0
br i1 %761, label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit.unr-lcssa, label %while_body.i714
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit.unr-lcssa: ; preds = %while_body.i714
%high_limb.sroa.0.0.i713.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i713.3, %while_body.i714 ]
br label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit: ; preds = %while_body.lr.ph.i704.split, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit.unr-lcssa
%high_limb.sroa.0.0.i713.lcssa = phi i64 [ %high_limb.sroa.0.0.i713.lcssa.unr, %while_body.lr.ph.i704.split ], [ %high_limb.sroa.0.0.i713.lcssa.ph, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit.unr-lcssa ]
%762 = add nsw i64 %342, -1
%763 = sub nsw i64 %762, %732
br label %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715
_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715: ; preds = %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit, %next-block17
%high_limb.sroa.0.0.lcssa.i705 = phi i64 [ %high_limb.sroa.0.049.i703, %next-block17 ], [ %high_limb.sroa.0.0.i713.lcssa, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit ]
%764 = phi i64 [ %342, %next-block17 ], [ %763, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715.loopexit ]
%.sum1119 = add nsw i64 %764, %22
%high_limb.sroa.0.0..sroa_idx.i706 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1119, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i705, i64* %high_limb.sroa.0.0..sroa_idx.i706, align 8
%765 = or i64 %730, %728
%xl.sroa.0.0.copyload44.i.i717 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i677, align 8
%yl.sroa.0.0.copyload46.i.i719 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i569, align 8
%766 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i717, i64 %yl.sroa.0.0.copyload46.i.i719) #20
%767 = extractvalue { i64, i1 } %766, 0
%768 = extractvalue { i64, i1 } %766, 1
%.47.i.i720 = zext i1 %768 to i64
store i64 %767, i64* %rl.sroa.0.0..sroa_idx1648.i.i677, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734, label %next-block.i.i732.preheader
next-block.i.i732.preheader: ; preds = %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715
%769 = add i32 %7, -1
%770 = add i32 %7, -2
%xtraiter1292 = and i32 %769, 1
%lcmp.mod1293 = icmp ne i32 %xtraiter1292, 0
br i1 %lcmp.mod1293, label %next-block.i.i732.prol, label %next-block.i.i732.preheader.split
next-block.i.i732.prol: ; preds = %next-block.i.i732.preheader
%771 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 1
%772 = getelementptr inbounds %"ll::limb::Limb"* %3, i64 1
%xl.sroa.0.0..sroa_idx.i.i726.prol = getelementptr inbounds %"ll::limb::Limb"* %771, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i727.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i726.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i728.prol = getelementptr inbounds %"ll::limb::Limb"* %772, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i729.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i728.prol, align 8
%773 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i727.prol, i64 %yl.sroa.0.0.copyload.i.i729.prol) #20
%774 = extractvalue { i64, i1 } %773, 0
%775 = extractvalue { i64, i1 } %773, 1
%776 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %774, i64 %.47.i.i720) #20
%777 = extractvalue { i64, i1 } %776, 0
%778 = extractvalue { i64, i1 } %776, 1
%779 = or i1 %775, %778
%..i.i730.prol = zext i1 %779 to i64
store i64 %777, i64* %xl.sroa.0.0..sroa_idx.i.i726.prol, align 8
%780 = add i32 %137, -1
%781 = icmp eq i32 %780, 0
br label %next-block.i.i732.preheader.split
next-block.i.i732.preheader.split: ; preds = %next-block.i.i732.prol, %next-block.i.i732.preheader
%..i.i730.lcssa.unr = phi i64 [ 0, %next-block.i.i732.preheader ], [ %..i.i730.prol, %next-block.i.i732.prol ]
%.unr1294 = phi i32 [ %137, %next-block.i.i732.preheader ], [ %780, %next-block.i.i732.prol ]
%.52.i.i722.unr = phi i64 [ %.47.i.i720, %next-block.i.i732.preheader ], [ %..i.i730.prol, %next-block.i.i732.prol ]
%wp.051.i.i723.unr = phi %"ll::limb::Limb"* [ %31, %next-block.i.i732.preheader ], [ %771, %next-block.i.i732.prol ]
%yp.049.i.i725.unr = phi %"ll::limb::Limb"* [ %3, %next-block.i.i732.preheader ], [ %772, %next-block.i.i732.prol ]
%782 = icmp ult i32 %770, 1
br i1 %782, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit, label %next-block.i.i732.preheader.split.split
next-block.i.i732.preheader.split.split: ; preds = %next-block.i.i732.preheader.split
br label %next-block.i.i732
next-block.i.i732: ; preds = %next-block.i.i732, %next-block.i.i732.preheader.split.split
%783 = phi i32 [ %.unr1294, %next-block.i.i732.preheader.split.split ], [ %803, %next-block.i.i732 ]
%.52.i.i722 = phi i64 [ %.52.i.i722.unr, %next-block.i.i732.preheader.split.split ], [ %..i.i730.1, %next-block.i.i732 ]
%wp.051.i.i723 = phi %"ll::limb::Limb"* [ %wp.051.i.i723.unr, %next-block.i.i732.preheader.split.split ], [ %794, %next-block.i.i732 ]
%yp.049.i.i725 = phi %"ll::limb::Limb"* [ %yp.049.i.i725.unr, %next-block.i.i732.preheader.split.split ], [ %795, %next-block.i.i732 ]
%784 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i723, i64 1
%785 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i725, i64 1
%xl.sroa.0.0..sroa_idx.i.i726 = getelementptr inbounds %"ll::limb::Limb"* %784, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i727 = load i64* %xl.sroa.0.0..sroa_idx.i.i726, align 8
%yl.sroa.0.0..sroa_idx.i.i728 = getelementptr inbounds %"ll::limb::Limb"* %785, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i729 = load i64* %yl.sroa.0.0..sroa_idx.i.i728, align 8
%786 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i727, i64 %yl.sroa.0.0.copyload.i.i729) #20
%787 = extractvalue { i64, i1 } %786, 0
%788 = extractvalue { i64, i1 } %786, 1
%789 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %787, i64 %.52.i.i722) #20
%790 = extractvalue { i64, i1 } %789, 0
%791 = extractvalue { i64, i1 } %789, 1
%792 = or i1 %788, %791
%..i.i730 = zext i1 %792 to i64
store i64 %790, i64* %xl.sroa.0.0..sroa_idx.i.i726, align 8
%793 = add i32 %783, -1
%794 = getelementptr inbounds %"ll::limb::Limb"* %784, i64 1
%795 = getelementptr inbounds %"ll::limb::Limb"* %785, i64 1
%xl.sroa.0.0..sroa_idx.i.i726.1 = getelementptr inbounds %"ll::limb::Limb"* %794, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i727.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i726.1, align 8
%yl.sroa.0.0..sroa_idx.i.i728.1 = getelementptr inbounds %"ll::limb::Limb"* %795, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i729.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i728.1, align 8
%796 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i727.1, i64 %yl.sroa.0.0.copyload.i.i729.1) #20
%797 = extractvalue { i64, i1 } %796, 0
%798 = extractvalue { i64, i1 } %796, 1
%799 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %797, i64 %..i.i730) #20
%800 = extractvalue { i64, i1 } %799, 0
%801 = extractvalue { i64, i1 } %799, 1
%802 = or i1 %798, %801
%..i.i730.1 = zext i1 %802 to i64
store i64 %800, i64* %xl.sroa.0.0..sroa_idx.i.i726.1, align 8
%803 = add i32 %793, -1
%804 = icmp eq i32 %803, 0
br i1 %804, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit.unr-lcssa, label %next-block.i.i732
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit.unr-lcssa: ; preds = %next-block.i.i732
%..i.i730.lcssa.ph = phi i64 [ %..i.i730.1, %next-block.i.i732 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit: ; preds = %next-block.i.i732.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit.unr-lcssa
%..i.i730.lcssa = phi i64 [ %..i.i730.lcssa.unr, %next-block.i.i732.preheader.split ], [ %..i.i730.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715
%..lcssa.i.i733 = phi i64 [ %.47.i.i720, %_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE.exit715 ], [ %..i.i730.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734.loopexit ]
%805 = sub i64 %765, %..lcssa.i.i733
%.sum1120 = add nsw i64 %22, %11
%806 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum1120, i32 0
store i64 %805, i64* %806, align 8
%807 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %13
%808 = sext i32 %17 to i64
%809 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %808
%810 = or i32 %8, 1
%811 = sext i32 %810 to i64
%812 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %811
%813 = mul i32 %7, 5
%814 = add i32 %813, 5
%815 = sext i32 %814 to i64
%816 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %815
%817 = icmp slt i32 %24, 21
br i1 %817, label %then-block-2005-.i1061, label %else-block.i1071
else-block.i1071: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734
%818 = icmp slt i32 %24, 101
%819 = shl i32 %24, 1
%820 = mul i32 %24, 3
%821 = icmp sge i32 %819, %820
br i1 %818, label %then-block-2018-.i1072, label %else-block2.i1075
then-block-2018-.i1072: ; preds = %else-block.i1071
br i1 %821, label %then-block-2029-.i1073, label %else-block1.i1074
then-block-2029-.i1073: ; preds = %then-block-2018-.i1072
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %23, i32 %24, %"ll::limb::Limb"* %30, i32 %24, %"ll::limb::Limb"* %816)
br label %then-block-2018-.i1063
else-block1.i1074: ; preds = %then-block-2018-.i1072
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %23, i32 %24, %"ll::limb::Limb"* %30, i32 %24, %"ll::limb::Limb"* %816)
br label %then-block-2018-.i1063
else-block2.i1075: ; preds = %else-block.i1071
br i1 %821, label %then-block-2062-.i1076, label %else-block3.i1077
then-block-2062-.i1076: ; preds = %else-block2.i1075
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %23, i32 %24, %"ll::limb::Limb"* %30, i32 %24, %"ll::limb::Limb"* %816)
br label %else-block2.i1066
else-block3.i1077: ; preds = %else-block2.i1075
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %23, i32 %24, %"ll::limb::Limb"* %30, i32 %24, %"ll::limb::Limb"* %816)
br label %else-block2.i1066
then-block-2005-.i1061: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit734
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %5, %"ll::limb::Limb"* %23, i32 %24, %"ll::limb::Limb"* %30, i32 %24)
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %812, %"ll::limb::Limb"* %26, i32 %24, %"ll::limb::Limb"* %31, i32 %24)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
then-block-2018-.i1063: ; preds = %then-block-2029-.i1073, %else-block1.i1074
%822 = icmp slt i32 %819, %820
br i1 %822, label %else-block1.i1065, label %then-block-2029-.i1064
then-block-2029-.i1064: ; preds = %then-block-2018-.i1063
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %812, %"ll::limb::Limb"* %26, i32 %24, %"ll::limb::Limb"* %31, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
else-block1.i1065: ; preds = %then-block-2018-.i1063
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %812, %"ll::limb::Limb"* %26, i32 %24, %"ll::limb::Limb"* %31, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
else-block2.i1066: ; preds = %else-block3.i1077, %then-block-2062-.i1076
%823 = icmp slt i32 %819, %820
br i1 %823, label %else-block3.i1068, label %then-block-2062-.i1067
then-block-2062-.i1067: ; preds = %else-block2.i1066
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %812, %"ll::limb::Limb"* %26, i32 %24, %"ll::limb::Limb"* %31, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
else-block3.i1068: ; preds = %else-block2.i1066
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %812, %"ll::limb::Limb"* %26, i32 %24, %"ll::limb::Limb"* %31, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069: ; preds = %then-block-2005-.i1061, %then-block-2029-.i1064, %else-block1.i1065, %then-block-2062-.i1067, %else-block3.i1068
%824 = icmp slt i32 %10, 21
br i1 %824, label %then-block-2005-.i1052, label %else-block.i1053
then-block-2005-.i1052: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %809, %"ll::limb::Limb"* %14, i32 %9, %"ll::limb::Limb"* %16, i32 %10)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
else-block.i1053: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1069
%825 = icmp slt i32 %10, 101
%826 = shl i32 %9, 1
%827 = mul i32 %10, 3
%828 = icmp sge i32 %826, %827
br i1 %825, label %then-block-2018-.i1054, label %else-block2.i1057
then-block-2018-.i1054: ; preds = %else-block.i1053
br i1 %828, label %then-block-2029-.i1055, label %else-block1.i1056
then-block-2029-.i1055: ; preds = %then-block-2018-.i1054
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %809, %"ll::limb::Limb"* %14, i32 %9, %"ll::limb::Limb"* %16, i32 %10, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
else-block1.i1056: ; preds = %then-block-2018-.i1054
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %809, %"ll::limb::Limb"* %14, i32 %9, %"ll::limb::Limb"* %16, i32 %10, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
else-block2.i1057: ; preds = %else-block.i1053
br i1 %828, label %then-block-2062-.i1058, label %else-block3.i1059
then-block-2062-.i1058: ; preds = %else-block2.i1057
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %809, %"ll::limb::Limb"* %14, i32 %9, %"ll::limb::Limb"* %16, i32 %10, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
else-block3.i1059: ; preds = %else-block2.i1057
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %809, %"ll::limb::Limb"* %14, i32 %9, %"ll::limb::Limb"* %16, i32 %10, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060: ; preds = %then-block-2005-.i1052, %then-block-2029-.i1055, %else-block1.i1056, %then-block-2062-.i1058, %else-block3.i1059
%winf0.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %809, i64 0, i32 0
%winf0.sroa.0.0.copyload = load i64* %winf0.sroa.0.0..sroa_idx, align 8
%.sum11211122 = or i64 %808, 1
%cy18.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum11211122, i32 0
%cy18.sroa.0.0.copyload = load i64* %cy18.sroa.0.0..sroa_idx, align 8
br i1 %817, label %then-block-2005-.i1043, label %else-block.i1044
then-block-2005-.i1043: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %807, %"ll::limb::Limb"* %20, i32 %24, %"ll::limb::Limb"* %0, i32 %24)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
else-block.i1044: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1060
%829 = icmp slt i32 %24, 101
%830 = shl i32 %24, 1
%831 = mul i32 %24, 3
%832 = icmp sge i32 %830, %831
br i1 %829, label %then-block-2018-.i1045, label %else-block2.i1048
then-block-2018-.i1045: ; preds = %else-block.i1044
br i1 %832, label %then-block-2029-.i1046, label %else-block1.i1047
then-block-2029-.i1046: ; preds = %then-block-2018-.i1045
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %807, %"ll::limb::Limb"* %20, i32 %24, %"ll::limb::Limb"* %0, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
else-block1.i1047: ; preds = %then-block-2018-.i1045
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %807, %"ll::limb::Limb"* %20, i32 %24, %"ll::limb::Limb"* %0, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
else-block2.i1048: ; preds = %else-block.i1044
br i1 %832, label %then-block-2062-.i1049, label %else-block3.i1050
then-block-2062-.i1049: ; preds = %else-block2.i1048
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %807, %"ll::limb::Limb"* %20, i32 %24, %"ll::limb::Limb"* %0, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
else-block3.i1050: ; preds = %else-block2.i1048
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %807, %"ll::limb::Limb"* %20, i32 %24, %"ll::limb::Limb"* %0, i32 %24, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051: ; preds = %then-block-2005-.i1043, %then-block-2029-.i1046, %else-block1.i1047, %then-block-2062-.i1049, %else-block3.i1050
store i64 %cy18.sroa.0.0.copyload, i64* %cy18.sroa.0.0..sroa_idx, align 8
%833 = icmp slt i32 %6, 63
br i1 %833, label %then-block-2005-.i, label %else-block.i
then-block-2005-.i: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
tail call fastcc void @_ZN2ll3mul12mul_basecase20h93b3a0172de3f0d1CEaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block.i: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit1051
%834 = icmp slt i32 %6, 303
%835 = icmp sge i32 %8, %27
br i1 %834, label %then-block-2018-.i, label %else-block2.i
then-block-2018-.i: ; preds = %else-block.i
br i1 %835, label %then-block-2029-.i, label %else-block1.i
then-block-2029-.i: ; preds = %then-block-2018-.i
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block1.i: ; preds = %then-block-2018-.i
tail call fastcc void @_ZN2ll3mul10mul_toom2220hc0b1825e5f4f4ee1LHaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block2.i: ; preds = %else-block.i
br i1 %835, label %then-block-2062-.i, label %else-block3.i
then-block-2062-.i: ; preds = %else-block2.i
tail call fastcc void @_ZN2ll3mul14mul_unbalanced20h559fa8824ab7eb35sabE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
else-block3.i: ; preds = %else-block2.i
tail call fastcc void @_ZN2ll3mul10mul_toom3320h410d0ad644f2e65b9RaE(%"ll::limb::Limb"* %0, %"ll::limb::Limb"* %1, i32 %7, %"ll::limb::Limb"* %3, i32 %7, %"ll::limb::Limb"* %816)
br label %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit: ; preds = %then-block-2005-.i, %then-block-2029-.i, %else-block1.i, %then-block-2062-.i, %else-block3.i
%836 = add i32 %9, %10
%837 = and i8 %wm1_neg.1, 1
%838 = icmp ne i8 %837, 0
%xl.sroa.0.0..sroa_idx43.i.i735 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i736 = load i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%yl.sroa.0.0.copyload46.i.i738 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
br i1 %838, label %then-block-3563-, label %else-block19
then-block-3563-: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
%839 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i736, i64 %yl.sroa.0.0.copyload46.i.i738) #20
%840 = extractvalue { i64, i1 } %839, 0
store i64 %840, i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%841 = add i32 %810, -1
%842 = icmp eq i32 %841, 0
br i1 %842, label %join20.thread, label %next-block.i.i751.preheader
next-block.i.i751.preheader: ; preds = %then-block-3563-
%843 = extractvalue { i64, i1 } %839, 1
%.47.i.i739 = zext i1 %843 to i64
%844 = mul i32 %7, 2
%845 = add i32 %844, -1
%xtraiter1286 = and i32 %844, 1
%lcmp.mod1287 = icmp ne i32 %xtraiter1286, 0
br i1 %lcmp.mod1287, label %next-block.i.i751.prol, label %next-block.i.i751.preheader.split
next-block.i.i751.prol: ; preds = %next-block.i.i751.preheader
%846 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 1
%847 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i745.prol = getelementptr inbounds %"ll::limb::Limb"* %846, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i746.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i745.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i747.prol = getelementptr inbounds %"ll::limb::Limb"* %847, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i748.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i747.prol, align 8
%848 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i746.prol, i64 %yl.sroa.0.0.copyload.i.i748.prol) #20
%849 = extractvalue { i64, i1 } %848, 0
%850 = extractvalue { i64, i1 } %848, 1
%851 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %849, i64 %.47.i.i739) #20
%852 = extractvalue { i64, i1 } %851, 0
%853 = extractvalue { i64, i1 } %851, 1
%854 = or i1 %850, %853
%..i.i749.prol = zext i1 %854 to i64
store i64 %852, i64* %xl.sroa.0.0..sroa_idx.i.i745.prol, align 8
%855 = add i32 %841, -1
%856 = icmp eq i32 %855, 0
br label %next-block.i.i751.preheader.split
next-block.i.i751.preheader.split: ; preds = %next-block.i.i751.prol, %next-block.i.i751.preheader
%.unr1288 = phi i32 [ %841, %next-block.i.i751.preheader ], [ %855, %next-block.i.i751.prol ]
%.52.i.i741.unr = phi i64 [ %.47.i.i739, %next-block.i.i751.preheader ], [ %..i.i749.prol, %next-block.i.i751.prol ]
%wp.051.i.i742.unr = phi %"ll::limb::Limb"* [ %812, %next-block.i.i751.preheader ], [ %846, %next-block.i.i751.prol ]
%yp.049.i.i744.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i751.preheader ], [ %847, %next-block.i.i751.prol ]
%857 = icmp ult i32 %845, 1
br i1 %857, label %join20.loopexit, label %next-block.i.i751.preheader.split.split
next-block.i.i751.preheader.split.split: ; preds = %next-block.i.i751.preheader.split
br label %next-block.i.i751
join20.thread: ; preds = %then-block-3563-
%858 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %812, i32 0, %"ll::limb::Limb"* %812, i32 %810, i64 3)
br label %then-block-3593-
next-block.i.i751: ; preds = %next-block.i.i751, %next-block.i.i751.preheader.split.split
%859 = phi i32 [ %.unr1288, %next-block.i.i751.preheader.split.split ], [ %879, %next-block.i.i751 ]
%.52.i.i741 = phi i64 [ %.52.i.i741.unr, %next-block.i.i751.preheader.split.split ], [ %..i.i749.1, %next-block.i.i751 ]
%wp.051.i.i742 = phi %"ll::limb::Limb"* [ %wp.051.i.i742.unr, %next-block.i.i751.preheader.split.split ], [ %870, %next-block.i.i751 ]
%yp.049.i.i744 = phi %"ll::limb::Limb"* [ %yp.049.i.i744.unr, %next-block.i.i751.preheader.split.split ], [ %871, %next-block.i.i751 ]
%860 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i742, i64 1
%861 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i744, i64 1
%xl.sroa.0.0..sroa_idx.i.i745 = getelementptr inbounds %"ll::limb::Limb"* %860, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i746 = load i64* %xl.sroa.0.0..sroa_idx.i.i745, align 8
%yl.sroa.0.0..sroa_idx.i.i747 = getelementptr inbounds %"ll::limb::Limb"* %861, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i748 = load i64* %yl.sroa.0.0..sroa_idx.i.i747, align 8
%862 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i746, i64 %yl.sroa.0.0.copyload.i.i748) #20
%863 = extractvalue { i64, i1 } %862, 0
%864 = extractvalue { i64, i1 } %862, 1
%865 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %863, i64 %.52.i.i741) #20
%866 = extractvalue { i64, i1 } %865, 0
%867 = extractvalue { i64, i1 } %865, 1
%868 = or i1 %864, %867
%..i.i749 = zext i1 %868 to i64
store i64 %866, i64* %xl.sroa.0.0..sroa_idx.i.i745, align 8
%869 = add i32 %859, -1
%870 = getelementptr inbounds %"ll::limb::Limb"* %860, i64 1
%871 = getelementptr inbounds %"ll::limb::Limb"* %861, i64 1
%xl.sroa.0.0..sroa_idx.i.i745.1 = getelementptr inbounds %"ll::limb::Limb"* %870, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i746.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i745.1, align 8
%yl.sroa.0.0..sroa_idx.i.i747.1 = getelementptr inbounds %"ll::limb::Limb"* %871, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i748.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i747.1, align 8
%872 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i746.1, i64 %yl.sroa.0.0.copyload.i.i748.1) #20
%873 = extractvalue { i64, i1 } %872, 0
%874 = extractvalue { i64, i1 } %872, 1
%875 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %873, i64 %..i.i749) #20
%876 = extractvalue { i64, i1 } %875, 0
%877 = extractvalue { i64, i1 } %875, 1
%878 = or i1 %874, %877
%..i.i749.1 = zext i1 %878 to i64
store i64 %876, i64* %xl.sroa.0.0..sroa_idx.i.i745.1, align 8
%879 = add i32 %869, -1
%880 = icmp eq i32 %879, 0
br i1 %880, label %join20.loopexit.unr-lcssa, label %next-block.i.i751
else-block19: ; preds = %_ZN2ll3mul7mul_rec20h452d807f1a0b15b32FaE.exit
%881 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i736, i64 %yl.sroa.0.0.copyload46.i.i738) #20
%882 = extractvalue { i64, i1 } %881, 0
store i64 %882, i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%883 = add i32 %810, -1
%884 = icmp eq i32 %883, 0
br i1 %884, label %join20.thread1106, label %next-block.i.i770.preheader
next-block.i.i770.preheader: ; preds = %else-block19
%885 = extractvalue { i64, i1 } %881, 1
%.47.i.i758 = zext i1 %885 to i64
%886 = mul i32 %7, 2
%887 = add i32 %886, -1
%xtraiter1289 = and i32 %886, 1
%lcmp.mod1290 = icmp ne i32 %xtraiter1289, 0
br i1 %lcmp.mod1290, label %next-block.i.i770.prol, label %next-block.i.i770.preheader.split
next-block.i.i770.prol: ; preds = %next-block.i.i770.preheader
%888 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 1
%889 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i764.prol = getelementptr inbounds %"ll::limb::Limb"* %888, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i765.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i764.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i766.prol = getelementptr inbounds %"ll::limb::Limb"* %889, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i767.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i766.prol, align 8
%890 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i765.prol, i64 %yl.sroa.0.0.copyload.i.i767.prol) #20
%891 = extractvalue { i64, i1 } %890, 0
%892 = extractvalue { i64, i1 } %890, 1
%893 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %891, i64 %.47.i.i758) #20
%894 = extractvalue { i64, i1 } %893, 0
%895 = extractvalue { i64, i1 } %893, 1
%896 = or i1 %892, %895
%..i.i768.prol = zext i1 %896 to i64
store i64 %894, i64* %xl.sroa.0.0..sroa_idx.i.i764.prol, align 8
%897 = add i32 %883, -1
%898 = icmp eq i32 %897, 0
br label %next-block.i.i770.preheader.split
next-block.i.i770.preheader.split: ; preds = %next-block.i.i770.prol, %next-block.i.i770.preheader
%.unr1291 = phi i32 [ %883, %next-block.i.i770.preheader ], [ %897, %next-block.i.i770.prol ]
%.52.i.i760.unr = phi i64 [ %.47.i.i758, %next-block.i.i770.preheader ], [ %..i.i768.prol, %next-block.i.i770.prol ]
%wp.051.i.i761.unr = phi %"ll::limb::Limb"* [ %812, %next-block.i.i770.preheader ], [ %888, %next-block.i.i770.prol ]
%yp.049.i.i763.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i770.preheader ], [ %889, %next-block.i.i770.prol ]
%899 = icmp ult i32 %887, 1
br i1 %899, label %join20.loopexit1238, label %next-block.i.i770.preheader.split.split
next-block.i.i770.preheader.split.split: ; preds = %next-block.i.i770.preheader.split
br label %next-block.i.i770
join20.thread1106: ; preds = %else-block19
%900 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %812, i32 0, %"ll::limb::Limb"* %812, i32 %810, i64 3)
br label %else-block21
next-block.i.i770: ; preds = %next-block.i.i770, %next-block.i.i770.preheader.split.split
%901 = phi i32 [ %.unr1291, %next-block.i.i770.preheader.split.split ], [ %921, %next-block.i.i770 ]
%.52.i.i760 = phi i64 [ %.52.i.i760.unr, %next-block.i.i770.preheader.split.split ], [ %..i.i768.1, %next-block.i.i770 ]
%wp.051.i.i761 = phi %"ll::limb::Limb"* [ %wp.051.i.i761.unr, %next-block.i.i770.preheader.split.split ], [ %912, %next-block.i.i770 ]
%yp.049.i.i763 = phi %"ll::limb::Limb"* [ %yp.049.i.i763.unr, %next-block.i.i770.preheader.split.split ], [ %913, %next-block.i.i770 ]
%902 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i761, i64 1
%903 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i763, i64 1
%xl.sroa.0.0..sroa_idx.i.i764 = getelementptr inbounds %"ll::limb::Limb"* %902, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i765 = load i64* %xl.sroa.0.0..sroa_idx.i.i764, align 8
%yl.sroa.0.0..sroa_idx.i.i766 = getelementptr inbounds %"ll::limb::Limb"* %903, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i767 = load i64* %yl.sroa.0.0..sroa_idx.i.i766, align 8
%904 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i765, i64 %yl.sroa.0.0.copyload.i.i767) #20
%905 = extractvalue { i64, i1 } %904, 0
%906 = extractvalue { i64, i1 } %904, 1
%907 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %905, i64 %.52.i.i760) #20
%908 = extractvalue { i64, i1 } %907, 0
%909 = extractvalue { i64, i1 } %907, 1
%910 = or i1 %906, %909
%..i.i768 = zext i1 %910 to i64
store i64 %908, i64* %xl.sroa.0.0..sroa_idx.i.i764, align 8
%911 = add i32 %901, -1
%912 = getelementptr inbounds %"ll::limb::Limb"* %902, i64 1
%913 = getelementptr inbounds %"ll::limb::Limb"* %903, i64 1
%xl.sroa.0.0..sroa_idx.i.i764.1 = getelementptr inbounds %"ll::limb::Limb"* %912, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i765.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i764.1, align 8
%yl.sroa.0.0..sroa_idx.i.i766.1 = getelementptr inbounds %"ll::limb::Limb"* %913, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i767.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i766.1, align 8
%914 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i765.1, i64 %yl.sroa.0.0.copyload.i.i767.1) #20
%915 = extractvalue { i64, i1 } %914, 0
%916 = extractvalue { i64, i1 } %914, 1
%917 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %915, i64 %..i.i768) #20
%918 = extractvalue { i64, i1 } %917, 0
%919 = extractvalue { i64, i1 } %917, 1
%920 = or i1 %916, %919
%..i.i768.1 = zext i1 %920 to i64
store i64 %918, i64* %xl.sroa.0.0..sroa_idx.i.i764.1, align 8
%921 = add i32 %911, -1
%922 = icmp eq i32 %921, 0
br i1 %922, label %join20.loopexit1238.unr-lcssa, label %next-block.i.i770
join20.loopexit.unr-lcssa: ; preds = %next-block.i.i751
br label %join20.loopexit
join20.loopexit: ; preds = %next-block.i.i751.preheader.split, %join20.loopexit.unr-lcssa
br label %join20
join20.loopexit1238.unr-lcssa: ; preds = %next-block.i.i770
br label %join20.loopexit1238
join20.loopexit1238: ; preds = %next-block.i.i770.preheader.split, %join20.loopexit1238.unr-lcssa
br label %join20
join20: ; preds = %join20.loopexit1238, %join20.loopexit
%923 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %812, i32 0, %"ll::limb::Limb"* %812, i32 %810, i64 3)
%.pre1160 = add i32 %810, -1
br i1 %838, label %then-block-3593-, label %else-block21
then-block-3593-: ; preds = %join20, %join20.thread
%.pre-phi = phi i32 [ 0, %join20.thread ], [ %.pre1160, %join20 ]
%xl.sroa.0.0..sroa_idx43.i.i773 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i774 = load i64* %xl.sroa.0.0..sroa_idx43.i.i773, align 8
%yl.sroa.0.0.copyload46.i.i776 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%924 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i774, i64 %yl.sroa.0.0.copyload46.i.i776) #20
%925 = extractvalue { i64, i1 } %924, 0
store i64 %925, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%926 = icmp eq i32 %.pre-phi, 0
br i1 %926, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit791.thread, label %next-block.i.i789.preheader
next-block.i.i789.preheader: ; preds = %then-block-3593-
%927 = extractvalue { i64, i1 } %924, 1
%.47.i.i777 = zext i1 %927 to i64
%928 = add i32 %.pre-phi, -1
%xtraiter1277 = and i32 %.pre-phi, 1
%lcmp.mod1278 = icmp ne i32 %xtraiter1277, 0
br i1 %lcmp.mod1278, label %next-block.i.i789.prol, label %next-block.i.i789.preheader.split
next-block.i.i789.prol: ; preds = %next-block.i.i789.preheader
%929 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%930 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%xl.sroa.0.0..sroa_idx.i.i783.prol = getelementptr inbounds %"ll::limb::Limb"* %930, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i784.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i783.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i785.prol = getelementptr inbounds %"ll::limb::Limb"* %929, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i786.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i785.prol, align 8
%931 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i784.prol, i64 %yl.sroa.0.0.copyload.i.i786.prol) #20
%932 = extractvalue { i64, i1 } %931, 0
%933 = extractvalue { i64, i1 } %931, 1
%934 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %932, i64 %.47.i.i777) #20
%935 = extractvalue { i64, i1 } %934, 0
%936 = extractvalue { i64, i1 } %934, 1
%937 = or i1 %933, %936
%..i.i787.prol = zext i1 %937 to i64
store i64 %935, i64* %yl.sroa.0.0..sroa_idx.i.i785.prol, align 8
%938 = add i32 %.pre-phi, -1
%939 = icmp eq i32 %938, 0
br label %next-block.i.i789.preheader.split
next-block.i.i789.preheader.split: ; preds = %next-block.i.i789.prol, %next-block.i.i789.preheader
%.unr1279 = phi i32 [ %.pre-phi, %next-block.i.i789.preheader ], [ %938, %next-block.i.i789.prol ]
%.52.i.i779.unr = phi i64 [ %.47.i.i777, %next-block.i.i789.preheader ], [ %..i.i787.prol, %next-block.i.i789.prol ]
%wp.051.i.i780.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i789.preheader ], [ %929, %next-block.i.i789.prol ]
%xp.050.i.i781.unr = phi %"ll::limb::Limb"* [ %807, %next-block.i.i789.preheader ], [ %930, %next-block.i.i789.prol ]
%940 = icmp ult i32 %928, 1
br i1 %940, label %while_body.lr.ph.i792, label %next-block.i.i789.preheader.split.split
next-block.i.i789.preheader.split.split: ; preds = %next-block.i.i789.preheader.split
br label %next-block.i.i789
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit791.thread: ; preds = %then-block-3593-
%low_limb.sroa.0.042.i1108 = lshr i64 %925, 1
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit
next-block.i.i789: ; preds = %next-block.i.i789, %next-block.i.i789.preheader.split.split
%941 = phi i32 [ %.unr1279, %next-block.i.i789.preheader.split.split ], [ %961, %next-block.i.i789 ]
%.52.i.i779 = phi i64 [ %.52.i.i779.unr, %next-block.i.i789.preheader.split.split ], [ %..i.i787.1, %next-block.i.i789 ]
%wp.051.i.i780 = phi %"ll::limb::Limb"* [ %wp.051.i.i780.unr, %next-block.i.i789.preheader.split.split ], [ %952, %next-block.i.i789 ]
%xp.050.i.i781 = phi %"ll::limb::Limb"* [ %xp.050.i.i781.unr, %next-block.i.i789.preheader.split.split ], [ %953, %next-block.i.i789 ]
%942 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i780, i64 1
%943 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i781, i64 1
%xl.sroa.0.0..sroa_idx.i.i783 = getelementptr inbounds %"ll::limb::Limb"* %943, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i784 = load i64* %xl.sroa.0.0..sroa_idx.i.i783, align 8
%yl.sroa.0.0..sroa_idx.i.i785 = getelementptr inbounds %"ll::limb::Limb"* %942, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i786 = load i64* %yl.sroa.0.0..sroa_idx.i.i785, align 8
%944 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i784, i64 %yl.sroa.0.0.copyload.i.i786) #20
%945 = extractvalue { i64, i1 } %944, 0
%946 = extractvalue { i64, i1 } %944, 1
%947 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %945, i64 %.52.i.i779) #20
%948 = extractvalue { i64, i1 } %947, 0
%949 = extractvalue { i64, i1 } %947, 1
%950 = or i1 %946, %949
%..i.i787 = zext i1 %950 to i64
store i64 %948, i64* %yl.sroa.0.0..sroa_idx.i.i785, align 8
%951 = add i32 %941, -1
%952 = getelementptr inbounds %"ll::limb::Limb"* %942, i64 1
%953 = getelementptr inbounds %"ll::limb::Limb"* %943, i64 1
%xl.sroa.0.0..sroa_idx.i.i783.1 = getelementptr inbounds %"ll::limb::Limb"* %953, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i784.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i783.1, align 8
%yl.sroa.0.0..sroa_idx.i.i785.1 = getelementptr inbounds %"ll::limb::Limb"* %952, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i786.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i785.1, align 8
%954 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i784.1, i64 %yl.sroa.0.0.copyload.i.i786.1) #20
%955 = extractvalue { i64, i1 } %954, 0
%956 = extractvalue { i64, i1 } %954, 1
%957 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %955, i64 %..i.i787) #20
%958 = extractvalue { i64, i1 } %957, 0
%959 = extractvalue { i64, i1 } %957, 1
%960 = or i1 %956, %959
%..i.i787.1 = zext i1 %960 to i64
store i64 %958, i64* %yl.sroa.0.0..sroa_idx.i.i785.1, align 8
%961 = add i32 %951, -1
%962 = icmp eq i32 %961, 0
br i1 %962, label %while_body.lr.ph.i792.unr-lcssa, label %next-block.i.i789
while_body.lr.ph.i792.unr-lcssa: ; preds = %next-block.i.i789
br label %while_body.lr.ph.i792
while_body.lr.ph.i792: ; preds = %next-block.i.i789.preheader.split, %while_body.lr.ph.i792.unr-lcssa
%h.sroa.0.0.copyload.i = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%low_limb.sroa.0.042.i = lshr i64 %h.sroa.0.0.copyload.i, 1
%963 = add i32 %810, -2
%964 = zext i32 %963 to i64
%965 = add i32 %.pre-phi, -1
%xtraiter1274 = and i32 %.pre-phi, 3
%lcmp.mod1275 = icmp ne i32 %xtraiter1274, 0
br i1 %lcmp.mod1275, label %while_body.i793.prol, label %while_body.lr.ph.i792.split
while_body.i793.prol: ; preds = %while_body.i793.prol, %while_body.lr.ph.i792
%xs.047.i.prol = phi i32 [ %.pre-phi, %while_body.lr.ph.i792 ], [ %xs.0.i.prol, %while_body.i793.prol ]
%low_limb.sroa.0.046.i.prol = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i792 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i793.prol ]
%.pn.i.prol = phi %"ll::limb::Limb"* [ %5, %while_body.lr.ph.i792 ], [ %xp.045.i.prol, %while_body.i793.prol ]
%prol.iter1276 = phi i32 [ %xtraiter1274, %while_body.lr.ph.i792 ], [ %prol.iter1276.sub, %while_body.i793.prol ]
%xp.045.i.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.i.prol, i64 1
%high.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.prol, i64 0, i32 0
%high.sroa.0.0.copyload.i.prol = load i64* %high.sroa.0.0..sroa_idx.i.prol, align 8
%966 = shl i64 %high.sroa.0.0.copyload.i.prol, 63
%967 = or i64 %966, %low_limb.sroa.0.046.i.prol
%968 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i.prol, i64 0, i32 0
store i64 %967, i64* %968, align 8
%low_limb.sroa.0.0.i.prol = lshr i64 %high.sroa.0.0.copyload.i.prol, 1
%xs.0.i.prol = add i32 %xs.047.i.prol, -1
%969 = icmp eq i32 %xs.0.i.prol, 0
%prol.iter1276.sub = sub i32 %prol.iter1276, 1
%prol.iter1276.cmp = icmp ne i32 %prol.iter1276.sub, 0
br i1 %prol.iter1276.cmp, label %while_body.i793.prol, label %while_body.lr.ph.i792.split, !llvm.loop !125
while_body.lr.ph.i792.split: ; preds = %while_body.i793.prol, %while_body.lr.ph.i792
%low_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i792 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i793.prol ]
%xs.047.i.unr = phi i32 [ %.pre-phi, %while_body.lr.ph.i792 ], [ %xs.0.i.prol, %while_body.i793.prol ]
%low_limb.sroa.0.046.i.unr = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i792 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i793.prol ]
%.pn.i.unr = phi %"ll::limb::Limb"* [ %5, %while_body.lr.ph.i792 ], [ %xp.045.i.prol, %while_body.i793.prol ]
%970 = icmp ult i32 %965, 3
br i1 %970, label %while_cond.while_exit_crit_edge.i, label %while_body.lr.ph.i792.split.split
while_body.lr.ph.i792.split.split: ; preds = %while_body.lr.ph.i792.split
br label %while_body.i793
while_cond.while_exit_crit_edge.i.unr-lcssa: ; preds = %while_body.i793
%low_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %low_limb.sroa.0.0.i.3, %while_body.i793 ]
br label %while_cond.while_exit_crit_edge.i
while_cond.while_exit_crit_edge.i: ; preds = %while_body.lr.ph.i792.split, %while_cond.while_exit_crit_edge.i.unr-lcssa
%low_limb.sroa.0.0.i.lcssa = phi i64 [ %low_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i792.split ], [ %low_limb.sroa.0.0.i.lcssa.ph, %while_cond.while_exit_crit_edge.i.unr-lcssa ]
%971 = add nuw nsw i64 %964, 1
%scevgep.i = getelementptr %"ll::limb::Limb"* %5, i64 %971
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit
while_body.i793: ; preds = %while_body.i793, %while_body.lr.ph.i792.split.split
%xs.047.i = phi i32 [ %xs.047.i.unr, %while_body.lr.ph.i792.split.split ], [ %xs.0.i.3, %while_body.i793 ]
%low_limb.sroa.0.046.i = phi i64 [ %low_limb.sroa.0.046.i.unr, %while_body.lr.ph.i792.split.split ], [ %low_limb.sroa.0.0.i.3, %while_body.i793 ]
%.pn.i = phi %"ll::limb::Limb"* [ %.pn.i.unr, %while_body.lr.ph.i792.split.split ], [ %xp.045.i.3, %while_body.i793 ]
%xp.045.i = getelementptr inbounds %"ll::limb::Limb"* %.pn.i, i64 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 0, i32 0
%high.sroa.0.0.copyload.i = load i64* %high.sroa.0.0..sroa_idx.i, align 8
%972 = shl i64 %high.sroa.0.0.copyload.i, 63
%973 = or i64 %972, %low_limb.sroa.0.046.i
%974 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i, i64 0, i32 0
store i64 %973, i64* %974, align 8
%low_limb.sroa.0.0.i = lshr i64 %high.sroa.0.0.copyload.i, 1
%xs.0.i = add i32 %xs.047.i, -1
%xp.045.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 1
%high.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 0, i32 0
%high.sroa.0.0.copyload.i.1 = load i64* %high.sroa.0.0..sroa_idx.i.1, align 8
%975 = shl i64 %high.sroa.0.0.copyload.i.1, 63
%976 = or i64 %975, %low_limb.sroa.0.0.i
%977 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 0, i32 0
store i64 %976, i64* %977, align 8
%low_limb.sroa.0.0.i.1 = lshr i64 %high.sroa.0.0.copyload.i.1, 1
%xs.0.i.1 = add i32 %xs.0.i, -1
%xp.045.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 1
%high.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 0, i32 0
%high.sroa.0.0.copyload.i.2 = load i64* %high.sroa.0.0..sroa_idx.i.2, align 8
%978 = shl i64 %high.sroa.0.0.copyload.i.2, 63
%979 = or i64 %978, %low_limb.sroa.0.0.i.1
%980 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 0, i32 0
store i64 %979, i64* %980, align 8
%low_limb.sroa.0.0.i.2 = lshr i64 %high.sroa.0.0.copyload.i.2, 1
%xs.0.i.2 = add i32 %xs.0.i.1, -1
%xp.045.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 1
%high.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.3, i64 0, i32 0
%high.sroa.0.0.copyload.i.3 = load i64* %high.sroa.0.0..sroa_idx.i.3, align 8
%981 = shl i64 %high.sroa.0.0.copyload.i.3, 63
%982 = or i64 %981, %low_limb.sroa.0.0.i.2
%983 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 0, i32 0
store i64 %982, i64* %983, align 8
%low_limb.sroa.0.0.i.3 = lshr i64 %high.sroa.0.0.copyload.i.3, 1
%xs.0.i.3 = add i32 %xs.0.i.2, -1
%984 = icmp eq i32 %xs.0.i.3, 0
br i1 %984, label %while_cond.while_exit_crit_edge.i.unr-lcssa, label %while_body.i793
_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit791.thread, %while_cond.while_exit_crit_edge.i
%low_limb.sroa.0.0.lcssa.i = phi i64 [ %low_limb.sroa.0.0.i.lcssa, %while_cond.while_exit_crit_edge.i ], [ %low_limb.sroa.0.042.i1108, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit791.thread ]
%rp.0.lcssa.i = phi %"ll::limb::Limb"* [ %scevgep.i, %while_cond.while_exit_crit_edge.i ], [ %5, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit791.thread ]
%low_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %rp.0.lcssa.i, i64 0, i32 0
store i64 %low_limb.sroa.0.0.lcssa.i, i64* %low_limb.sroa.0.0..sroa_idx.i, align 8
br label %join22
else-block21: ; preds = %join20, %join20.thread1106
%.pre-phi1162 = phi i32 [ 0, %join20.thread1106 ], [ %.pre1160, %join20 ]
%xl.sroa.0.0..sroa_idx43.i.i794 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i795 = load i64* %xl.sroa.0.0..sroa_idx43.i.i794, align 8
%yl.sroa.0.0.copyload46.i.i797 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%985 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i795, i64 %yl.sroa.0.0.copyload46.i.i797) #20
%986 = extractvalue { i64, i1 } %985, 0
store i64 %986, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%987 = icmp eq i32 %.pre-phi1162, 0
br i1 %987, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit812.thread, label %next-block.i.i810.preheader
next-block.i.i810.preheader: ; preds = %else-block21
%988 = extractvalue { i64, i1 } %985, 1
%.47.i.i798 = zext i1 %988 to i64
%989 = add i32 %.pre-phi1162, -1
%xtraiter1283 = and i32 %.pre-phi1162, 1
%lcmp.mod1284 = icmp ne i32 %xtraiter1283, 0
br i1 %lcmp.mod1284, label %next-block.i.i810.prol, label %next-block.i.i810.preheader.split
next-block.i.i810.prol: ; preds = %next-block.i.i810.preheader
%990 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%991 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%xl.sroa.0.0..sroa_idx.i.i804.prol = getelementptr inbounds %"ll::limb::Limb"* %991, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i805.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i804.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i806.prol = getelementptr inbounds %"ll::limb::Limb"* %990, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i807.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i806.prol, align 8
%992 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i805.prol, i64 %yl.sroa.0.0.copyload.i.i807.prol) #20
%993 = extractvalue { i64, i1 } %992, 0
%994 = extractvalue { i64, i1 } %992, 1
%995 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %993, i64 %.47.i.i798) #20
%996 = extractvalue { i64, i1 } %995, 0
%997 = extractvalue { i64, i1 } %995, 1
%998 = or i1 %994, %997
%..i.i808.prol = zext i1 %998 to i64
store i64 %996, i64* %yl.sroa.0.0..sroa_idx.i.i806.prol, align 8
%999 = add i32 %.pre-phi1162, -1
%1000 = icmp eq i32 %999, 0
br label %next-block.i.i810.preheader.split
next-block.i.i810.preheader.split: ; preds = %next-block.i.i810.prol, %next-block.i.i810.preheader
%.unr1285 = phi i32 [ %.pre-phi1162, %next-block.i.i810.preheader ], [ %999, %next-block.i.i810.prol ]
%.52.i.i800.unr = phi i64 [ %.47.i.i798, %next-block.i.i810.preheader ], [ %..i.i808.prol, %next-block.i.i810.prol ]
%wp.051.i.i801.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i810.preheader ], [ %990, %next-block.i.i810.prol ]
%xp.050.i.i802.unr = phi %"ll::limb::Limb"* [ %807, %next-block.i.i810.preheader ], [ %991, %next-block.i.i810.prol ]
%1001 = icmp ult i32 %989, 1
br i1 %1001, label %while_body.lr.ph.i817, label %next-block.i.i810.preheader.split.split
next-block.i.i810.preheader.split.split: ; preds = %next-block.i.i810.preheader.split
br label %next-block.i.i810
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit812.thread: ; preds = %else-block21
%low_limb.sroa.0.042.i8151110 = lshr i64 %986, 1
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit833
next-block.i.i810: ; preds = %next-block.i.i810, %next-block.i.i810.preheader.split.split
%1002 = phi i32 [ %.unr1285, %next-block.i.i810.preheader.split.split ], [ %1022, %next-block.i.i810 ]
%.52.i.i800 = phi i64 [ %.52.i.i800.unr, %next-block.i.i810.preheader.split.split ], [ %..i.i808.1, %next-block.i.i810 ]
%wp.051.i.i801 = phi %"ll::limb::Limb"* [ %wp.051.i.i801.unr, %next-block.i.i810.preheader.split.split ], [ %1013, %next-block.i.i810 ]
%xp.050.i.i802 = phi %"ll::limb::Limb"* [ %xp.050.i.i802.unr, %next-block.i.i810.preheader.split.split ], [ %1014, %next-block.i.i810 ]
%1003 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i801, i64 1
%1004 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i802, i64 1
%xl.sroa.0.0..sroa_idx.i.i804 = getelementptr inbounds %"ll::limb::Limb"* %1004, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i805 = load i64* %xl.sroa.0.0..sroa_idx.i.i804, align 8
%yl.sroa.0.0..sroa_idx.i.i806 = getelementptr inbounds %"ll::limb::Limb"* %1003, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i807 = load i64* %yl.sroa.0.0..sroa_idx.i.i806, align 8
%1005 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i805, i64 %yl.sroa.0.0.copyload.i.i807) #20
%1006 = extractvalue { i64, i1 } %1005, 0
%1007 = extractvalue { i64, i1 } %1005, 1
%1008 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1006, i64 %.52.i.i800) #20
%1009 = extractvalue { i64, i1 } %1008, 0
%1010 = extractvalue { i64, i1 } %1008, 1
%1011 = or i1 %1007, %1010
%..i.i808 = zext i1 %1011 to i64
store i64 %1009, i64* %yl.sroa.0.0..sroa_idx.i.i806, align 8
%1012 = add i32 %1002, -1
%1013 = getelementptr inbounds %"ll::limb::Limb"* %1003, i64 1
%1014 = getelementptr inbounds %"ll::limb::Limb"* %1004, i64 1
%xl.sroa.0.0..sroa_idx.i.i804.1 = getelementptr inbounds %"ll::limb::Limb"* %1014, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i805.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i804.1, align 8
%yl.sroa.0.0..sroa_idx.i.i806.1 = getelementptr inbounds %"ll::limb::Limb"* %1013, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i807.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i806.1, align 8
%1015 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i805.1, i64 %yl.sroa.0.0.copyload.i.i807.1) #20
%1016 = extractvalue { i64, i1 } %1015, 0
%1017 = extractvalue { i64, i1 } %1015, 1
%1018 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1016, i64 %..i.i808) #20
%1019 = extractvalue { i64, i1 } %1018, 0
%1020 = extractvalue { i64, i1 } %1018, 1
%1021 = or i1 %1017, %1020
%..i.i808.1 = zext i1 %1021 to i64
store i64 %1019, i64* %yl.sroa.0.0..sroa_idx.i.i806.1, align 8
%1022 = add i32 %1012, -1
%1023 = icmp eq i32 %1022, 0
br i1 %1023, label %while_body.lr.ph.i817.unr-lcssa, label %next-block.i.i810
while_body.lr.ph.i817.unr-lcssa: ; preds = %next-block.i.i810
br label %while_body.lr.ph.i817
while_body.lr.ph.i817: ; preds = %next-block.i.i810.preheader.split, %while_body.lr.ph.i817.unr-lcssa
%h.sroa.0.0.copyload.i814 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%low_limb.sroa.0.042.i815 = lshr i64 %h.sroa.0.0.copyload.i814, 1
%1024 = add i32 %810, -2
%1025 = zext i32 %1024 to i64
%1026 = add i32 %.pre-phi1162, -1
%xtraiter1280 = and i32 %.pre-phi1162, 3
%lcmp.mod1281 = icmp ne i32 %xtraiter1280, 0
br i1 %lcmp.mod1281, label %while_body.i832.prol, label %while_body.lr.ph.i817.split
while_body.i832.prol: ; preds = %while_body.i832.prol, %while_body.lr.ph.i817
%xs.047.i823.prol = phi i32 [ %.pre-phi1162, %while_body.lr.ph.i817 ], [ %xs.0.i831.prol, %while_body.i832.prol ]
%low_limb.sroa.0.046.i824.prol = phi i64 [ %low_limb.sroa.0.042.i815, %while_body.lr.ph.i817 ], [ %low_limb.sroa.0.0.i830.prol, %while_body.i832.prol ]
%.pn.i825.prol = phi %"ll::limb::Limb"* [ %5, %while_body.lr.ph.i817 ], [ %xp.045.i827.prol, %while_body.i832.prol ]
%prol.iter1282 = phi i32 [ %xtraiter1280, %while_body.lr.ph.i817 ], [ %prol.iter1282.sub, %while_body.i832.prol ]
%xp.045.i827.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.i825.prol, i64 1
%high.sroa.0.0..sroa_idx.i828.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.prol, i64 0, i32 0
%high.sroa.0.0.copyload.i829.prol = load i64* %high.sroa.0.0..sroa_idx.i828.prol, align 8
%1027 = shl i64 %high.sroa.0.0.copyload.i829.prol, 63
%1028 = or i64 %1027, %low_limb.sroa.0.046.i824.prol
%1029 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i825.prol, i64 0, i32 0
store i64 %1028, i64* %1029, align 8
%low_limb.sroa.0.0.i830.prol = lshr i64 %high.sroa.0.0.copyload.i829.prol, 1
%xs.0.i831.prol = add i32 %xs.047.i823.prol, -1
%1030 = icmp eq i32 %xs.0.i831.prol, 0
%prol.iter1282.sub = sub i32 %prol.iter1282, 1
%prol.iter1282.cmp = icmp ne i32 %prol.iter1282.sub, 0
br i1 %prol.iter1282.cmp, label %while_body.i832.prol, label %while_body.lr.ph.i817.split, !llvm.loop !126
while_body.lr.ph.i817.split: ; preds = %while_body.i832.prol, %while_body.lr.ph.i817
%low_limb.sroa.0.0.i830.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i817 ], [ %low_limb.sroa.0.0.i830.prol, %while_body.i832.prol ]
%xs.047.i823.unr = phi i32 [ %.pre-phi1162, %while_body.lr.ph.i817 ], [ %xs.0.i831.prol, %while_body.i832.prol ]
%low_limb.sroa.0.046.i824.unr = phi i64 [ %low_limb.sroa.0.042.i815, %while_body.lr.ph.i817 ], [ %low_limb.sroa.0.0.i830.prol, %while_body.i832.prol ]
%.pn.i825.unr = phi %"ll::limb::Limb"* [ %5, %while_body.lr.ph.i817 ], [ %xp.045.i827.prol, %while_body.i832.prol ]
%1031 = icmp ult i32 %1026, 3
br i1 %1031, label %while_cond.while_exit_crit_edge.i819, label %while_body.lr.ph.i817.split.split
while_body.lr.ph.i817.split.split: ; preds = %while_body.lr.ph.i817.split
br label %while_body.i832
while_cond.while_exit_crit_edge.i819.unr-lcssa: ; preds = %while_body.i832
%low_limb.sroa.0.0.i830.lcssa.ph = phi i64 [ %low_limb.sroa.0.0.i830.3, %while_body.i832 ]
br label %while_cond.while_exit_crit_edge.i819
while_cond.while_exit_crit_edge.i819: ; preds = %while_body.lr.ph.i817.split, %while_cond.while_exit_crit_edge.i819.unr-lcssa
%low_limb.sroa.0.0.i830.lcssa = phi i64 [ %low_limb.sroa.0.0.i830.lcssa.unr, %while_body.lr.ph.i817.split ], [ %low_limb.sroa.0.0.i830.lcssa.ph, %while_cond.while_exit_crit_edge.i819.unr-lcssa ]
%1032 = add nuw nsw i64 %1025, 1
%scevgep.i818 = getelementptr %"ll::limb::Limb"* %5, i64 %1032
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit833
while_body.i832: ; preds = %while_body.i832, %while_body.lr.ph.i817.split.split
%xs.047.i823 = phi i32 [ %xs.047.i823.unr, %while_body.lr.ph.i817.split.split ], [ %xs.0.i831.3, %while_body.i832 ]
%low_limb.sroa.0.046.i824 = phi i64 [ %low_limb.sroa.0.046.i824.unr, %while_body.lr.ph.i817.split.split ], [ %low_limb.sroa.0.0.i830.3, %while_body.i832 ]
%.pn.i825 = phi %"ll::limb::Limb"* [ %.pn.i825.unr, %while_body.lr.ph.i817.split.split ], [ %xp.045.i827.3, %while_body.i832 ]
%xp.045.i827 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i825, i64 1
%high.sroa.0.0..sroa_idx.i828 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827, i64 0, i32 0
%high.sroa.0.0.copyload.i829 = load i64* %high.sroa.0.0..sroa_idx.i828, align 8
%1033 = shl i64 %high.sroa.0.0.copyload.i829, 63
%1034 = or i64 %1033, %low_limb.sroa.0.046.i824
%1035 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i825, i64 0, i32 0
store i64 %1034, i64* %1035, align 8
%low_limb.sroa.0.0.i830 = lshr i64 %high.sroa.0.0.copyload.i829, 1
%xs.0.i831 = add i32 %xs.047.i823, -1
%xp.045.i827.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827, i64 1
%high.sroa.0.0..sroa_idx.i828.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.1, i64 0, i32 0
%high.sroa.0.0.copyload.i829.1 = load i64* %high.sroa.0.0..sroa_idx.i828.1, align 8
%1036 = shl i64 %high.sroa.0.0.copyload.i829.1, 63
%1037 = or i64 %1036, %low_limb.sroa.0.0.i830
%1038 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827, i64 0, i32 0
store i64 %1037, i64* %1038, align 8
%low_limb.sroa.0.0.i830.1 = lshr i64 %high.sroa.0.0.copyload.i829.1, 1
%xs.0.i831.1 = add i32 %xs.0.i831, -1
%xp.045.i827.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.1, i64 1
%high.sroa.0.0..sroa_idx.i828.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.2, i64 0, i32 0
%high.sroa.0.0.copyload.i829.2 = load i64* %high.sroa.0.0..sroa_idx.i828.2, align 8
%1039 = shl i64 %high.sroa.0.0.copyload.i829.2, 63
%1040 = or i64 %1039, %low_limb.sroa.0.0.i830.1
%1041 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.1, i64 0, i32 0
store i64 %1040, i64* %1041, align 8
%low_limb.sroa.0.0.i830.2 = lshr i64 %high.sroa.0.0.copyload.i829.2, 1
%xs.0.i831.2 = add i32 %xs.0.i831.1, -1
%xp.045.i827.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.2, i64 1
%high.sroa.0.0..sroa_idx.i828.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.3, i64 0, i32 0
%high.sroa.0.0.copyload.i829.3 = load i64* %high.sroa.0.0..sroa_idx.i828.3, align 8
%1042 = shl i64 %high.sroa.0.0.copyload.i829.3, 63
%1043 = or i64 %1042, %low_limb.sroa.0.0.i830.2
%1044 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i827.2, i64 0, i32 0
store i64 %1043, i64* %1044, align 8
%low_limb.sroa.0.0.i830.3 = lshr i64 %high.sroa.0.0.copyload.i829.3, 1
%xs.0.i831.3 = add i32 %xs.0.i831.2, -1
%1045 = icmp eq i32 %xs.0.i831.3, 0
br i1 %1045, label %while_cond.while_exit_crit_edge.i819.unr-lcssa, label %while_body.i832
_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit833: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit812.thread, %while_cond.while_exit_crit_edge.i819
%low_limb.sroa.0.0.lcssa.i820 = phi i64 [ %low_limb.sroa.0.0.i830.lcssa, %while_cond.while_exit_crit_edge.i819 ], [ %low_limb.sroa.0.042.i8151110, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit812.thread ]
%rp.0.lcssa.i821 = phi %"ll::limb::Limb"* [ %scevgep.i818, %while_cond.while_exit_crit_edge.i819 ], [ %5, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit812.thread ]
%low_limb.sroa.0.0..sroa_idx.i822 = getelementptr inbounds %"ll::limb::Limb"* %rp.0.lcssa.i821, i64 0, i32 0
store i64 %low_limb.sroa.0.0.lcssa.i820, i64* %low_limb.sroa.0.0..sroa_idx.i822, align 8
br label %join22
join22: ; preds = %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit833, %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit
%xl.sroa.0.0..sroa_idx43.i.i834 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i835 = load i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%yl.sroa.0.0.copyload46.i.i837 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i610, align 8
%1046 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i835, i64 %yl.sroa.0.0.copyload46.i.i837) #20
%1047 = extractvalue { i64, i1 } %1046, 0
%1048 = extractvalue { i64, i1 } %1046, 1
%.47.i.i838 = zext i1 %1048 to i64
store i64 %1047, i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%1049 = add i32 %8, -1
%1050 = mul i32 %7, 2
%1051 = add i32 %1050, -1
%1052 = add i32 %1050, -2
%xtraiter1271 = and i32 %1051, 1
%lcmp.mod1272 = icmp ne i32 %xtraiter1271, 0
br i1 %lcmp.mod1272, label %next-block.i.i850.prol, label %join22.split
next-block.i.i850.prol: ; preds = %join22
%1053 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%1054 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 1
%xl.sroa.0.0..sroa_idx.i.i844.prol = getelementptr inbounds %"ll::limb::Limb"* %1053, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i845.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i844.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i846.prol = getelementptr inbounds %"ll::limb::Limb"* %1054, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i847.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i846.prol, align 8
%1055 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i845.prol, i64 %yl.sroa.0.0.copyload.i.i847.prol) #20
%1056 = extractvalue { i64, i1 } %1055, 0
%1057 = extractvalue { i64, i1 } %1055, 1
%1058 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1056, i64 %.47.i.i838) #20
%1059 = extractvalue { i64, i1 } %1058, 0
%1060 = extractvalue { i64, i1 } %1058, 1
%1061 = or i1 %1057, %1060
%..i.i848.prol = zext i1 %1061 to i64
store i64 %1059, i64* %xl.sroa.0.0..sroa_idx.i.i844.prol, align 8
%1062 = add i32 %1049, -1
%1063 = icmp eq i32 %1062, 0
br label %join22.split
join22.split: ; preds = %next-block.i.i850.prol, %join22
%..i.i848.lcssa.unr = phi i64 [ 0, %join22 ], [ %..i.i848.prol, %next-block.i.i850.prol ]
%.unr1273 = phi i32 [ %1049, %join22 ], [ %1062, %next-block.i.i850.prol ]
%.52.i.i840.unr = phi i64 [ %.47.i.i838, %join22 ], [ %..i.i848.prol, %next-block.i.i850.prol ]
%wp.051.i.i841.unr = phi %"ll::limb::Limb"* [ %807, %join22 ], [ %1053, %next-block.i.i850.prol ]
%yp.049.i.i843.unr = phi %"ll::limb::Limb"* [ %0, %join22 ], [ %1054, %next-block.i.i850.prol ]
%1064 = icmp ult i32 %1052, 1
br i1 %1064, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852, label %join22.split.split
join22.split.split: ; preds = %join22.split
br label %next-block.i.i850
next-block.i.i850: ; preds = %next-block.i.i850, %join22.split.split
%1065 = phi i32 [ %.unr1273, %join22.split.split ], [ %1085, %next-block.i.i850 ]
%.52.i.i840 = phi i64 [ %.52.i.i840.unr, %join22.split.split ], [ %..i.i848.1, %next-block.i.i850 ]
%wp.051.i.i841 = phi %"ll::limb::Limb"* [ %wp.051.i.i841.unr, %join22.split.split ], [ %1076, %next-block.i.i850 ]
%yp.049.i.i843 = phi %"ll::limb::Limb"* [ %yp.049.i.i843.unr, %join22.split.split ], [ %1077, %next-block.i.i850 ]
%1066 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i841, i64 1
%1067 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i843, i64 1
%xl.sroa.0.0..sroa_idx.i.i844 = getelementptr inbounds %"ll::limb::Limb"* %1066, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i845 = load i64* %xl.sroa.0.0..sroa_idx.i.i844, align 8
%yl.sroa.0.0..sroa_idx.i.i846 = getelementptr inbounds %"ll::limb::Limb"* %1067, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i847 = load i64* %yl.sroa.0.0..sroa_idx.i.i846, align 8
%1068 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i845, i64 %yl.sroa.0.0.copyload.i.i847) #20
%1069 = extractvalue { i64, i1 } %1068, 0
%1070 = extractvalue { i64, i1 } %1068, 1
%1071 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1069, i64 %.52.i.i840) #20
%1072 = extractvalue { i64, i1 } %1071, 0
%1073 = extractvalue { i64, i1 } %1071, 1
%1074 = or i1 %1070, %1073
%..i.i848 = zext i1 %1074 to i64
store i64 %1072, i64* %xl.sroa.0.0..sroa_idx.i.i844, align 8
%1075 = add i32 %1065, -1
%1076 = getelementptr inbounds %"ll::limb::Limb"* %1066, i64 1
%1077 = getelementptr inbounds %"ll::limb::Limb"* %1067, i64 1
%xl.sroa.0.0..sroa_idx.i.i844.1 = getelementptr inbounds %"ll::limb::Limb"* %1076, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i845.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i844.1, align 8
%yl.sroa.0.0..sroa_idx.i.i846.1 = getelementptr inbounds %"ll::limb::Limb"* %1077, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i847.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i846.1, align 8
%1078 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i845.1, i64 %yl.sroa.0.0.copyload.i.i847.1) #20
%1079 = extractvalue { i64, i1 } %1078, 0
%1080 = extractvalue { i64, i1 } %1078, 1
%1081 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1079, i64 %..i.i848) #20
%1082 = extractvalue { i64, i1 } %1081, 0
%1083 = extractvalue { i64, i1 } %1081, 1
%1084 = or i1 %1080, %1083
%..i.i848.1 = zext i1 %1084 to i64
store i64 %1082, i64* %xl.sroa.0.0..sroa_idx.i.i844.1, align 8
%1085 = add i32 %1075, -1
%1086 = icmp eq i32 %1085, 0
br i1 %1086, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852.unr-lcssa, label %next-block.i.i850
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852.unr-lcssa: ; preds = %next-block.i.i850
%..i.i848.lcssa.ph = phi i64 [ %..i.i848.1, %next-block.i.i850 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852: ; preds = %join22.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852.unr-lcssa
%..i.i848.lcssa = phi i64 [ %..i.i848.lcssa.unr, %join22.split ], [ %..i.i848.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852.unr-lcssa ]
%1087 = load i64* %winf0.sroa.0.0..sroa_idx, align 8
%1088 = sub i64 %1087, %..i.i848.lcssa
store i64 %1088, i64* %winf0.sroa.0.0..sroa_idx, align 8
%xl.sroa.0.0.copyload44.i.i854 = load i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%yl.sroa.0.0.copyload46.i.i856 = load i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%1089 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i854, i64 %yl.sroa.0.0.copyload46.i.i856) #20
%1090 = extractvalue { i64, i1 } %1089, 0
store i64 %1090, i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%1091 = add i32 %810, -1
%1092 = icmp eq i32 %1091, 0
br i1 %1092, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit871.thread, label %next-block.i.i869.preheader
next-block.i.i869.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852
%1093 = extractvalue { i64, i1 } %1089, 1
%.47.i.i857 = zext i1 %1093 to i64
%1094 = mul i32 %7, 2
%1095 = add i32 %1094, -1
%xtraiter1268 = and i32 %1094, 1
%lcmp.mod1269 = icmp ne i32 %xtraiter1268, 0
br i1 %lcmp.mod1269, label %next-block.i.i869.prol, label %next-block.i.i869.preheader.split
next-block.i.i869.prol: ; preds = %next-block.i.i869.preheader
%1096 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 1
%1097 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%xl.sroa.0.0..sroa_idx.i.i863.prol = getelementptr inbounds %"ll::limb::Limb"* %1096, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i864.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i863.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i865.prol = getelementptr inbounds %"ll::limb::Limb"* %1097, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i866.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i865.prol, align 8
%1098 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i864.prol, i64 %yl.sroa.0.0.copyload.i.i866.prol) #20
%1099 = extractvalue { i64, i1 } %1098, 0
%1100 = extractvalue { i64, i1 } %1098, 1
%1101 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1099, i64 %.47.i.i857) #20
%1102 = extractvalue { i64, i1 } %1101, 0
%1103 = extractvalue { i64, i1 } %1101, 1
%1104 = or i1 %1100, %1103
%..i.i867.prol = zext i1 %1104 to i64
store i64 %1102, i64* %xl.sroa.0.0..sroa_idx.i.i863.prol, align 8
%1105 = add i32 %1091, -1
%1106 = icmp eq i32 %1105, 0
br label %next-block.i.i869.preheader.split
next-block.i.i869.preheader.split: ; preds = %next-block.i.i869.prol, %next-block.i.i869.preheader
%.unr1270 = phi i32 [ %1091, %next-block.i.i869.preheader ], [ %1105, %next-block.i.i869.prol ]
%.52.i.i859.unr = phi i64 [ %.47.i.i857, %next-block.i.i869.preheader ], [ %..i.i867.prol, %next-block.i.i869.prol ]
%wp.051.i.i860.unr = phi %"ll::limb::Limb"* [ %812, %next-block.i.i869.preheader ], [ %1096, %next-block.i.i869.prol ]
%yp.049.i.i862.unr = phi %"ll::limb::Limb"* [ %807, %next-block.i.i869.preheader ], [ %1097, %next-block.i.i869.prol ]
%1107 = icmp ult i32 %1095, 1
br i1 %1107, label %while_body.lr.ph.i876, label %next-block.i.i869.preheader.split.split
next-block.i.i869.preheader.split.split: ; preds = %next-block.i.i869.preheader.split
br label %next-block.i.i869
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit871.thread: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit852
%low_limb.sroa.0.042.i8741112 = lshr i64 %1090, 1
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit892
next-block.i.i869: ; preds = %next-block.i.i869, %next-block.i.i869.preheader.split.split
%1108 = phi i32 [ %.unr1270, %next-block.i.i869.preheader.split.split ], [ %1128, %next-block.i.i869 ]
%.52.i.i859 = phi i64 [ %.52.i.i859.unr, %next-block.i.i869.preheader.split.split ], [ %..i.i867.1, %next-block.i.i869 ]
%wp.051.i.i860 = phi %"ll::limb::Limb"* [ %wp.051.i.i860.unr, %next-block.i.i869.preheader.split.split ], [ %1119, %next-block.i.i869 ]
%yp.049.i.i862 = phi %"ll::limb::Limb"* [ %yp.049.i.i862.unr, %next-block.i.i869.preheader.split.split ], [ %1120, %next-block.i.i869 ]
%1109 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i860, i64 1
%1110 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i862, i64 1
%xl.sroa.0.0..sroa_idx.i.i863 = getelementptr inbounds %"ll::limb::Limb"* %1109, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i864 = load i64* %xl.sroa.0.0..sroa_idx.i.i863, align 8
%yl.sroa.0.0..sroa_idx.i.i865 = getelementptr inbounds %"ll::limb::Limb"* %1110, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i866 = load i64* %yl.sroa.0.0..sroa_idx.i.i865, align 8
%1111 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i864, i64 %yl.sroa.0.0.copyload.i.i866) #20
%1112 = extractvalue { i64, i1 } %1111, 0
%1113 = extractvalue { i64, i1 } %1111, 1
%1114 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1112, i64 %.52.i.i859) #20
%1115 = extractvalue { i64, i1 } %1114, 0
%1116 = extractvalue { i64, i1 } %1114, 1
%1117 = or i1 %1113, %1116
%..i.i867 = zext i1 %1117 to i64
store i64 %1115, i64* %xl.sroa.0.0..sroa_idx.i.i863, align 8
%1118 = add i32 %1108, -1
%1119 = getelementptr inbounds %"ll::limb::Limb"* %1109, i64 1
%1120 = getelementptr inbounds %"ll::limb::Limb"* %1110, i64 1
%xl.sroa.0.0..sroa_idx.i.i863.1 = getelementptr inbounds %"ll::limb::Limb"* %1119, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i864.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i863.1, align 8
%yl.sroa.0.0..sroa_idx.i.i865.1 = getelementptr inbounds %"ll::limb::Limb"* %1120, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i866.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i865.1, align 8
%1121 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i864.1, i64 %yl.sroa.0.0.copyload.i.i866.1) #20
%1122 = extractvalue { i64, i1 } %1121, 0
%1123 = extractvalue { i64, i1 } %1121, 1
%1124 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1122, i64 %..i.i867) #20
%1125 = extractvalue { i64, i1 } %1124, 0
%1126 = extractvalue { i64, i1 } %1124, 1
%1127 = or i1 %1123, %1126
%..i.i867.1 = zext i1 %1127 to i64
store i64 %1125, i64* %xl.sroa.0.0..sroa_idx.i.i863.1, align 8
%1128 = add i32 %1118, -1
%1129 = icmp eq i32 %1128, 0
br i1 %1129, label %while_body.lr.ph.i876.unr-lcssa, label %next-block.i.i869
while_body.lr.ph.i876.unr-lcssa: ; preds = %next-block.i.i869
br label %while_body.lr.ph.i876
while_body.lr.ph.i876: ; preds = %next-block.i.i869.preheader.split, %while_body.lr.ph.i876.unr-lcssa
%h.sroa.0.0.copyload.i873 = load i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%low_limb.sroa.0.042.i874 = lshr i64 %h.sroa.0.0.copyload.i873, 1
%1130 = add i32 %810, -2
%1131 = mul i32 %7, 2
%1132 = add i32 %1131, -1
%xtraiter1266 = and i32 %1131, 3
%lcmp.mod1267 = icmp ne i32 %xtraiter1266, 0
br i1 %lcmp.mod1267, label %while_body.i891.prol, label %while_body.lr.ph.i876.split
while_body.i891.prol: ; preds = %while_body.i891.prol, %while_body.lr.ph.i876
%xs.047.i882.prol = phi i32 [ %1091, %while_body.lr.ph.i876 ], [ %xs.0.i890.prol, %while_body.i891.prol ]
%low_limb.sroa.0.046.i883.prol = phi i64 [ %low_limb.sroa.0.042.i874, %while_body.lr.ph.i876 ], [ %low_limb.sroa.0.0.i889.prol, %while_body.i891.prol ]
%.pn.i884.prol = phi %"ll::limb::Limb"* [ %812, %while_body.lr.ph.i876 ], [ %xp.045.i886.prol, %while_body.i891.prol ]
%prol.iter = phi i32 [ %xtraiter1266, %while_body.lr.ph.i876 ], [ %prol.iter.sub, %while_body.i891.prol ]
%xp.045.i886.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.i884.prol, i64 1
%high.sroa.0.0..sroa_idx.i887.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.prol, i64 0, i32 0
%high.sroa.0.0.copyload.i888.prol = load i64* %high.sroa.0.0..sroa_idx.i887.prol, align 8
%1133 = shl i64 %high.sroa.0.0.copyload.i888.prol, 63
%1134 = or i64 %1133, %low_limb.sroa.0.046.i883.prol
%1135 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i884.prol, i64 0, i32 0
store i64 %1134, i64* %1135, align 8
%low_limb.sroa.0.0.i889.prol = lshr i64 %high.sroa.0.0.copyload.i888.prol, 1
%xs.0.i890.prol = add i32 %xs.047.i882.prol, -1
%1136 = icmp eq i32 %xs.0.i890.prol, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i891.prol, label %while_body.lr.ph.i876.split, !llvm.loop !127
while_body.lr.ph.i876.split: ; preds = %while_body.i891.prol, %while_body.lr.ph.i876
%low_limb.sroa.0.0.i889.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i876 ], [ %low_limb.sroa.0.0.i889.prol, %while_body.i891.prol ]
%xs.047.i882.unr = phi i32 [ %1091, %while_body.lr.ph.i876 ], [ %xs.0.i890.prol, %while_body.i891.prol ]
%low_limb.sroa.0.046.i883.unr = phi i64 [ %low_limb.sroa.0.042.i874, %while_body.lr.ph.i876 ], [ %low_limb.sroa.0.0.i889.prol, %while_body.i891.prol ]
%.pn.i884.unr = phi %"ll::limb::Limb"* [ %812, %while_body.lr.ph.i876 ], [ %xp.045.i886.prol, %while_body.i891.prol ]
%1137 = icmp ult i32 %1132, 3
br i1 %1137, label %while_cond.while_exit_crit_edge.i878, label %while_body.lr.ph.i876.split.split
while_body.lr.ph.i876.split.split: ; preds = %while_body.lr.ph.i876.split
br label %while_body.i891
while_cond.while_exit_crit_edge.i878.unr-lcssa: ; preds = %while_body.i891
%low_limb.sroa.0.0.i889.lcssa.ph = phi i64 [ %low_limb.sroa.0.0.i889.3, %while_body.i891 ]
br label %while_cond.while_exit_crit_edge.i878
while_cond.while_exit_crit_edge.i878: ; preds = %while_body.lr.ph.i876.split, %while_cond.while_exit_crit_edge.i878.unr-lcssa
%low_limb.sroa.0.0.i889.lcssa = phi i64 [ %low_limb.sroa.0.0.i889.lcssa.unr, %while_body.lr.ph.i876.split ], [ %low_limb.sroa.0.0.i889.lcssa.ph, %while_cond.while_exit_crit_edge.i878.unr-lcssa ]
%1138 = zext i32 %1130 to i64
%1139 = add nsw i64 %811, 1
%.sum1123 = add nsw i64 %1139, %1138
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit892
while_body.i891: ; preds = %while_body.i891, %while_body.lr.ph.i876.split.split
%xs.047.i882 = phi i32 [ %xs.047.i882.unr, %while_body.lr.ph.i876.split.split ], [ %xs.0.i890.3, %while_body.i891 ]
%low_limb.sroa.0.046.i883 = phi i64 [ %low_limb.sroa.0.046.i883.unr, %while_body.lr.ph.i876.split.split ], [ %low_limb.sroa.0.0.i889.3, %while_body.i891 ]
%.pn.i884 = phi %"ll::limb::Limb"* [ %.pn.i884.unr, %while_body.lr.ph.i876.split.split ], [ %xp.045.i886.3, %while_body.i891 ]
%xp.045.i886 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i884, i64 1
%high.sroa.0.0..sroa_idx.i887 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886, i64 0, i32 0
%high.sroa.0.0.copyload.i888 = load i64* %high.sroa.0.0..sroa_idx.i887, align 8
%1140 = shl i64 %high.sroa.0.0.copyload.i888, 63
%1141 = or i64 %1140, %low_limb.sroa.0.046.i883
%1142 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i884, i64 0, i32 0
store i64 %1141, i64* %1142, align 8
%low_limb.sroa.0.0.i889 = lshr i64 %high.sroa.0.0.copyload.i888, 1
%xs.0.i890 = add i32 %xs.047.i882, -1
%xp.045.i886.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886, i64 1
%high.sroa.0.0..sroa_idx.i887.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.1, i64 0, i32 0
%high.sroa.0.0.copyload.i888.1 = load i64* %high.sroa.0.0..sroa_idx.i887.1, align 8
%1143 = shl i64 %high.sroa.0.0.copyload.i888.1, 63
%1144 = or i64 %1143, %low_limb.sroa.0.0.i889
%1145 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886, i64 0, i32 0
store i64 %1144, i64* %1145, align 8
%low_limb.sroa.0.0.i889.1 = lshr i64 %high.sroa.0.0.copyload.i888.1, 1
%xs.0.i890.1 = add i32 %xs.0.i890, -1
%xp.045.i886.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.1, i64 1
%high.sroa.0.0..sroa_idx.i887.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.2, i64 0, i32 0
%high.sroa.0.0.copyload.i888.2 = load i64* %high.sroa.0.0..sroa_idx.i887.2, align 8
%1146 = shl i64 %high.sroa.0.0.copyload.i888.2, 63
%1147 = or i64 %1146, %low_limb.sroa.0.0.i889.1
%1148 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.1, i64 0, i32 0
store i64 %1147, i64* %1148, align 8
%low_limb.sroa.0.0.i889.2 = lshr i64 %high.sroa.0.0.copyload.i888.2, 1
%xs.0.i890.2 = add i32 %xs.0.i890.1, -1
%xp.045.i886.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.2, i64 1
%high.sroa.0.0..sroa_idx.i887.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.3, i64 0, i32 0
%high.sroa.0.0.copyload.i888.3 = load i64* %high.sroa.0.0..sroa_idx.i887.3, align 8
%1149 = shl i64 %high.sroa.0.0.copyload.i888.3, 63
%1150 = or i64 %1149, %low_limb.sroa.0.0.i889.2
%1151 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i886.2, i64 0, i32 0
store i64 %1150, i64* %1151, align 8
%low_limb.sroa.0.0.i889.3 = lshr i64 %high.sroa.0.0.copyload.i888.3, 1
%xs.0.i890.3 = add i32 %xs.0.i890.2, -1
%1152 = icmp eq i32 %xs.0.i890.3, 0
br i1 %1152, label %while_cond.while_exit_crit_edge.i878.unr-lcssa, label %while_body.i891
_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit892: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit871.thread, %while_cond.while_exit_crit_edge.i878
%low_limb.sroa.0.0.lcssa.i879 = phi i64 [ %low_limb.sroa.0.0.i889.lcssa, %while_cond.while_exit_crit_edge.i878 ], [ %low_limb.sroa.0.042.i8741112, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit871.thread ]
%1153 = phi i64 [ %.sum1123, %while_cond.while_exit_crit_edge.i878 ], [ %811, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit871.thread ]
%low_limb.sroa.0.0..sroa_idx.i881 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %1153, i32 0
store i64 %low_limb.sroa.0.0.lcssa.i879, i64* %low_limb.sroa.0.0..sroa_idx.i881, align 8
%xl.sroa.0.0.copyload44.i.i894 = load i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%yl.sroa.0.0.copyload46.i.i896 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%1154 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i894, i64 %yl.sroa.0.0.copyload46.i.i896) #20
%1155 = extractvalue { i64, i1 } %1154, 0
store i64 %1155, i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
br i1 %1092, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911, label %next-block.i.i909.preheader
next-block.i.i909.preheader: ; preds = %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit892
%1156 = extractvalue { i64, i1 } %1154, 1
%.47.i.i897 = zext i1 %1156 to i64
%1157 = mul i32 %7, 2
%1158 = add i32 %1157, -1
%xtraiter1263 = and i32 %1157, 1
%lcmp.mod1264 = icmp ne i32 %xtraiter1263, 0
br i1 %lcmp.mod1264, label %next-block.i.i909.prol, label %next-block.i.i909.preheader.split
next-block.i.i909.prol: ; preds = %next-block.i.i909.preheader
%1159 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%1160 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i903.prol = getelementptr inbounds %"ll::limb::Limb"* %1159, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i904.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i903.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i905.prol = getelementptr inbounds %"ll::limb::Limb"* %1160, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i906.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i905.prol, align 8
%1161 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i904.prol, i64 %yl.sroa.0.0.copyload.i.i906.prol) #20
%1162 = extractvalue { i64, i1 } %1161, 0
%1163 = extractvalue { i64, i1 } %1161, 1
%1164 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1162, i64 %.47.i.i897) #20
%1165 = extractvalue { i64, i1 } %1164, 0
%1166 = extractvalue { i64, i1 } %1164, 1
%1167 = or i1 %1163, %1166
%..i.i907.prol = zext i1 %1167 to i64
store i64 %1165, i64* %xl.sroa.0.0..sroa_idx.i.i903.prol, align 8
%1168 = add i32 %1091, -1
%1169 = icmp eq i32 %1168, 0
br label %next-block.i.i909.preheader.split
next-block.i.i909.preheader.split: ; preds = %next-block.i.i909.prol, %next-block.i.i909.preheader
%.unr1265 = phi i32 [ %1091, %next-block.i.i909.preheader ], [ %1168, %next-block.i.i909.prol ]
%.52.i.i899.unr = phi i64 [ %.47.i.i897, %next-block.i.i909.preheader ], [ %..i.i907.prol, %next-block.i.i909.prol ]
%wp.051.i.i900.unr = phi %"ll::limb::Limb"* [ %807, %next-block.i.i909.preheader ], [ %1159, %next-block.i.i909.prol ]
%yp.049.i.i902.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i909.preheader ], [ %1160, %next-block.i.i909.prol ]
%1170 = icmp ult i32 %1158, 1
br i1 %1170, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit, label %next-block.i.i909.preheader.split.split
next-block.i.i909.preheader.split.split: ; preds = %next-block.i.i909.preheader.split
br label %next-block.i.i909
next-block.i.i909: ; preds = %next-block.i.i909, %next-block.i.i909.preheader.split.split
%1171 = phi i32 [ %.unr1265, %next-block.i.i909.preheader.split.split ], [ %1191, %next-block.i.i909 ]
%.52.i.i899 = phi i64 [ %.52.i.i899.unr, %next-block.i.i909.preheader.split.split ], [ %..i.i907.1, %next-block.i.i909 ]
%wp.051.i.i900 = phi %"ll::limb::Limb"* [ %wp.051.i.i900.unr, %next-block.i.i909.preheader.split.split ], [ %1182, %next-block.i.i909 ]
%yp.049.i.i902 = phi %"ll::limb::Limb"* [ %yp.049.i.i902.unr, %next-block.i.i909.preheader.split.split ], [ %1183, %next-block.i.i909 ]
%1172 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i900, i64 1
%1173 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i902, i64 1
%xl.sroa.0.0..sroa_idx.i.i903 = getelementptr inbounds %"ll::limb::Limb"* %1172, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i904 = load i64* %xl.sroa.0.0..sroa_idx.i.i903, align 8
%yl.sroa.0.0..sroa_idx.i.i905 = getelementptr inbounds %"ll::limb::Limb"* %1173, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i906 = load i64* %yl.sroa.0.0..sroa_idx.i.i905, align 8
%1174 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i904, i64 %yl.sroa.0.0.copyload.i.i906) #20
%1175 = extractvalue { i64, i1 } %1174, 0
%1176 = extractvalue { i64, i1 } %1174, 1
%1177 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1175, i64 %.52.i.i899) #20
%1178 = extractvalue { i64, i1 } %1177, 0
%1179 = extractvalue { i64, i1 } %1177, 1
%1180 = or i1 %1176, %1179
%..i.i907 = zext i1 %1180 to i64
store i64 %1178, i64* %xl.sroa.0.0..sroa_idx.i.i903, align 8
%1181 = add i32 %1171, -1
%1182 = getelementptr inbounds %"ll::limb::Limb"* %1172, i64 1
%1183 = getelementptr inbounds %"ll::limb::Limb"* %1173, i64 1
%xl.sroa.0.0..sroa_idx.i.i903.1 = getelementptr inbounds %"ll::limb::Limb"* %1182, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i904.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i903.1, align 8
%yl.sroa.0.0..sroa_idx.i.i905.1 = getelementptr inbounds %"ll::limb::Limb"* %1183, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i906.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i905.1, align 8
%1184 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i904.1, i64 %yl.sroa.0.0.copyload.i.i906.1) #20
%1185 = extractvalue { i64, i1 } %1184, 0
%1186 = extractvalue { i64, i1 } %1184, 1
%1187 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1185, i64 %..i.i907) #20
%1188 = extractvalue { i64, i1 } %1187, 0
%1189 = extractvalue { i64, i1 } %1187, 1
%1190 = or i1 %1186, %1189
%..i.i907.1 = zext i1 %1190 to i64
store i64 %1188, i64* %xl.sroa.0.0..sroa_idx.i.i903.1, align 8
%1191 = add i32 %1181, -1
%1192 = icmp eq i32 %1191, 0
br i1 %1192, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit.unr-lcssa, label %next-block.i.i909
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit.unr-lcssa: ; preds = %next-block.i.i909
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit: ; preds = %next-block.i.i909.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit.unr-lcssa
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911.loopexit, %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit892
%xl.sroa.0.0.copyload44.i.i913 = load i64* %566, align 8
%yl.sroa.0.0.copyload46.i.i915 = load i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%1193 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i913, i64 %yl.sroa.0.0.copyload46.i.i915) #20
%1194 = extractvalue { i64, i1 } %1193, 0
%1195 = extractvalue { i64, i1 } %1193, 1
%.47.i.i916 = zext i1 %1195 to i64
store i64 %1194, i64* %566, align 8
br i1 %1092, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930, label %next-block.i.i928.preheader
next-block.i.i928.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911
%1196 = mul i32 %7, 2
%1197 = add i32 %1196, -1
%xtraiter1260 = and i32 %1196, 1
%lcmp.mod1261 = icmp ne i32 %xtraiter1260, 0
br i1 %lcmp.mod1261, label %next-block.i.i928.prol, label %next-block.i.i928.preheader.split
next-block.i.i928.prol: ; preds = %next-block.i.i928.preheader
%1198 = getelementptr inbounds %"ll::limb::Limb"* %565, i64 1
%1199 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 1
%xl.sroa.0.0..sroa_idx.i.i922.prol = getelementptr inbounds %"ll::limb::Limb"* %1198, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i923.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i922.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i924.prol = getelementptr inbounds %"ll::limb::Limb"* %1199, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i925.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i924.prol, align 8
%1200 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i923.prol, i64 %yl.sroa.0.0.copyload.i.i925.prol) #20
%1201 = extractvalue { i64, i1 } %1200, 0
%1202 = extractvalue { i64, i1 } %1200, 1
%1203 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1201, i64 %.47.i.i916) #20
%1204 = extractvalue { i64, i1 } %1203, 0
%1205 = extractvalue { i64, i1 } %1203, 1
%1206 = or i1 %1202, %1205
%..i.i926.prol = zext i1 %1206 to i64
store i64 %1204, i64* %xl.sroa.0.0..sroa_idx.i.i922.prol, align 8
%1207 = add i32 %1091, -1
%1208 = icmp eq i32 %1207, 0
br label %next-block.i.i928.preheader.split
next-block.i.i928.preheader.split: ; preds = %next-block.i.i928.prol, %next-block.i.i928.preheader
%..i.i926.lcssa.unr = phi i64 [ 0, %next-block.i.i928.preheader ], [ %..i.i926.prol, %next-block.i.i928.prol ]
%.unr1262 = phi i32 [ %1091, %next-block.i.i928.preheader ], [ %1207, %next-block.i.i928.prol ]
%.52.i.i918.unr = phi i64 [ %.47.i.i916, %next-block.i.i928.preheader ], [ %..i.i926.prol, %next-block.i.i928.prol ]
%wp.051.i.i919.unr = phi %"ll::limb::Limb"* [ %565, %next-block.i.i928.preheader ], [ %1198, %next-block.i.i928.prol ]
%yp.049.i.i921.unr = phi %"ll::limb::Limb"* [ %5, %next-block.i.i928.preheader ], [ %1199, %next-block.i.i928.prol ]
%1209 = icmp ult i32 %1197, 1
br i1 %1209, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit, label %next-block.i.i928.preheader.split.split
next-block.i.i928.preheader.split.split: ; preds = %next-block.i.i928.preheader.split
br label %next-block.i.i928
next-block.i.i928: ; preds = %next-block.i.i928, %next-block.i.i928.preheader.split.split
%1210 = phi i32 [ %.unr1262, %next-block.i.i928.preheader.split.split ], [ %1230, %next-block.i.i928 ]
%.52.i.i918 = phi i64 [ %.52.i.i918.unr, %next-block.i.i928.preheader.split.split ], [ %..i.i926.1, %next-block.i.i928 ]
%wp.051.i.i919 = phi %"ll::limb::Limb"* [ %wp.051.i.i919.unr, %next-block.i.i928.preheader.split.split ], [ %1221, %next-block.i.i928 ]
%yp.049.i.i921 = phi %"ll::limb::Limb"* [ %yp.049.i.i921.unr, %next-block.i.i928.preheader.split.split ], [ %1222, %next-block.i.i928 ]
%1211 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i919, i64 1
%1212 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i921, i64 1
%xl.sroa.0.0..sroa_idx.i.i922 = getelementptr inbounds %"ll::limb::Limb"* %1211, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i923 = load i64* %xl.sroa.0.0..sroa_idx.i.i922, align 8
%yl.sroa.0.0..sroa_idx.i.i924 = getelementptr inbounds %"ll::limb::Limb"* %1212, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i925 = load i64* %yl.sroa.0.0..sroa_idx.i.i924, align 8
%1213 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i923, i64 %yl.sroa.0.0.copyload.i.i925) #20
%1214 = extractvalue { i64, i1 } %1213, 0
%1215 = extractvalue { i64, i1 } %1213, 1
%1216 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1214, i64 %.52.i.i918) #20
%1217 = extractvalue { i64, i1 } %1216, 0
%1218 = extractvalue { i64, i1 } %1216, 1
%1219 = or i1 %1215, %1218
%..i.i926 = zext i1 %1219 to i64
store i64 %1217, i64* %xl.sroa.0.0..sroa_idx.i.i922, align 8
%1220 = add i32 %1210, -1
%1221 = getelementptr inbounds %"ll::limb::Limb"* %1211, i64 1
%1222 = getelementptr inbounds %"ll::limb::Limb"* %1212, i64 1
%xl.sroa.0.0..sroa_idx.i.i922.1 = getelementptr inbounds %"ll::limb::Limb"* %1221, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i923.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i922.1, align 8
%yl.sroa.0.0..sroa_idx.i.i924.1 = getelementptr inbounds %"ll::limb::Limb"* %1222, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i925.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i924.1, align 8
%1223 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i923.1, i64 %yl.sroa.0.0.copyload.i.i925.1) #20
%1224 = extractvalue { i64, i1 } %1223, 0
%1225 = extractvalue { i64, i1 } %1223, 1
%1226 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1224, i64 %..i.i926) #20
%1227 = extractvalue { i64, i1 } %1226, 0
%1228 = extractvalue { i64, i1 } %1226, 1
%1229 = or i1 %1225, %1228
%..i.i926.1 = zext i1 %1229 to i64
store i64 %1227, i64* %xl.sroa.0.0..sroa_idx.i.i922.1, align 8
%1230 = add i32 %1220, -1
%1231 = icmp eq i32 %1230, 0
br i1 %1231, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit.unr-lcssa, label %next-block.i.i928
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit.unr-lcssa: ; preds = %next-block.i.i928
%..i.i926.lcssa.ph = phi i64 [ %..i.i926.1, %next-block.i.i928 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit: ; preds = %next-block.i.i928.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit.unr-lcssa
%..i.i926.lcssa = phi i64 [ %..i.i926.lcssa.unr, %next-block.i.i928.preheader.split ], [ %..i.i926.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911
%..lcssa.i.i929 = phi i64 [ %.47.i.i916, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit911 ], [ %..i.i926.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930.loopexit ]
%1232 = add i32 %810, %7
%1233 = sext i32 %1232 to i64
%1234 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %1233
%1235 = getelementptr inbounds %"ll::limb::Limb"* %1234, i64 0, i32 0
%1236 = load i64* %1235, align 8
%1237 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1236, i64 %..lcssa.i.i929) #20
%1238 = extractvalue { i64, i1 } %1237, 0
%1239 = extractvalue { i64, i1 } %1237, 1
store i64 %1238, i64* %1235, align 8
br i1 %1239, label %while_body.i931.preheader, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
while_body.i931.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930
br label %while_body.i931
while_body.i931: ; preds = %while_body.i931.preheader, %while_body.i931
%ptr.023.i = phi %"ll::limb::Limb"* [ %1240, %while_body.i931 ], [ %1234, %while_body.i931.preheader ]
%1240 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i, i64 1
%1241 = getelementptr inbounds %"ll::limb::Limb"* %1240, i64 0, i32 0
%1242 = load i64* %1241, align 8
%1243 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1242, i64 1) #20
%1244 = extractvalue { i64, i1 } %1243, 0
%1245 = extractvalue { i64, i1 } %1243, 1
store i64 %1244, i64* %1241, align 8
br i1 %1245, label %while_body.i931, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit: ; preds = %while_body.i931
br label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit: ; preds = %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit930
%saved.sroa.0.0.copyload = load i64* %winf0.sroa.0.0..sroa_idx, align 8
store i64 %winf0.sroa.0.0.copyload, i64* %winf0.sroa.0.0..sroa_idx, align 8
br label %loop_body.i.i
loop_body.i.i: ; preds = %next-block.i.i934, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit
%xl.sroa.0.0.copyload.i.i933 = phi i64 [ %winf0.sroa.0.0.copyload, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit ], [ %xl.sroa.0.0.copyload.i.i933.pre, %next-block.i.i934 ]
%cl.sroa.0.0.i.i = phi i64 [ 0, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit ], [ %1260, %next-block.i.i934 ]
%n.0.i.i = phi i32 [ %836, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit ], [ %1261, %next-block.i.i934 ]
%xp.0.i.i = phi %"ll::limb::Limb"* [ %809, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit ], [ %1264, %next-block.i.i934 ]
%wp.0.i.i = phi %"ll::limb::Limb"* [ %812, %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit ], [ %1263, %next-block.i.i934 ]
%1246 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i933, i64 2) #20, !noalias !128, !srcloc !19
%1247 = extractvalue { i64, i64 } %1246, 0
%1248 = extractvalue { i64, i64 } %1246, 1
%1249 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1248, i64 %cl.sroa.0.0.i.i) #20
%1250 = extractvalue { i64, i1 } %1249, 0
%1251 = extractvalue { i64, i1 } %1249, 1
%1252 = zext i1 %1251 to i64
%1253 = add i64 %1252, %1247
%1254 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i.i, i64 0, i32 0
%1255 = load i64* %1254, align 8
%1256 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1255, i64 %1250) #20
%1257 = extractvalue { i64, i1 } %1256, 0
%1258 = extractvalue { i64, i1 } %1256, 1
%1259 = zext i1 %1258 to i64
%1260 = add i64 %1253, %1259
store i64 %1257, i64* %1254, align 8
%1261 = add i32 %n.0.i.i, -1
%1262 = icmp eq i32 %1261, 0
br i1 %1262, label %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit, label %next-block.i.i934
next-block.i.i934: ; preds = %loop_body.i.i
%1263 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i.i, i64 1
%1264 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i932.phi.trans.insert = getelementptr inbounds %"ll::limb::Limb"* %1264, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i933.pre = load i64* %xl.sroa.0.0..sroa_idx.i.i932.phi.trans.insert, align 8
br label %loop_body.i.i
_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit: ; preds = %loop_body.i.i
%.lcssa = phi i64 [ %1260, %loop_body.i.i ]
%1265 = sext i32 %836 to i64
%.sum1124 = add nsw i64 %1265, %811
%1266 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1124
%1267 = getelementptr inbounds %"ll::limb::Limb"* %1266, i64 0, i32 0
%1268 = load i64* %1267, align 8
%1269 = sub i64 %1268, %.lcssa
store i64 %1269, i64* %1267, align 8
%1270 = icmp ult i64 %1268, %.lcssa
br i1 %1270, label %loop_body.i935.preheader, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit
loop_body.i935.preheader: ; preds = %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit
br label %loop_body.i935
loop_body.i935: ; preds = %loop_body.i935.preheader, %loop_body.i935
%ptr.0.i = phi %"ll::limb::Limb"* [ %1271, %loop_body.i935 ], [ %1266, %loop_body.i935.preheader ]
%1271 = getelementptr inbounds %"ll::limb::Limb"* %ptr.0.i, i64 1
%1272 = getelementptr inbounds %"ll::limb::Limb"* %1271, i64 0, i32 0
%1273 = load i64* %1272, align 8
%1274 = add i64 %1273, -1
store i64 %1274, i64* %1272, align 8
%1275 = icmp eq i64 %1273, 0
br i1 %1275, label %loop_body.i935, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit.loopexit
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit.loopexit: ; preds = %loop_body.i935
br label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit.loopexit, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit
%1276 = icmp sgt i32 %836, %24
%.sum1125 = add nsw i64 %811, %11
%1277 = getelementptr inbounds %"ll::limb::Limb"* %5, i64 %.sum1125
%xl.sroa.0.0.copyload44.i.i937 = load i64* %winf0.sroa.0.0..sroa_idx, align 8
%yl.sroa.0.0..sroa_idx45.i.i938 = getelementptr inbounds %"ll::limb::Limb"* %1277, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i939 = load i64* %yl.sroa.0.0..sroa_idx45.i.i938, align 8
%1278 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i937, i64 %yl.sroa.0.0.copyload46.i.i939) #20
%1279 = extractvalue { i64, i1 } %1278, 0
%1280 = extractvalue { i64, i1 } %1278, 1
%.47.i.i940 = zext i1 %1280 to i64
store i64 %1279, i64* %winf0.sroa.0.0..sroa_idx, align 8
br i1 %1276, label %then-block-3724-, label %else-block32
then-block-3724-: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit
%.off = add i32 %2, 4
%1281 = icmp ult i32 %.off, 5
br i1 %1281, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954, label %next-block.i.i952.preheader
next-block.i.i952.preheader: ; preds = %then-block-3724-
%1282 = add i32 %7, -1
%xtraiter1254 = and i32 %7, 1
%lcmp.mod1255 = icmp ne i32 %xtraiter1254, 0
br i1 %lcmp.mod1255, label %next-block.i.i952.prol, label %next-block.i.i952.preheader.split
next-block.i.i952.prol: ; preds = %next-block.i.i952.preheader
%1283 = getelementptr inbounds %"ll::limb::Limb"* %809, i64 1
%1284 = getelementptr inbounds %"ll::limb::Limb"* %1277, i64 1
%xl.sroa.0.0..sroa_idx.i.i946.prol = getelementptr inbounds %"ll::limb::Limb"* %1283, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i947.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i946.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i948.prol = getelementptr inbounds %"ll::limb::Limb"* %1284, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i949.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i948.prol, align 8
%1285 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i947.prol, i64 %yl.sroa.0.0.copyload.i.i949.prol) #20
%1286 = extractvalue { i64, i1 } %1285, 0
%1287 = extractvalue { i64, i1 } %1285, 1
%1288 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1286, i64 %.47.i.i940) #20
%1289 = extractvalue { i64, i1 } %1288, 0
%1290 = extractvalue { i64, i1 } %1288, 1
%1291 = or i1 %1287, %1290
%..i.i950.prol = zext i1 %1291 to i64
store i64 %1289, i64* %xl.sroa.0.0..sroa_idx.i.i946.prol, align 8
%1292 = add i32 %7, -1
%1293 = icmp eq i32 %1292, 0
br label %next-block.i.i952.preheader.split
next-block.i.i952.preheader.split: ; preds = %next-block.i.i952.prol, %next-block.i.i952.preheader
%..i.i950.lcssa.unr = phi i64 [ 0, %next-block.i.i952.preheader ], [ %..i.i950.prol, %next-block.i.i952.prol ]
%.unr1256 = phi i32 [ %7, %next-block.i.i952.preheader ], [ %1292, %next-block.i.i952.prol ]
%.52.i.i942.unr = phi i64 [ %.47.i.i940, %next-block.i.i952.preheader ], [ %..i.i950.prol, %next-block.i.i952.prol ]
%wp.051.i.i943.unr = phi %"ll::limb::Limb"* [ %809, %next-block.i.i952.preheader ], [ %1283, %next-block.i.i952.prol ]
%yp.049.i.i945.unr = phi %"ll::limb::Limb"* [ %1277, %next-block.i.i952.preheader ], [ %1284, %next-block.i.i952.prol ]
%1294 = icmp ult i32 %1282, 1
br i1 %1294, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit, label %next-block.i.i952.preheader.split.split
next-block.i.i952.preheader.split.split: ; preds = %next-block.i.i952.preheader.split
br label %next-block.i.i952
next-block.i.i952: ; preds = %next-block.i.i952, %next-block.i.i952.preheader.split.split
%1295 = phi i32 [ %.unr1256, %next-block.i.i952.preheader.split.split ], [ %1315, %next-block.i.i952 ]
%.52.i.i942 = phi i64 [ %.52.i.i942.unr, %next-block.i.i952.preheader.split.split ], [ %..i.i950.1, %next-block.i.i952 ]
%wp.051.i.i943 = phi %"ll::limb::Limb"* [ %wp.051.i.i943.unr, %next-block.i.i952.preheader.split.split ], [ %1306, %next-block.i.i952 ]
%yp.049.i.i945 = phi %"ll::limb::Limb"* [ %yp.049.i.i945.unr, %next-block.i.i952.preheader.split.split ], [ %1307, %next-block.i.i952 ]
%1296 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i943, i64 1
%1297 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i945, i64 1
%xl.sroa.0.0..sroa_idx.i.i946 = getelementptr inbounds %"ll::limb::Limb"* %1296, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i947 = load i64* %xl.sroa.0.0..sroa_idx.i.i946, align 8
%yl.sroa.0.0..sroa_idx.i.i948 = getelementptr inbounds %"ll::limb::Limb"* %1297, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i949 = load i64* %yl.sroa.0.0..sroa_idx.i.i948, align 8
%1298 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i947, i64 %yl.sroa.0.0.copyload.i.i949) #20
%1299 = extractvalue { i64, i1 } %1298, 0
%1300 = extractvalue { i64, i1 } %1298, 1
%1301 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1299, i64 %.52.i.i942) #20
%1302 = extractvalue { i64, i1 } %1301, 0
%1303 = extractvalue { i64, i1 } %1301, 1
%1304 = or i1 %1300, %1303
%..i.i950 = zext i1 %1304 to i64
store i64 %1302, i64* %xl.sroa.0.0..sroa_idx.i.i946, align 8
%1305 = add i32 %1295, -1
%1306 = getelementptr inbounds %"ll::limb::Limb"* %1296, i64 1
%1307 = getelementptr inbounds %"ll::limb::Limb"* %1297, i64 1
%xl.sroa.0.0..sroa_idx.i.i946.1 = getelementptr inbounds %"ll::limb::Limb"* %1306, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i947.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i946.1, align 8
%yl.sroa.0.0..sroa_idx.i.i948.1 = getelementptr inbounds %"ll::limb::Limb"* %1307, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i949.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i948.1, align 8
%1308 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i947.1, i64 %yl.sroa.0.0.copyload.i.i949.1) #20
%1309 = extractvalue { i64, i1 } %1308, 0
%1310 = extractvalue { i64, i1 } %1308, 1
%1311 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1309, i64 %..i.i950) #20
%1312 = extractvalue { i64, i1 } %1311, 0
%1313 = extractvalue { i64, i1 } %1311, 1
%1314 = or i1 %1310, %1313
%..i.i950.1 = zext i1 %1314 to i64
store i64 %1312, i64* %xl.sroa.0.0..sroa_idx.i.i946.1, align 8
%1315 = add i32 %1305, -1
%1316 = icmp eq i32 %1315, 0
br i1 %1316, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit.unr-lcssa, label %next-block.i.i952
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit.unr-lcssa: ; preds = %next-block.i.i952
%..i.i950.lcssa.ph = phi i64 [ %..i.i950.1, %next-block.i.i952 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit: ; preds = %next-block.i.i952.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit.unr-lcssa
%..i.i950.lcssa = phi i64 [ %..i.i950.lcssa.unr, %next-block.i.i952.preheader.split ], [ %..i.i950.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit, %then-block-3724-
%..lcssa.i.i953 = phi i64 [ %.47.i.i940, %then-block-3724- ], [ %..i.i950.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954.loopexit ]
%1317 = add i32 %813, 1
%1318 = sext i32 %1317 to i64
%1319 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %1318
%1320 = getelementptr inbounds %"ll::limb::Limb"* %1319, i64 0, i32 0
%1321 = load i64* %1320, align 8
%1322 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1321, i64 %..lcssa.i.i953) #20
%1323 = extractvalue { i64, i1 } %1322, 0
%1324 = extractvalue { i64, i1 } %1322, 1
store i64 %1323, i64* %1320, align 8
br i1 %1324, label %while_body.i956.preheader, label %join34
while_body.i956.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954
br label %while_body.i956
while_body.i956: ; preds = %while_body.i956.preheader, %while_body.i956
%ptr.023.i955 = phi %"ll::limb::Limb"* [ %1325, %while_body.i956 ], [ %1319, %while_body.i956.preheader ]
%1325 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i955, i64 1
%1326 = getelementptr inbounds %"ll::limb::Limb"* %1325, i64 0, i32 0
%1327 = load i64* %1326, align 8
%1328 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1327, i64 1) #20
%1329 = extractvalue { i64, i1 } %1328, 0
%1330 = extractvalue { i64, i1 } %1328, 1
store i64 %1329, i64* %1326, align 8
br i1 %1330, label %while_body.i956, label %join34.loopexit
else-block32: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit
%1331 = add i32 %836, -1
%1332 = icmp eq i32 %1331, 0
br i1 %1332, label %join34, label %next-block.i.i974.preheader
next-block.i.i974.preheader: ; preds = %else-block32
%1333 = add i32 %4, %2
%1334 = add i32 %1333, -1
%1335 = mul i32 %7, 4
%1336 = sub i32 %1334, %1335
%1337 = add i32 %1333, -2
%1338 = sub i32 %1337, %1335
%xtraiter1257 = and i32 %1336, 1
%lcmp.mod1258 = icmp ne i32 %xtraiter1257, 0
br i1 %lcmp.mod1258, label %next-block.i.i974.prol, label %next-block.i.i974.preheader.split
next-block.i.i974.prol: ; preds = %next-block.i.i974.preheader
%1339 = getelementptr inbounds %"ll::limb::Limb"* %809, i64 1
%1340 = getelementptr inbounds %"ll::limb::Limb"* %1277, i64 1
%xl.sroa.0.0..sroa_idx.i.i968.prol = getelementptr inbounds %"ll::limb::Limb"* %1339, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i969.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i968.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i970.prol = getelementptr inbounds %"ll::limb::Limb"* %1340, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i971.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i970.prol, align 8
%1341 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i969.prol, i64 %yl.sroa.0.0.copyload.i.i971.prol) #20
%1342 = extractvalue { i64, i1 } %1341, 0
%1343 = extractvalue { i64, i1 } %1341, 1
%1344 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1342, i64 %.47.i.i940) #20
%1345 = extractvalue { i64, i1 } %1344, 0
%1346 = extractvalue { i64, i1 } %1344, 1
%1347 = or i1 %1343, %1346
%..i.i972.prol = zext i1 %1347 to i64
store i64 %1345, i64* %xl.sroa.0.0..sroa_idx.i.i968.prol, align 8
%1348 = add i32 %1331, -1
%1349 = icmp eq i32 %1348, 0
br label %next-block.i.i974.preheader.split
next-block.i.i974.preheader.split: ; preds = %next-block.i.i974.prol, %next-block.i.i974.preheader
%.unr1259 = phi i32 [ %1331, %next-block.i.i974.preheader ], [ %1348, %next-block.i.i974.prol ]
%.52.i.i964.unr = phi i64 [ %.47.i.i940, %next-block.i.i974.preheader ], [ %..i.i972.prol, %next-block.i.i974.prol ]
%wp.051.i.i965.unr = phi %"ll::limb::Limb"* [ %809, %next-block.i.i974.preheader ], [ %1339, %next-block.i.i974.prol ]
%yp.049.i.i967.unr = phi %"ll::limb::Limb"* [ %1277, %next-block.i.i974.preheader ], [ %1340, %next-block.i.i974.prol ]
%1350 = icmp ult i32 %1338, 1
br i1 %1350, label %join34.loopexit1237, label %next-block.i.i974.preheader.split.split
next-block.i.i974.preheader.split.split: ; preds = %next-block.i.i974.preheader.split
br label %next-block.i.i974
next-block.i.i974: ; preds = %next-block.i.i974, %next-block.i.i974.preheader.split.split
%1351 = phi i32 [ %.unr1259, %next-block.i.i974.preheader.split.split ], [ %1371, %next-block.i.i974 ]
%.52.i.i964 = phi i64 [ %.52.i.i964.unr, %next-block.i.i974.preheader.split.split ], [ %..i.i972.1, %next-block.i.i974 ]
%wp.051.i.i965 = phi %"ll::limb::Limb"* [ %wp.051.i.i965.unr, %next-block.i.i974.preheader.split.split ], [ %1362, %next-block.i.i974 ]
%yp.049.i.i967 = phi %"ll::limb::Limb"* [ %yp.049.i.i967.unr, %next-block.i.i974.preheader.split.split ], [ %1363, %next-block.i.i974 ]
%1352 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i965, i64 1
%1353 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i967, i64 1
%xl.sroa.0.0..sroa_idx.i.i968 = getelementptr inbounds %"ll::limb::Limb"* %1352, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i969 = load i64* %xl.sroa.0.0..sroa_idx.i.i968, align 8
%yl.sroa.0.0..sroa_idx.i.i970 = getelementptr inbounds %"ll::limb::Limb"* %1353, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i971 = load i64* %yl.sroa.0.0..sroa_idx.i.i970, align 8
%1354 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i969, i64 %yl.sroa.0.0.copyload.i.i971) #20
%1355 = extractvalue { i64, i1 } %1354, 0
%1356 = extractvalue { i64, i1 } %1354, 1
%1357 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1355, i64 %.52.i.i964) #20
%1358 = extractvalue { i64, i1 } %1357, 0
%1359 = extractvalue { i64, i1 } %1357, 1
%1360 = or i1 %1356, %1359
%..i.i972 = zext i1 %1360 to i64
store i64 %1358, i64* %xl.sroa.0.0..sroa_idx.i.i968, align 8
%1361 = add i32 %1351, -1
%1362 = getelementptr inbounds %"ll::limb::Limb"* %1352, i64 1
%1363 = getelementptr inbounds %"ll::limb::Limb"* %1353, i64 1
%xl.sroa.0.0..sroa_idx.i.i968.1 = getelementptr inbounds %"ll::limb::Limb"* %1362, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i969.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i968.1, align 8
%yl.sroa.0.0..sroa_idx.i.i970.1 = getelementptr inbounds %"ll::limb::Limb"* %1363, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i971.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i970.1, align 8
%1364 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i969.1, i64 %yl.sroa.0.0.copyload.i.i971.1) #20
%1365 = extractvalue { i64, i1 } %1364, 0
%1366 = extractvalue { i64, i1 } %1364, 1
%1367 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1365, i64 %..i.i972) #20
%1368 = extractvalue { i64, i1 } %1367, 0
%1369 = extractvalue { i64, i1 } %1367, 1
%1370 = or i1 %1366, %1369
%..i.i972.1 = zext i1 %1370 to i64
store i64 %1368, i64* %xl.sroa.0.0..sroa_idx.i.i968.1, align 8
%1371 = add i32 %1361, -1
%1372 = icmp eq i32 %1371, 0
br i1 %1372, label %join34.loopexit1237.unr-lcssa, label %next-block.i.i974
join34.loopexit: ; preds = %while_body.i956
br label %join34
join34.loopexit1237.unr-lcssa: ; preds = %next-block.i.i974
br label %join34.loopexit1237
join34.loopexit1237: ; preds = %next-block.i.i974.preheader.split, %join34.loopexit1237.unr-lcssa
br label %join34
join34: ; preds = %join34.loopexit1237, %join34.loopexit, %else-block32, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit954
%xl.sroa.0.0.copyload44.i.i978 = load i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%yl.sroa.0.0.copyload46.i.i980 = load i64* %winf0.sroa.0.0..sroa_idx, align 8
%1373 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i978, i64 %yl.sroa.0.0.copyload46.i.i980) #20
%1374 = extractvalue { i64, i1 } %1373, 0
%1375 = extractvalue { i64, i1 } %1373, 1
%.47.i.i981 = zext i1 %1375 to i64
store i64 %1374, i64* %xl.sroa.0.0..sroa_idx43.i.i834, align 8
%1376 = add i32 %836, -1
%1377 = icmp eq i32 %1376, 0
br i1 %1377, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995, label %next-block.i.i993.preheader
next-block.i.i993.preheader: ; preds = %join34
%1378 = add i32 %4, %2
%1379 = add i32 %1378, -1
%1380 = mul i32 %7, 4
%1381 = sub i32 %1379, %1380
%1382 = add i32 %1378, -2
%1383 = sub i32 %1382, %1380
%xtraiter1251 = and i32 %1381, 1
%lcmp.mod1252 = icmp ne i32 %xtraiter1251, 0
br i1 %lcmp.mod1252, label %next-block.i.i993.prol, label %next-block.i.i993.preheader.split
next-block.i.i993.prol: ; preds = %next-block.i.i993.preheader
%1384 = getelementptr inbounds %"ll::limb::Limb"* %807, i64 1
%1385 = getelementptr inbounds %"ll::limb::Limb"* %809, i64 1
%xl.sroa.0.0..sroa_idx.i.i987.prol = getelementptr inbounds %"ll::limb::Limb"* %1384, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i988.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i987.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i989.prol = getelementptr inbounds %"ll::limb::Limb"* %1385, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i990.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i989.prol, align 8
%1386 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i988.prol, i64 %yl.sroa.0.0.copyload.i.i990.prol) #20
%1387 = extractvalue { i64, i1 } %1386, 0
%1388 = extractvalue { i64, i1 } %1386, 1
%1389 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1387, i64 %.47.i.i981) #20
%1390 = extractvalue { i64, i1 } %1389, 0
%1391 = extractvalue { i64, i1 } %1389, 1
%1392 = or i1 %1388, %1391
%..i.i991.prol = zext i1 %1392 to i64
store i64 %1390, i64* %xl.sroa.0.0..sroa_idx.i.i987.prol, align 8
%1393 = add i32 %1376, -1
%1394 = icmp eq i32 %1393, 0
br label %next-block.i.i993.preheader.split
next-block.i.i993.preheader.split: ; preds = %next-block.i.i993.prol, %next-block.i.i993.preheader
%..i.i991.lcssa.unr = phi i64 [ 0, %next-block.i.i993.preheader ], [ %..i.i991.prol, %next-block.i.i993.prol ]
%.unr1253 = phi i32 [ %1376, %next-block.i.i993.preheader ], [ %1393, %next-block.i.i993.prol ]
%.52.i.i983.unr = phi i64 [ %.47.i.i981, %next-block.i.i993.preheader ], [ %..i.i991.prol, %next-block.i.i993.prol ]
%wp.051.i.i984.unr = phi %"ll::limb::Limb"* [ %807, %next-block.i.i993.preheader ], [ %1384, %next-block.i.i993.prol ]
%yp.049.i.i986.unr = phi %"ll::limb::Limb"* [ %809, %next-block.i.i993.preheader ], [ %1385, %next-block.i.i993.prol ]
%1395 = icmp ult i32 %1383, 1
br i1 %1395, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit, label %next-block.i.i993.preheader.split.split
next-block.i.i993.preheader.split.split: ; preds = %next-block.i.i993.preheader.split
br label %next-block.i.i993
next-block.i.i993: ; preds = %next-block.i.i993, %next-block.i.i993.preheader.split.split
%1396 = phi i32 [ %.unr1253, %next-block.i.i993.preheader.split.split ], [ %1416, %next-block.i.i993 ]
%.52.i.i983 = phi i64 [ %.52.i.i983.unr, %next-block.i.i993.preheader.split.split ], [ %..i.i991.1, %next-block.i.i993 ]
%wp.051.i.i984 = phi %"ll::limb::Limb"* [ %wp.051.i.i984.unr, %next-block.i.i993.preheader.split.split ], [ %1407, %next-block.i.i993 ]
%yp.049.i.i986 = phi %"ll::limb::Limb"* [ %yp.049.i.i986.unr, %next-block.i.i993.preheader.split.split ], [ %1408, %next-block.i.i993 ]
%1397 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i984, i64 1
%1398 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i986, i64 1
%xl.sroa.0.0..sroa_idx.i.i987 = getelementptr inbounds %"ll::limb::Limb"* %1397, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i988 = load i64* %xl.sroa.0.0..sroa_idx.i.i987, align 8
%yl.sroa.0.0..sroa_idx.i.i989 = getelementptr inbounds %"ll::limb::Limb"* %1398, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i990 = load i64* %yl.sroa.0.0..sroa_idx.i.i989, align 8
%1399 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i988, i64 %yl.sroa.0.0.copyload.i.i990) #20
%1400 = extractvalue { i64, i1 } %1399, 0
%1401 = extractvalue { i64, i1 } %1399, 1
%1402 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1400, i64 %.52.i.i983) #20
%1403 = extractvalue { i64, i1 } %1402, 0
%1404 = extractvalue { i64, i1 } %1402, 1
%1405 = or i1 %1401, %1404
%..i.i991 = zext i1 %1405 to i64
store i64 %1403, i64* %xl.sroa.0.0..sroa_idx.i.i987, align 8
%1406 = add i32 %1396, -1
%1407 = getelementptr inbounds %"ll::limb::Limb"* %1397, i64 1
%1408 = getelementptr inbounds %"ll::limb::Limb"* %1398, i64 1
%xl.sroa.0.0..sroa_idx.i.i987.1 = getelementptr inbounds %"ll::limb::Limb"* %1407, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i988.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i987.1, align 8
%yl.sroa.0.0..sroa_idx.i.i989.1 = getelementptr inbounds %"ll::limb::Limb"* %1408, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i990.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i989.1, align 8
%1409 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i988.1, i64 %yl.sroa.0.0.copyload.i.i990.1) #20
%1410 = extractvalue { i64, i1 } %1409, 0
%1411 = extractvalue { i64, i1 } %1409, 1
%1412 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1410, i64 %..i.i991) #20
%1413 = extractvalue { i64, i1 } %1412, 0
%1414 = extractvalue { i64, i1 } %1412, 1
%1415 = or i1 %1411, %1414
%..i.i991.1 = zext i1 %1415 to i64
store i64 %1413, i64* %xl.sroa.0.0..sroa_idx.i.i987.1, align 8
%1416 = add i32 %1406, -1
%1417 = icmp eq i32 %1416, 0
br i1 %1417, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit.unr-lcssa, label %next-block.i.i993
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit.unr-lcssa: ; preds = %next-block.i.i993
%..i.i991.lcssa.ph = phi i64 [ %..i.i991.1, %next-block.i.i993 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit: ; preds = %next-block.i.i993.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit.unr-lcssa
%..i.i991.lcssa = phi i64 [ %..i.i991.lcssa.unr, %next-block.i.i993.preheader.split ], [ %..i.i991.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit, %join34
%..lcssa.i.i994 = phi i64 [ %.47.i.i981, %join34 ], [ %..i.i991.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995.loopexit ]
%winf036.sroa.0.0.copyload = load i64* %winf0.sroa.0.0..sroa_idx, align 8
store i64 %saved.sroa.0.0.copyload, i64* %winf0.sroa.0.0..sroa_idx, align 8
%1418 = add i32 %10, %2
%1419 = sext i32 %1418 to i64
%1420 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %1419
%1421 = getelementptr inbounds %"ll::limb::Limb"* %1420, i64 0, i32 0
%1422 = load i64* %1421, align 8
%1423 = sub i64 %1422, %..lcssa.i.i994
store i64 %1423, i64* %1421, align 8
%1424 = icmp ult i64 %1422, %..lcssa.i.i994
br i1 %1424, label %loop_body.i997.preheader, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998
loop_body.i997.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995
br label %loop_body.i997
loop_body.i997: ; preds = %loop_body.i997.preheader, %loop_body.i997
%ptr.0.i996 = phi %"ll::limb::Limb"* [ %1425, %loop_body.i997 ], [ %1420, %loop_body.i997.preheader ]
%1425 = getelementptr inbounds %"ll::limb::Limb"* %ptr.0.i996, i64 1
%1426 = getelementptr inbounds %"ll::limb::Limb"* %1425, i64 0, i32 0
%1427 = load i64* %1426, align 8
%1428 = add i64 %1427, -1
store i64 %1428, i64* %1426, align 8
%1429 = icmp eq i64 %1427, 0
br i1 %1429, label %loop_body.i997, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998.loopexit
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998.loopexit: ; preds = %loop_body.i997
br label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit995
%xl.sroa.0.0.copyload44.i.i1000 = load i64* %566, align 8
%yl.sroa.0.0.copyload46.i.i1002 = load i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%1430 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i1000, i64 %yl.sroa.0.0.copyload46.i.i1002) #20
%1431 = extractvalue { i64, i1 } %1430, 0
%1432 = extractvalue { i64, i1 } %1430, 1
%.47.i.i1003 = zext i1 %1432 to i64
store i64 %1431, i64* %566, align 8
br i1 %138, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017, label %next-block.i.i1015.preheader
next-block.i.i1015.preheader: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998
%1433 = add i32 %7, -1
%1434 = add i32 %7, -2
%xtraiter1248 = and i32 %1433, 1
%lcmp.mod1249 = icmp ne i32 %xtraiter1248, 0
br i1 %lcmp.mod1249, label %next-block.i.i1015.prol, label %next-block.i.i1015.preheader.split
next-block.i.i1015.prol: ; preds = %next-block.i.i1015.preheader
%1435 = getelementptr inbounds %"ll::limb::Limb"* %565, i64 1
%1436 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 1
%xl.sroa.0.0..sroa_idx.i.i1009.prol = getelementptr inbounds %"ll::limb::Limb"* %1435, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1010.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i1009.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i1011.prol = getelementptr inbounds %"ll::limb::Limb"* %1436, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1012.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i1011.prol, align 8
%1437 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1010.prol, i64 %yl.sroa.0.0.copyload.i.i1012.prol) #20
%1438 = extractvalue { i64, i1 } %1437, 0
%1439 = extractvalue { i64, i1 } %1437, 1
%1440 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1438, i64 %.47.i.i1003) #20
%1441 = extractvalue { i64, i1 } %1440, 0
%1442 = extractvalue { i64, i1 } %1440, 1
%1443 = or i1 %1439, %1442
%..i.i1013.prol = zext i1 %1443 to i64
store i64 %1441, i64* %xl.sroa.0.0..sroa_idx.i.i1009.prol, align 8
%1444 = add i32 %137, -1
%1445 = icmp eq i32 %1444, 0
br label %next-block.i.i1015.preheader.split
next-block.i.i1015.preheader.split: ; preds = %next-block.i.i1015.prol, %next-block.i.i1015.preheader
%..i.i1013.lcssa.unr = phi i64 [ 0, %next-block.i.i1015.preheader ], [ %..i.i1013.prol, %next-block.i.i1015.prol ]
%.unr1250 = phi i32 [ %137, %next-block.i.i1015.preheader ], [ %1444, %next-block.i.i1015.prol ]
%.52.i.i1005.unr = phi i64 [ %.47.i.i1003, %next-block.i.i1015.preheader ], [ %..i.i1013.prol, %next-block.i.i1015.prol ]
%wp.051.i.i1006.unr = phi %"ll::limb::Limb"* [ %565, %next-block.i.i1015.preheader ], [ %1435, %next-block.i.i1015.prol ]
%yp.049.i.i1008.unr = phi %"ll::limb::Limb"* [ %812, %next-block.i.i1015.preheader ], [ %1436, %next-block.i.i1015.prol ]
%1446 = icmp ult i32 %1434, 1
br i1 %1446, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit, label %next-block.i.i1015.preheader.split.split
next-block.i.i1015.preheader.split.split: ; preds = %next-block.i.i1015.preheader.split
br label %next-block.i.i1015
next-block.i.i1015: ; preds = %next-block.i.i1015, %next-block.i.i1015.preheader.split.split
%1447 = phi i32 [ %.unr1250, %next-block.i.i1015.preheader.split.split ], [ %1467, %next-block.i.i1015 ]
%.52.i.i1005 = phi i64 [ %.52.i.i1005.unr, %next-block.i.i1015.preheader.split.split ], [ %..i.i1013.1, %next-block.i.i1015 ]
%wp.051.i.i1006 = phi %"ll::limb::Limb"* [ %wp.051.i.i1006.unr, %next-block.i.i1015.preheader.split.split ], [ %1458, %next-block.i.i1015 ]
%yp.049.i.i1008 = phi %"ll::limb::Limb"* [ %yp.049.i.i1008.unr, %next-block.i.i1015.preheader.split.split ], [ %1459, %next-block.i.i1015 ]
%1448 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i1006, i64 1
%1449 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i1008, i64 1
%xl.sroa.0.0..sroa_idx.i.i1009 = getelementptr inbounds %"ll::limb::Limb"* %1448, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1010 = load i64* %xl.sroa.0.0..sroa_idx.i.i1009, align 8
%yl.sroa.0.0..sroa_idx.i.i1011 = getelementptr inbounds %"ll::limb::Limb"* %1449, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1012 = load i64* %yl.sroa.0.0..sroa_idx.i.i1011, align 8
%1450 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1010, i64 %yl.sroa.0.0.copyload.i.i1012) #20
%1451 = extractvalue { i64, i1 } %1450, 0
%1452 = extractvalue { i64, i1 } %1450, 1
%1453 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1451, i64 %.52.i.i1005) #20
%1454 = extractvalue { i64, i1 } %1453, 0
%1455 = extractvalue { i64, i1 } %1453, 1
%1456 = or i1 %1452, %1455
%..i.i1013 = zext i1 %1456 to i64
store i64 %1454, i64* %xl.sroa.0.0..sroa_idx.i.i1009, align 8
%1457 = add i32 %1447, -1
%1458 = getelementptr inbounds %"ll::limb::Limb"* %1448, i64 1
%1459 = getelementptr inbounds %"ll::limb::Limb"* %1449, i64 1
%xl.sroa.0.0..sroa_idx.i.i1009.1 = getelementptr inbounds %"ll::limb::Limb"* %1458, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1010.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i1009.1, align 8
%yl.sroa.0.0..sroa_idx.i.i1011.1 = getelementptr inbounds %"ll::limb::Limb"* %1459, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1012.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i1011.1, align 8
%1460 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1010.1, i64 %yl.sroa.0.0.copyload.i.i1012.1) #20
%1461 = extractvalue { i64, i1 } %1460, 0
%1462 = extractvalue { i64, i1 } %1460, 1
%1463 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %1461, i64 %..i.i1013) #20
%1464 = extractvalue { i64, i1 } %1463, 0
%1465 = extractvalue { i64, i1 } %1463, 1
%1466 = or i1 %1462, %1465
%..i.i1013.1 = zext i1 %1466 to i64
store i64 %1464, i64* %xl.sroa.0.0..sroa_idx.i.i1009.1, align 8
%1467 = add i32 %1457, -1
%1468 = icmp eq i32 %1467, 0
br i1 %1468, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit.unr-lcssa, label %next-block.i.i1015
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit.unr-lcssa: ; preds = %next-block.i.i1015
%..i.i1013.lcssa.ph = phi i64 [ %..i.i1013.1, %next-block.i.i1015 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit: ; preds = %next-block.i.i1015.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit.unr-lcssa
%..i.i1013.lcssa = phi i64 [ %..i.i1013.lcssa.unr, %next-block.i.i1015.preheader.split ], [ %..i.i1013.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit.unr-lcssa ]
%.pre = load i64* %566, align 8
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit, %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998
%1469 = phi i64 [ %1431, %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998 ], [ %.pre, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit ]
%..lcssa.i.i1016 = phi i64 [ %.47.i.i1003, %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit998 ], [ %..i.i1013.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017.loopexit ]
%1470 = sub i64 %1469, %..lcssa.i.i1016
store i64 %1470, i64* %566, align 8
%1471 = icmp ult i64 %1469, %..lcssa.i.i1016
br i1 %1471, label %loop_body.i1019.preheader, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020
loop_body.i1019.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017
br label %loop_body.i1019
loop_body.i1019: ; preds = %loop_body.i1019.preheader, %loop_body.i1019
%ptr.0.i1018 = phi %"ll::limb::Limb"* [ %1472, %loop_body.i1019 ], [ %565, %loop_body.i1019.preheader ]
%1472 = getelementptr inbounds %"ll::limb::Limb"* %ptr.0.i1018, i64 1
%1473 = getelementptr inbounds %"ll::limb::Limb"* %1472, i64 0, i32 0
%1474 = load i64* %1473, align 8
%1475 = add i64 %1474, -1
store i64 %1475, i64* %1473, align 8
%1476 = icmp eq i64 %1474, 0
br i1 %1476, label %loop_body.i1019, label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020.loopexit
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020.loopexit: ; preds = %loop_body.i1019
br label %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020
_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit1017
%1477 = sext i32 %27 to i64
%1478 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %1477
%xl.sroa.0.0..sroa_idx43.i.i1021 = getelementptr inbounds %"ll::limb::Limb"* %1478, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i1022 = load i64* %xl.sroa.0.0..sroa_idx43.i.i1021, align 8
%yl.sroa.0.0.copyload46.i.i1024 = load i64* %xl.sroa.0.0..sroa_idx43.i.i735, align 8
%1479 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i1022, i64 %yl.sroa.0.0.copyload46.i.i1024) #20
%1480 = extractvalue { i64, i1 } %1479, 0
%1481 = extractvalue { i64, i1 } %1479, 1
%.47.i.i1025 = zext i1 %1481 to i64
store i64 %1480, i64* %xl.sroa.0.0..sroa_idx43.i.i1021, align 8
br i1 %138, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039, label %next-block.i.i1037.preheader
next-block.i.i1037.preheader: ; preds = %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020
%1482 = add i32 %7, -1
%1483 = add i32 %7, -2
%xtraiter = and i32 %1482, 1
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %next-block.i.i1037.prol, label %next-block.i.i1037.preheader.split
next-block.i.i1037.prol: ; preds = %next-block.i.i1037.preheader
%1484 = getelementptr inbounds %"ll::limb::Limb"* %1478, i64 1
%1485 = getelementptr inbounds %"ll::limb::Limb"* %812, i64 1
%xl.sroa.0.0..sroa_idx.i.i1031.prol = getelementptr inbounds %"ll::limb::Limb"* %1484, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1032.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i1031.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i1033.prol = getelementptr inbounds %"ll::limb::Limb"* %1485, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1034.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i1033.prol, align 8
%1486 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1032.prol, i64 %yl.sroa.0.0.copyload.i.i1034.prol) #20
%1487 = extractvalue { i64, i1 } %1486, 0
%1488 = extractvalue { i64, i1 } %1486, 1
%1489 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1487, i64 %.47.i.i1025) #20
%1490 = extractvalue { i64, i1 } %1489, 0
%1491 = extractvalue { i64, i1 } %1489, 1
%1492 = or i1 %1488, %1491
%..i.i1035.prol = zext i1 %1492 to i64
store i64 %1490, i64* %xl.sroa.0.0..sroa_idx.i.i1031.prol, align 8
%1493 = add i32 %137, -1
%1494 = icmp eq i32 %1493, 0
br label %next-block.i.i1037.preheader.split
next-block.i.i1037.preheader.split: ; preds = %next-block.i.i1037.prol, %next-block.i.i1037.preheader
%..i.i1035.lcssa.unr = phi i64 [ 0, %next-block.i.i1037.preheader ], [ %..i.i1035.prol, %next-block.i.i1037.prol ]
%.unr = phi i32 [ %137, %next-block.i.i1037.preheader ], [ %1493, %next-block.i.i1037.prol ]
%.52.i.i1027.unr = phi i64 [ %.47.i.i1025, %next-block.i.i1037.preheader ], [ %..i.i1035.prol, %next-block.i.i1037.prol ]
%wp.051.i.i1028.unr = phi %"ll::limb::Limb"* [ %1478, %next-block.i.i1037.preheader ], [ %1484, %next-block.i.i1037.prol ]
%yp.049.i.i1030.unr = phi %"ll::limb::Limb"* [ %812, %next-block.i.i1037.preheader ], [ %1485, %next-block.i.i1037.prol ]
%1495 = icmp ult i32 %1483, 1
br i1 %1495, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit, label %next-block.i.i1037.preheader.split.split
next-block.i.i1037.preheader.split.split: ; preds = %next-block.i.i1037.preheader.split
br label %next-block.i.i1037
next-block.i.i1037: ; preds = %next-block.i.i1037, %next-block.i.i1037.preheader.split.split
%1496 = phi i32 [ %.unr, %next-block.i.i1037.preheader.split.split ], [ %1516, %next-block.i.i1037 ]
%.52.i.i1027 = phi i64 [ %.52.i.i1027.unr, %next-block.i.i1037.preheader.split.split ], [ %..i.i1035.1, %next-block.i.i1037 ]
%wp.051.i.i1028 = phi %"ll::limb::Limb"* [ %wp.051.i.i1028.unr, %next-block.i.i1037.preheader.split.split ], [ %1507, %next-block.i.i1037 ]
%yp.049.i.i1030 = phi %"ll::limb::Limb"* [ %yp.049.i.i1030.unr, %next-block.i.i1037.preheader.split.split ], [ %1508, %next-block.i.i1037 ]
%1497 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i1028, i64 1
%1498 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i1030, i64 1
%xl.sroa.0.0..sroa_idx.i.i1031 = getelementptr inbounds %"ll::limb::Limb"* %1497, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1032 = load i64* %xl.sroa.0.0..sroa_idx.i.i1031, align 8
%yl.sroa.0.0..sroa_idx.i.i1033 = getelementptr inbounds %"ll::limb::Limb"* %1498, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1034 = load i64* %yl.sroa.0.0..sroa_idx.i.i1033, align 8
%1499 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1032, i64 %yl.sroa.0.0.copyload.i.i1034) #20
%1500 = extractvalue { i64, i1 } %1499, 0
%1501 = extractvalue { i64, i1 } %1499, 1
%1502 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1500, i64 %.52.i.i1027) #20
%1503 = extractvalue { i64, i1 } %1502, 0
%1504 = extractvalue { i64, i1 } %1502, 1
%1505 = or i1 %1501, %1504
%..i.i1035 = zext i1 %1505 to i64
store i64 %1503, i64* %xl.sroa.0.0..sroa_idx.i.i1031, align 8
%1506 = add i32 %1496, -1
%1507 = getelementptr inbounds %"ll::limb::Limb"* %1497, i64 1
%1508 = getelementptr inbounds %"ll::limb::Limb"* %1498, i64 1
%xl.sroa.0.0..sroa_idx.i.i1031.1 = getelementptr inbounds %"ll::limb::Limb"* %1507, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i1032.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i1031.1, align 8
%yl.sroa.0.0..sroa_idx.i.i1033.1 = getelementptr inbounds %"ll::limb::Limb"* %1508, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i1034.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i1033.1, align 8
%1509 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i1032.1, i64 %yl.sroa.0.0.copyload.i.i1034.1) #20
%1510 = extractvalue { i64, i1 } %1509, 0
%1511 = extractvalue { i64, i1 } %1509, 1
%1512 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1510, i64 %..i.i1035) #20
%1513 = extractvalue { i64, i1 } %1512, 0
%1514 = extractvalue { i64, i1 } %1512, 1
%1515 = or i1 %1511, %1514
%..i.i1035.1 = zext i1 %1515 to i64
store i64 %1513, i64* %xl.sroa.0.0..sroa_idx.i.i1031.1, align 8
%1516 = add i32 %1506, -1
%1517 = icmp eq i32 %1516, 0
br i1 %1517, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit.unr-lcssa, label %next-block.i.i1037
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit.unr-lcssa: ; preds = %next-block.i.i1037
%..i.i1035.lcssa.ph = phi i64 [ %..i.i1035.1, %next-block.i.i1037 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit: ; preds = %next-block.i.i1037.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit.unr-lcssa
%..i.i1035.lcssa = phi i64 [ %..i.i1035.lcssa.unr, %next-block.i.i1037.preheader.split ], [ %..i.i1035.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit, %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020
%..lcssa.i.i1038 = phi i64 [ %.47.i.i1025, %_ZN2ll6addsub4decr20h949f11139f1e70ddhraE.exit1020 ], [ %..i.i1035.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039.loopexit ]
%1518 = load i64* %winf0.sroa.0.0..sroa_idx, align 8
%1519 = add i64 %1518, %..lcssa.i.i1038
%1520 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1519, i64 %winf036.sroa.0.0.copyload) #20
%1521 = extractvalue { i64, i1 } %1520, 0
%1522 = extractvalue { i64, i1 } %1520, 1
store i64 %1521, i64* %winf0.sroa.0.0..sroa_idx, align 8
br i1 %1522, label %while_body.i1041.preheader, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042
while_body.i1041.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039
br label %while_body.i1041
while_body.i1041: ; preds = %while_body.i1041.preheader, %while_body.i1041
%ptr.023.i1040 = phi %"ll::limb::Limb"* [ %1523, %while_body.i1041 ], [ %809, %while_body.i1041.preheader ]
%1523 = getelementptr inbounds %"ll::limb::Limb"* %ptr.023.i1040, i64 1
%1524 = getelementptr inbounds %"ll::limb::Limb"* %1523, i64 0, i32 0
%1525 = load i64* %1524, align 8
%1526 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1525, i64 1) #20
%1527 = extractvalue { i64, i1 } %1526, 0
%1528 = extractvalue { i64, i1 } %1526, 1
store i64 %1527, i64* %1524, align 8
br i1 %1528, label %while_body.i1041, label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042.loopexit
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042.loopexit: ; preds = %while_body.i1041
br label %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042
_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042: ; preds = %_ZN2ll6addsub4incr20h83ac4423ccfc0ebfoqaE.exit1042.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit1039
ret void
}
; Function Attrs: nounwind readonly uwtable
define i8 @_ZN2ll3cmp20h39cca6113c9f188fCxdE(%"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #8 {
entry-block:
br label %while_cond
while_cond: ; preds = %while_body, %entry-block
%i.0.in = phi i32 [ %2, %entry-block ], [ %i.0, %while_body ]
%i.0 = add i32 %i.0.in, -1
%3 = icmp sgt i32 %i.0, -1
br i1 %3, label %while_body, label %clean_custom_.loopexit
while_body: ; preds = %while_cond
%4 = sext i32 %i.0 to i64
%5 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %4, i32 0
%6 = load i64* %5, align 8
%7 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %4, i32 0
%8 = load i64* %7, align 8
%9 = icmp eq i64 %6, %8
br i1 %9, label %while_cond, label %then-block-13036-
then-block-13036-: ; preds = %while_body
%.lcssa25 = phi i64 [ %8, %while_body ]
%.lcssa = phi i64 [ %6, %while_body ]
%10 = icmp ugt i64 %.lcssa, %.lcssa25
%. = select i1 %10, i8 1, i8 -1
br label %clean_custom_
clean_custom_.loopexit: ; preds = %while_cond
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %then-block-13036-
%sret_slot.0 = phi i8 [ %., %then-block-13036- ], [ 0, %clean_custom_.loopexit ]
ret i8 %sret_slot.0
}
; Function Attrs: nounwind readonly uwtable
define zeroext i1 @_ZN2ll7is_zero20ha48d4b5b7ee78f49swdE(%"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #8 {
entry-block:
%2 = icmp sgt i32 %1, 0
br i1 %2, label %while_body.preheader, label %clean_custom_
while_body.preheader: ; preds = %entry-block
br label %while_body
while_body: ; preds = %while_body.preheader, %next-block
%np.08 = phi %"ll::limb::Limb"* [ %6, %next-block ], [ %0, %while_body.preheader ]
%nn.07 = phi i32 [ %7, %next-block ], [ %1, %while_body.preheader ]
%3 = getelementptr inbounds %"ll::limb::Limb"* %np.08, i64 0, i32 0
%4 = load i64* %3, align 8, !alias.scope !135, !noalias !138
%5 = icmp eq i64 %4, 0
br i1 %5, label %next-block, label %clean_custom_.loopexit
clean_custom_.loopexit: ; preds = %while_body, %next-block
%sret_slot.0.ph = phi i1 [ false, %while_body ], [ true, %next-block ]
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %entry-block
%sret_slot.0 = phi i1 [ true, %entry-block ], [ %sret_slot.0.ph, %clean_custom_.loopexit ]
ret i1 %sret_slot.0
next-block: ; preds = %while_body
%6 = getelementptr inbounds %"ll::limb::Limb"* %np.08, i64 1
%7 = add nsw i32 %nn.07, -1
%8 = icmp sgt i32 %nn.07, 1
br i1 %8, label %while_body, label %clean_custom_.loopexit
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll4zero20hc7229a338f4a3e8e6wdE(%"ll::limb::Limb"* nocapture, i32) unnamed_addr #0 {
entry-block:
%2 = icmp sgt i32 %1, 0
br i1 %2, label %while_body.lr.ph, label %while_exit
while_body.lr.ph: ; preds = %entry-block
%3 = bitcast %"ll::limb::Limb"* %0 to i8*
%4 = add i32 %1, -1
%5 = zext i32 %4 to i64
%6 = shl nuw nsw i64 %5, 3
%7 = add nuw nsw i64 %6, 8
call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 %7, i32 8, i1 false)
br label %while_exit
while_exit: ; preds = %while_body.lr.ph, %entry-block
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb20Limb.Add$LT$Limb$GT$3add20hda3678d9436b08a6c3cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = add i64 %1, %0
ret i64 %2
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb30Limb.PartialOrd$LT$BaseInt$GT$2gt20hf3066daa03c7184b2gdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp ugt i64 %3, %4
ret i1 %5
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23BaseInt.Mul$LT$Limb$GT$3mul20h3a55e0d863d69ab8y6cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = mul i64 %1, %0
ret i64 %2
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3bit3shl20h39c6a755c7a577b0fPbE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i32) unnamed_addr #0 {
entry-block:
%4 = zext i32 %3 to i64
%5 = add i32 %2, -1
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %6
%l.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%l.sroa.0.0.copyload = load i64* %l.sroa.0.0..sroa_idx, align 8
%8 = sub nsw i64 0, %4
%9 = and i64 %8, 63
%10 = lshr i64 %l.sroa.0.0.copyload, %9
%11 = and i64 %4, 63
%high_limb.sroa.0.049 = shl i64 %l.sroa.0.0.copyload, %11
%12 = icmp eq i32 %5, 0
br i1 %12, label %while_exit, label %while_body.lr.ph
while_body.lr.ph: ; preds = %entry-block
%13 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %6
%14 = add nsw i64 %6, -1
%15 = add i32 %2, -2
%16 = zext i32 %15 to i64
%17 = sub nsw i64 %14, %16
%18 = add i32 %2, -1
%xtraiter = and i32 %18, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.prol, label %while_body.lr.ph.split
while_body.prol: ; preds = %while_body.prol, %while_body.lr.ph
%high_limb.sroa.0.053.prol = phi i64 [ %high_limb.sroa.0.049, %while_body.lr.ph ], [ %high_limb.sroa.0.0.prol, %while_body.prol ]
%rp.052.prol = phi %"ll::limb::Limb"* [ %13, %while_body.lr.ph ], [ %23, %while_body.prol ]
%xp.051.prol = phi %"ll::limb::Limb"* [ %7, %while_body.lr.ph ], [ %19, %while_body.prol ]
%xs.050.prol = phi i32 [ %5, %while_body.lr.ph ], [ %24, %while_body.prol ]
%prol.iter = phi i32 [ %xtraiter, %while_body.lr.ph ], [ %prol.iter.sub, %while_body.prol ]
%19 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.prol, i64 -1
%low.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %19, i64 0, i32 0
%low.sroa.0.0.copyload.prol = load i64* %low.sroa.0.0..sroa_idx.prol, align 8
%20 = lshr i64 %low.sroa.0.0.copyload.prol, %9
%21 = or i64 %20, %high_limb.sroa.0.053.prol
%22 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.prol, i64 0, i32 0
store i64 %21, i64* %22, align 8
%23 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.prol, i64 -1
%24 = add i32 %xs.050.prol, -1
%high_limb.sroa.0.0.prol = shl i64 %low.sroa.0.0.copyload.prol, %11
%25 = icmp eq i32 %24, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.prol, label %while_body.lr.ph.split, !llvm.loop !140
while_body.lr.ph.split: ; preds = %while_body.prol, %while_body.lr.ph
%high_limb.sroa.0.0.lcssa57.unr = phi i64 [ 0, %while_body.lr.ph ], [ %high_limb.sroa.0.0.prol, %while_body.prol ]
%high_limb.sroa.0.053.unr = phi i64 [ %high_limb.sroa.0.049, %while_body.lr.ph ], [ %high_limb.sroa.0.0.prol, %while_body.prol ]
%rp.052.unr = phi %"ll::limb::Limb"* [ %13, %while_body.lr.ph ], [ %23, %while_body.prol ]
%xp.051.unr = phi %"ll::limb::Limb"* [ %7, %while_body.lr.ph ], [ %19, %while_body.prol ]
%xs.050.unr = phi i32 [ %5, %while_body.lr.ph ], [ %24, %while_body.prol ]
%26 = icmp ult i32 %15, 3
br i1 %26, label %while_exit.loopexit, label %while_body.lr.ph.split.split
while_body.lr.ph.split.split: ; preds = %while_body.lr.ph.split
br label %while_body
while_exit.loopexit.unr-lcssa: ; preds = %while_body
%high_limb.sroa.0.0.lcssa57.ph = phi i64 [ %high_limb.sroa.0.0.3, %while_body ]
br label %while_exit.loopexit
while_exit.loopexit: ; preds = %while_body.lr.ph.split, %while_exit.loopexit.unr-lcssa
%high_limb.sroa.0.0.lcssa57 = phi i64 [ %high_limb.sroa.0.0.lcssa57.unr, %while_body.lr.ph.split ], [ %high_limb.sroa.0.0.lcssa57.ph, %while_exit.loopexit.unr-lcssa ]
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
%high_limb.sroa.0.0.lcssa = phi i64 [ %high_limb.sroa.0.049, %entry-block ], [ %high_limb.sroa.0.0.lcssa57, %while_exit.loopexit ]
%27 = phi i64 [ %6, %entry-block ], [ %17, %while_exit.loopexit ]
%high_limb.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %27, i32 0
store i64 %high_limb.sroa.0.0.lcssa, i64* %high_limb.sroa.0.0..sroa_idx, align 8
ret i64 %10
while_body: ; preds = %while_body, %while_body.lr.ph.split.split
%high_limb.sroa.0.053 = phi i64 [ %high_limb.sroa.0.053.unr, %while_body.lr.ph.split.split ], [ %high_limb.sroa.0.0.3, %while_body ]
%rp.052 = phi %"ll::limb::Limb"* [ %rp.052.unr, %while_body.lr.ph.split.split ], [ %50, %while_body ]
%xp.051 = phi %"ll::limb::Limb"* [ %xp.051.unr, %while_body.lr.ph.split.split ], [ %46, %while_body ]
%xs.050 = phi i32 [ %xs.050.unr, %while_body.lr.ph.split.split ], [ %51, %while_body ]
%28 = getelementptr inbounds %"ll::limb::Limb"* %xp.051, i64 -1
%low.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %28, i64 0, i32 0
%low.sroa.0.0.copyload = load i64* %low.sroa.0.0..sroa_idx, align 8
%29 = lshr i64 %low.sroa.0.0.copyload, %9
%30 = or i64 %29, %high_limb.sroa.0.053
%31 = getelementptr inbounds %"ll::limb::Limb"* %rp.052, i64 0, i32 0
store i64 %30, i64* %31, align 8
%32 = getelementptr inbounds %"ll::limb::Limb"* %rp.052, i64 -1
%33 = add i32 %xs.050, -1
%high_limb.sroa.0.0 = shl i64 %low.sroa.0.0.copyload, %11
%34 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 -1
%low.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 0, i32 0
%low.sroa.0.0.copyload.1 = load i64* %low.sroa.0.0..sroa_idx.1, align 8
%35 = lshr i64 %low.sroa.0.0.copyload.1, %9
%36 = or i64 %35, %high_limb.sroa.0.0
%37 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 0, i32 0
store i64 %36, i64* %37, align 8
%38 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 -1
%39 = add i32 %33, -1
%high_limb.sroa.0.0.1 = shl i64 %low.sroa.0.0.copyload.1, %11
%40 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 -1
%low.sroa.0.0..sroa_idx.2 = getelementptr inbounds %"ll::limb::Limb"* %40, i64 0, i32 0
%low.sroa.0.0.copyload.2 = load i64* %low.sroa.0.0..sroa_idx.2, align 8
%41 = lshr i64 %low.sroa.0.0.copyload.2, %9
%42 = or i64 %41, %high_limb.sroa.0.0.1
%43 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
store i64 %42, i64* %43, align 8
%44 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 -1
%45 = add i32 %39, -1
%high_limb.sroa.0.0.2 = shl i64 %low.sroa.0.0.copyload.2, %11
%46 = getelementptr inbounds %"ll::limb::Limb"* %40, i64 -1
%low.sroa.0.0..sroa_idx.3 = getelementptr inbounds %"ll::limb::Limb"* %46, i64 0, i32 0
%low.sroa.0.0.copyload.3 = load i64* %low.sroa.0.0..sroa_idx.3, align 8
%47 = lshr i64 %low.sroa.0.0.copyload.3, %9
%48 = or i64 %47, %high_limb.sroa.0.0.2
%49 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
store i64 %48, i64* %49, align 8
%50 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 -1
%51 = add i32 %45, -1
%high_limb.sroa.0.0.3 = shl i64 %low.sroa.0.0.copyload.3, %11
%52 = icmp eq i32 %51, 0
br i1 %52, label %while_exit.loopexit.unr-lcssa, label %while_body
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* nocapture, i32, %"ll::limb::Limb"* nocapture readonly, i32, i64) unnamed_addr #0 {
entry-block:
%5 = icmp sgt i32 %1, -1
tail call void @llvm.assume(i1 %5)
%6 = icmp sgt i32 %3, -1
tail call void @llvm.assume(i1 %6)
%7 = icmp ne i64 %4, 0
tail call void @llvm.assume(i1 %7)
%8 = add nuw i32 %3, %1
%9 = icmp eq i32 %8, 0
br i1 %9, label %clean_custom_, label %next-block
clean_custom_.loopexit: ; preds = %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239
%.lcssa = phi i64 [ %67, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239 ]
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit, %while_cond7.preheader, %then-block-4468-, %while_exit34, %entry-block
%sret_slot.sroa.0.0 = phi i64 [ 0, %entry-block ], [ %141, %while_exit34 ], [ %73, %then-block-4468- ], [ %r.sroa.0.0.load291.lcssa, %while_cond7.preheader ], [ %.lcssa, %clean_custom_.loopexit ]
ret i64 %sret_slot.sroa.0.0
next-block: ; preds = %entry-block
%10 = add i32 %8, -1
%11 = sext i32 %10 to i64
%12 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %11
%13 = icmp slt i64 %4, 0
%14 = icmp ne i32 %3, 0
br i1 %13, label %then-block-4278-, label %else-block13
then-block-4278-: ; preds = %next-block
br i1 %14, label %then-block-4284-, label %next-block2
then-block-4284-: ; preds = %then-block-4278-
%15 = add nsw i32 %3, -1
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %16, i32 0
%18 = load i64* %17, align 8
%19 = icmp uge i64 %18, %4
%. = zext i1 %19 to i64
%q.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 %., i64* %q.sroa.0.0..sroa_idx, align 8
%.sum297 = add nsw i64 %11, -1
%20 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum297
%21 = select i1 %19, i64 %4, i64 0
%22 = sub i64 %18, %21
%phitmp = add nsw i32 %3, -2
br label %next-block2
next-block2: ; preds = %then-block-4278-, %then-block-4284-
%r.sroa.0.0.load292 = phi i64 [ %22, %then-block-4284- ], [ 0, %then-block-4278- ]
%xs.0 = phi i32 [ %phitmp, %then-block-4284- ], [ -1, %then-block-4278- ]
%23 = phi i64 [ %.sum297, %then-block-4284- ], [ %11, %then-block-4278- ]
%qp.0 = phi %"ll::limb::Limb"* [ %20, %then-block-4284- ], [ %12, %then-block-4278- ]
%24 = xor i64 %4, -1
%25 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %24, i64 -1, i64 %4) #20, !noalias !141, !srcloc !146
%26 = extractvalue { i64, i64 } %25, 1
%27 = icmp sgt i32 %xs.0, -1
br i1 %27, label %while_body.lr.ph, label %while_cond7.preheader
while_body.lr.ph: ; preds = %next-block2
%28 = sext i32 %xs.0 to i64
%29 = zext i32 %xs.0 to i64
%30 = xor i64 %29, -1
br label %while_body
while_cond.while_cond7.preheader_crit_edge: ; preds = %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246
%.lcssa333 = phi i64 [ %48, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246 ]
%.sum329 = add nsw i64 %23, %30
%scevgep = getelementptr %"ll::limb::Limb"* %0, i64 %.sum329
br label %while_cond7.preheader
while_cond7.preheader: ; preds = %while_cond.while_cond7.preheader_crit_edge, %next-block2
%qp.1.lcssa = phi %"ll::limb::Limb"* [ %scevgep, %while_cond.while_cond7.preheader_crit_edge ], [ %qp.0, %next-block2 ]
%r.sroa.0.0.load291.lcssa = phi i64 [ %.lcssa333, %while_cond.while_cond7.preheader_crit_edge ], [ %r.sroa.0.0.load292, %next-block2 ]
%31 = icmp eq i32 %1, 0
br i1 %31, label %clean_custom_, label %while_body8.lr.ph
while_body8.lr.ph: ; preds = %while_cond7.preheader
%i5.0298 = add nsw i32 %1, -1
br label %while_body8
while_body: ; preds = %while_body.lr.ph, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246
%indvars.iv = phi i64 [ %28, %while_body.lr.ph ], [ %indvars.iv.next, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246 ]
%qp.1304 = phi %"ll::limb::Limb"* [ %qp.0, %while_body.lr.ph ], [ %49, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246 ]
%r.sroa.0.0.load291303 = phi i64 [ %r.sroa.0.0.load292, %while_body.lr.ph ], [ %48, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246 ]
%n0.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv, i32 0
%n0.sroa.0.0.copyload = load i64* %n0.sroa.0.0..sroa_idx, align 8
%32 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %26, i64 %r.sroa.0.0.load291303) #20, !noalias !147, !srcloc !19
%33 = extractvalue { i64, i64 } %32, 0
%34 = extractvalue { i64, i64 } %32, 1
%35 = add i64 %r.sroa.0.0.load291303, 1
%36 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %34, i64 %33, i64 %n0.sroa.0.0.copyload, i64 %35) #20, !noalias !156, !srcloc !161
%37 = extractvalue { i64, i64 } %36, 0
%38 = extractvalue { i64, i64 } %36, 1
%39 = mul i64 %38, %4
%40 = sub i64 %n0.sroa.0.0.copyload, %39
%41 = icmp ugt i64 %40, %37
br i1 %41, label %then-block-12450-.i240, label %next-block.i242
then-block-12450-.i240: ; preds = %while_body
%42 = add i64 %38, -1
%43 = add i64 %40, %4
br label %next-block.i242
next-block.i242: ; preds = %then-block-12450-.i240, %while_body
%44 = phi i64 [ %43, %then-block-12450-.i240 ], [ %40, %while_body ]
%qh1.sroa.0.0.i241 = phi i64 [ %42, %then-block-12450-.i240 ], [ %38, %while_body ]
%45 = icmp ult i64 %44, %4
br i1 %45, label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246, label %then-block-12468-.i243
then-block-12468-.i243: ; preds = %next-block.i242
%46 = add i64 %qh1.sroa.0.0.i241, 1
%47 = sub i64 %44, %4
br label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246
_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit246: ; preds = %next-block.i242, %then-block-12468-.i243
%48 = phi i64 [ %47, %then-block-12468-.i243 ], [ %44, %next-block.i242 ]
%qh1.sroa.0.1.i244 = phi i64 [ %46, %then-block-12468-.i243 ], [ %qh1.sroa.0.0.i241, %next-block.i242 ]
%q3.sroa.0.0..sroa_idx141 = getelementptr inbounds %"ll::limb::Limb"* %qp.1304, i64 0, i32 0
store i64 %qh1.sroa.0.1.i244, i64* %q3.sroa.0.0..sroa_idx141, align 8
%49 = getelementptr inbounds %"ll::limb::Limb"* %qp.1304, i64 -1
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%50 = icmp sgt i64 %indvars.iv, 0
br i1 %50, label %while_body, label %while_cond.while_cond7.preheader_crit_edge
while_body8: ; preds = %while_body8.lr.ph, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239
%i5.0301 = phi i32 [ %i5.0298, %while_body8.lr.ph ], [ %i5.0, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239 ]
%qp.2300 = phi %"ll::limb::Limb"* [ %qp.1.lcssa, %while_body8.lr.ph ], [ %68, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239 ]
%r.sroa.0.0.load293299 = phi i64 [ %r.sroa.0.0.load291.lcssa, %while_body8.lr.ph ], [ %67, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239 ]
%51 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %26, i64 %r.sroa.0.0.load293299) #20, !noalias !162, !srcloc !19
%52 = extractvalue { i64, i64 } %51, 0
%53 = extractvalue { i64, i64 } %51, 1
%54 = add i64 %r.sroa.0.0.load293299, 1
%55 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %53, i64 %52, i64 0, i64 %54) #20, !noalias !171, !srcloc !161
%56 = extractvalue { i64, i64 } %55, 0
%57 = extractvalue { i64, i64 } %55, 1
%58 = mul i64 %57, %4
%59 = sub i64 0, %58
%60 = icmp ult i64 %56, %59
br i1 %60, label %then-block-12450-.i233, label %next-block.i235
then-block-12450-.i233: ; preds = %while_body8
%61 = add i64 %57, -1
%62 = sub i64 %4, %58
br label %next-block.i235
next-block.i235: ; preds = %then-block-12450-.i233, %while_body8
%63 = phi i64 [ %62, %then-block-12450-.i233 ], [ %59, %while_body8 ]
%qh1.sroa.0.0.i234 = phi i64 [ %61, %then-block-12450-.i233 ], [ %57, %while_body8 ]
%64 = icmp ult i64 %63, %4
br i1 %64, label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239, label %then-block-12468-.i236
then-block-12468-.i236: ; preds = %next-block.i235
%65 = add i64 %qh1.sroa.0.0.i234, 1
%66 = sub i64 %63, %4
br label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239
_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit239: ; preds = %next-block.i235, %then-block-12468-.i236
%67 = phi i64 [ %66, %then-block-12468-.i236 ], [ %63, %next-block.i235 ]
%qh1.sroa.0.1.i237 = phi i64 [ %65, %then-block-12468-.i236 ], [ %qh1.sroa.0.0.i234, %next-block.i235 ]
%q9.sroa.0.0..sroa_idx129 = getelementptr inbounds %"ll::limb::Limb"* %qp.2300, i64 0, i32 0
store i64 %qh1.sroa.0.1.i237, i64* %q9.sroa.0.0..sroa_idx129, align 8
%68 = getelementptr inbounds %"ll::limb::Limb"* %qp.2300, i64 -1
%i5.0 = add i32 %i5.0301, -1
%69 = icmp sgt i32 %i5.0, -1
br i1 %69, label %while_body8, label %clean_custom_.loopexit
else-block13: ; preds = %next-block
br i1 %14, label %then-block-4451-, label %next-block17
then-block-4451-: ; preds = %else-block13
%70 = add nsw i32 %3, -1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %71, i32 0
%73 = load i64* %72, align 8
%74 = icmp ult i64 %73, %4
br i1 %74, label %then-block-4468-, label %next-block17
then-block-4468-: ; preds = %then-block-4451-
%75 = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
store i64 0, i64* %75, align 8
%.sum = add nsw i64 %11, -1
%76 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum
%77 = icmp eq i32 %10, 0
br i1 %77, label %clean_custom_, label %next-block17
next-block17: ; preds = %then-block-4451-, %then-block-4468-, %else-block13
%r.sroa.0.0.load295 = phi i64 [ 0, %else-block13 ], [ 0, %then-block-4451- ], [ %73, %then-block-4468- ]
%xs.2 = phi i32 [ 0, %else-block13 ], [ %3, %then-block-4451- ], [ %70, %then-block-4468- ]
%78 = phi i64 [ %11, %else-block13 ], [ %11, %then-block-4451- ], [ %.sum, %then-block-4468- ]
%qp.4 = phi %"ll::limb::Limb"* [ %12, %else-block13 ], [ %12, %then-block-4451- ], [ %76, %then-block-4468- ]
%79 = tail call i64 @llvm.ctlz.i64(i64 %4, i1 false) #20
%80 = and i64 %79, 63
%81 = shl i64 %4, %80
%82 = shl i64 %r.sroa.0.0.load295, %80
%83 = xor i64 %81, -1
%84 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %83, i64 -1, i64 %81) #20, !noalias !176, !srcloc !146
%85 = extractvalue { i64, i64 } %84, 1
%86 = icmp eq i32 %xs.2, 0
br i1 %86, label %while_cond35.preheader, label %then-block-4533-
then-block-4533-: ; preds = %next-block17
%87 = add i32 %xs.2, -1
%88 = sext i32 %87 to i64
%n120.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %88, i32 0
%n120.sroa.0.0.copyload = load i64* %n120.sroa.0.0..sroa_idx, align 8
%89 = sub nsw i64 0, %79
%90 = and i64 %89, 63
%91 = lshr i64 %n120.sroa.0.0.copyload, %90
%92 = or i64 %91, %82
%93 = add i32 %xs.2, -2
%94 = icmp sgt i32 %93, -1
br i1 %94, label %while_body24.lr.ph, label %while_exit22
while_body24.lr.ph: ; preds = %then-block-4533-
%95 = sext i32 %93 to i64
%96 = zext i32 %93 to i64
%97 = xor i64 %96, -1
br label %while_body24
while_cond23.while_exit22_crit_edge: ; preds = %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225
%.lcssa335 = phi i64 [ %137, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%n025.sroa.0.0.copyload.lcssa = phi i64 [ %n025.sroa.0.0.copyload, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%.sum328 = add nsw i64 %78, %97
%scevgep327 = getelementptr %"ll::limb::Limb"* %0, i64 %.sum328
br label %while_exit22
while_exit22: ; preds = %while_cond23.while_exit22_crit_edge, %then-block-4533-
%qp.5.lcssa = phi %"ll::limb::Limb"* [ %scevgep327, %while_cond23.while_exit22_crit_edge ], [ %qp.4, %then-block-4533- ]
%n120.sroa.0.0.lcssa = phi i64 [ %n025.sroa.0.0.copyload.lcssa, %while_cond23.while_exit22_crit_edge ], [ %n120.sroa.0.0.copyload, %then-block-4533- ]
%r.sroa.0.0.load290.lcssa = phi i64 [ %.lcssa335, %while_cond23.while_exit22_crit_edge ], [ %92, %then-block-4533- ]
%98 = shl i64 %n120.sroa.0.0.lcssa, %80
%99 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %85, i64 %r.sroa.0.0.load290.lcssa) #20, !noalias !181, !srcloc !19
%100 = extractvalue { i64, i64 } %99, 0
%101 = extractvalue { i64, i64 } %99, 1
%102 = add i64 %r.sroa.0.0.load290.lcssa, 1
%103 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %101, i64 %100, i64 %98, i64 %102) #20, !noalias !190, !srcloc !161
%104 = extractvalue { i64, i64 } %103, 0
%105 = extractvalue { i64, i64 } %103, 1
%106 = mul i64 %105, %81
%107 = sub i64 %98, %106
%108 = icmp ugt i64 %107, %104
br i1 %108, label %then-block-12450-.i226, label %next-block.i228
then-block-12450-.i226: ; preds = %while_exit22
%109 = add i64 %105, -1
%110 = add i64 %107, %81
br label %next-block.i228
next-block.i228: ; preds = %then-block-12450-.i226, %while_exit22
%111 = phi i64 [ %110, %then-block-12450-.i226 ], [ %107, %while_exit22 ]
%qh1.sroa.0.0.i227 = phi i64 [ %109, %then-block-12450-.i226 ], [ %105, %while_exit22 ]
%112 = icmp ult i64 %111, %81
br i1 %112, label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232, label %then-block-12468-.i229
then-block-12468-.i229: ; preds = %next-block.i228
%113 = add i64 %qh1.sroa.0.0.i227, 1
%114 = sub i64 %111, %81
br label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232
_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232: ; preds = %next-block.i228, %then-block-12468-.i229
%115 = phi i64 [ %114, %then-block-12468-.i229 ], [ %111, %next-block.i228 ]
%qh1.sroa.0.1.i230 = phi i64 [ %113, %then-block-12468-.i229 ], [ %qh1.sroa.0.0.i227, %next-block.i228 ]
%q29.sroa.0.0..sroa_idx58 = getelementptr inbounds %"ll::limb::Limb"* %qp.5.lcssa, i64 0, i32 0
store i64 %qh1.sroa.0.1.i230, i64* %q29.sroa.0.0..sroa_idx58, align 8
%116 = getelementptr inbounds %"ll::limb::Limb"* %qp.5.lcssa, i64 -1
br label %while_cond35.preheader
while_cond35.preheader: ; preds = %next-block17, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232
%r.sroa.0.0.load296.ph = phi i64 [ %115, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232 ], [ %82, %next-block17 ]
%qp.7.ph = phi %"ll::limb::Limb"* [ %116, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit232 ], [ %qp.4, %next-block17 ]
%117 = icmp eq i32 %1, 0
br i1 %117, label %while_exit34, label %while_body36.lr.ph
while_body36.lr.ph: ; preds = %while_cond35.preheader
%i33.0308 = add nsw i32 %1, -1
br label %while_body36
while_body24: ; preds = %while_body24.lr.ph, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225
%indvars.iv325 = phi i64 [ %95, %while_body24.lr.ph ], [ %indvars.iv.next326, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%qp.5316 = phi %"ll::limb::Limb"* [ %qp.4, %while_body24.lr.ph ], [ %138, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%n120.sroa.0.0315 = phi i64 [ %n120.sroa.0.0.copyload, %while_body24.lr.ph ], [ %n025.sroa.0.0.copyload, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%i21.0314 = phi i32 [ %93, %while_body24.lr.ph ], [ %139, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%r.sroa.0.0.load290313 = phi i64 [ %92, %while_body24.lr.ph ], [ %137, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225 ]
%n025.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv325, i32 0
%n025.sroa.0.0.copyload = load i64* %n025.sroa.0.0..sroa_idx, align 8
%118 = shl i64 %n120.sroa.0.0315, %80
%119 = lshr i64 %n025.sroa.0.0.copyload, %90
%120 = or i64 %119, %118
%121 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %85, i64 %r.sroa.0.0.load290313) #20, !noalias !195, !srcloc !19
%122 = extractvalue { i64, i64 } %121, 0
%123 = extractvalue { i64, i64 } %121, 1
%124 = add i64 %r.sroa.0.0.load290313, 1
%125 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %123, i64 %122, i64 %120, i64 %124) #20, !noalias !204, !srcloc !161
%126 = extractvalue { i64, i64 } %125, 0
%127 = extractvalue { i64, i64 } %125, 1
%128 = mul i64 %127, %81
%129 = sub i64 %120, %128
%130 = icmp ugt i64 %129, %126
br i1 %130, label %then-block-12450-.i219, label %next-block.i221
then-block-12450-.i219: ; preds = %while_body24
%131 = add i64 %127, -1
%132 = add i64 %129, %81
br label %next-block.i221
next-block.i221: ; preds = %then-block-12450-.i219, %while_body24
%133 = phi i64 [ %132, %then-block-12450-.i219 ], [ %129, %while_body24 ]
%qh1.sroa.0.0.i220 = phi i64 [ %131, %then-block-12450-.i219 ], [ %127, %while_body24 ]
%134 = icmp ult i64 %133, %81
br i1 %134, label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225, label %then-block-12468-.i222
then-block-12468-.i222: ; preds = %next-block.i221
%135 = add i64 %qh1.sroa.0.0.i220, 1
%136 = sub i64 %133, %81
br label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225
_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit225: ; preds = %next-block.i221, %then-block-12468-.i222
%137 = phi i64 [ %136, %then-block-12468-.i222 ], [ %133, %next-block.i221 ]
%qh1.sroa.0.1.i223 = phi i64 [ %135, %then-block-12468-.i222 ], [ %qh1.sroa.0.0.i220, %next-block.i221 ]
%q26.sroa.0.0..sroa_idx69 = getelementptr inbounds %"ll::limb::Limb"* %qp.5316, i64 0, i32 0
store i64 %qh1.sroa.0.1.i223, i64* %q26.sroa.0.0..sroa_idx69, align 8
%138 = getelementptr inbounds %"ll::limb::Limb"* %qp.5316, i64 -1
%139 = add nsw i32 %i21.0314, -1
%140 = icmp sgt i32 %i21.0314, 0
%indvars.iv.next326 = add nsw i64 %indvars.iv325, -1
br i1 %140, label %while_body24, label %while_cond23.while_exit22_crit_edge
while_exit34.loopexit: ; preds = %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit
%.lcssa334 = phi i64 [ %158, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit ]
br label %while_exit34
while_exit34: ; preds = %while_exit34.loopexit, %while_cond35.preheader
%r.sroa.0.0.load296.lcssa = phi i64 [ %r.sroa.0.0.load296.ph, %while_cond35.preheader ], [ %.lcssa334, %while_exit34.loopexit ]
%141 = lshr i64 %r.sroa.0.0.load296.lcssa, %80
br label %clean_custom_
while_body36: ; preds = %while_body36.lr.ph, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit
%i33.0311 = phi i32 [ %i33.0308, %while_body36.lr.ph ], [ %i33.0, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit ]
%qp.7310 = phi %"ll::limb::Limb"* [ %qp.7.ph, %while_body36.lr.ph ], [ %159, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit ]
%r.sroa.0.0.load296309 = phi i64 [ %r.sroa.0.0.load296.ph, %while_body36.lr.ph ], [ %158, %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit ]
%142 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %85, i64 %r.sroa.0.0.load296309) #20, !noalias !209, !srcloc !19
%143 = extractvalue { i64, i64 } %142, 0
%144 = extractvalue { i64, i64 } %142, 1
%145 = add i64 %r.sroa.0.0.load296309, 1
%146 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %144, i64 %143, i64 0, i64 %145) #20, !noalias !218, !srcloc !161
%147 = extractvalue { i64, i64 } %146, 0
%148 = extractvalue { i64, i64 } %146, 1
%149 = mul i64 %148, %81
%150 = sub i64 0, %149
%151 = icmp ult i64 %147, %150
br i1 %151, label %then-block-12450-.i, label %next-block.i
then-block-12450-.i: ; preds = %while_body36
%152 = add i64 %148, -1
%153 = sub i64 %81, %149
br label %next-block.i
next-block.i: ; preds = %then-block-12450-.i, %while_body36
%154 = phi i64 [ %153, %then-block-12450-.i ], [ %150, %while_body36 ]
%qh1.sroa.0.0.i = phi i64 [ %152, %then-block-12450-.i ], [ %148, %while_body36 ]
%155 = icmp ult i64 %154, %81
br i1 %155, label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit, label %then-block-12468-.i
then-block-12468-.i: ; preds = %next-block.i
%156 = add i64 %qh1.sroa.0.0.i, 1
%157 = sub i64 %154, %81
br label %_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit
_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE.exit: ; preds = %next-block.i, %then-block-12468-.i
%158 = phi i64 [ %157, %then-block-12468-.i ], [ %154, %next-block.i ]
%qh1.sroa.0.1.i = phi i64 [ %156, %then-block-12468-.i ], [ %qh1.sroa.0.0.i, %next-block.i ]
%q37.sroa.0.0..sroa_idx46 = getelementptr inbounds %"ll::limb::Limb"* %qp.7310, i64 0, i32 0
store i64 %qh1.sroa.0.1.i, i64* %q37.sroa.0.0..sroa_idx46, align 8
%159 = getelementptr inbounds %"ll::limb::Limb"* %qp.7310, i64 -1
%i33.0 = add i32 %i33.0311, -1
%160 = icmp sgt i32 %i33.0, -1
br i1 %160, label %while_body36, label %while_exit34.loopexit
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3bit3shr20h7a1579b04ae4257clTbE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, i32) unnamed_addr #0 {
entry-block:
%4 = zext i32 %3 to i64
%h.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%h.sroa.0.0.copyload = load i64* %h.sroa.0.0..sroa_idx, align 8
%5 = sub nsw i64 0, %4
%6 = and i64 %5, 63
%7 = shl i64 %h.sroa.0.0.copyload, %6
%8 = and i64 %4, 63
%low_limb.sroa.0.042 = lshr i64 %h.sroa.0.0.copyload, %8
%xs.043 = add i32 %2, -1
%9 = icmp eq i32 %xs.043, 0
br i1 %9, label %while_exit, label %while_body.lr.ph
while_body.lr.ph: ; preds = %entry-block
%10 = add i32 %2, -2
%11 = zext i32 %10 to i64
%12 = add nuw nsw i64 %11, 1
%13 = add i32 %2, -1
%xtraiter = and i32 %13, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.prol, label %while_body.lr.ph.split
while_body.prol: ; preds = %while_body.prol, %while_body.lr.ph
%xs.047.prol = phi i32 [ %xs.043, %while_body.lr.ph ], [ %xs.0.prol, %while_body.prol ]
%low_limb.sroa.0.046.prol = phi i64 [ %low_limb.sroa.0.042, %while_body.lr.ph ], [ %low_limb.sroa.0.0.prol, %while_body.prol ]
%.pn.prol = phi %"ll::limb::Limb"* [ %1, %while_body.lr.ph ], [ %xp.045.prol, %while_body.prol ]
%rp.044.prol = phi %"ll::limb::Limb"* [ %0, %while_body.lr.ph ], [ %17, %while_body.prol ]
%prol.iter = phi i32 [ %xtraiter, %while_body.lr.ph ], [ %prol.iter.sub, %while_body.prol ]
%xp.045.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.prol, i64 1
%high.sroa.0.0..sroa_idx.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.prol, i64 0, i32 0
%high.sroa.0.0.copyload.prol = load i64* %high.sroa.0.0..sroa_idx.prol, align 8
%14 = shl i64 %high.sroa.0.0.copyload.prol, %6
%15 = or i64 %14, %low_limb.sroa.0.046.prol
%16 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.prol, i64 0, i32 0
store i64 %15, i64* %16, align 8
%17 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.prol, i64 1
%low_limb.sroa.0.0.prol = lshr i64 %high.sroa.0.0.copyload.prol, %8
%xs.0.prol = add i32 %xs.047.prol, -1
%18 = icmp eq i32 %xs.0.prol, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.prol, label %while_body.lr.ph.split, !llvm.loop !223
while_body.lr.ph.split: ; preds = %while_body.prol, %while_body.lr.ph
%low_limb.sroa.0.0.lcssa51.unr = phi i64 [ 0, %while_body.lr.ph ], [ %low_limb.sroa.0.0.prol, %while_body.prol ]
%xs.047.unr = phi i32 [ %xs.043, %while_body.lr.ph ], [ %xs.0.prol, %while_body.prol ]
%low_limb.sroa.0.046.unr = phi i64 [ %low_limb.sroa.0.042, %while_body.lr.ph ], [ %low_limb.sroa.0.0.prol, %while_body.prol ]
%.pn.unr = phi %"ll::limb::Limb"* [ %1, %while_body.lr.ph ], [ %xp.045.prol, %while_body.prol ]
%rp.044.unr = phi %"ll::limb::Limb"* [ %0, %while_body.lr.ph ], [ %17, %while_body.prol ]
%19 = icmp ult i32 %10, 3
br i1 %19, label %while_cond.while_exit_crit_edge, label %while_body.lr.ph.split.split
while_body.lr.ph.split.split: ; preds = %while_body.lr.ph.split
br label %while_body
while_cond.while_exit_crit_edge.unr-lcssa: ; preds = %while_body
%low_limb.sroa.0.0.lcssa51.ph = phi i64 [ %low_limb.sroa.0.0.3, %while_body ]
br label %while_cond.while_exit_crit_edge
while_cond.while_exit_crit_edge: ; preds = %while_body.lr.ph.split, %while_cond.while_exit_crit_edge.unr-lcssa
%low_limb.sroa.0.0.lcssa51 = phi i64 [ %low_limb.sroa.0.0.lcssa51.unr, %while_body.lr.ph.split ], [ %low_limb.sroa.0.0.lcssa51.ph, %while_cond.while_exit_crit_edge.unr-lcssa ]
%scevgep = getelementptr %"ll::limb::Limb"* %0, i64 %12
br label %while_exit
while_exit: ; preds = %while_cond.while_exit_crit_edge, %entry-block
%low_limb.sroa.0.0.lcssa = phi i64 [ %low_limb.sroa.0.0.lcssa51, %while_cond.while_exit_crit_edge ], [ %low_limb.sroa.0.042, %entry-block ]
%rp.0.lcssa = phi %"ll::limb::Limb"* [ %scevgep, %while_cond.while_exit_crit_edge ], [ %0, %entry-block ]
%low_limb.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %rp.0.lcssa, i64 0, i32 0
store i64 %low_limb.sroa.0.0.lcssa, i64* %low_limb.sroa.0.0..sroa_idx, align 8
ret i64 %7
while_body: ; preds = %while_body, %while_body.lr.ph.split.split
%xs.047 = phi i32 [ %xs.047.unr, %while_body.lr.ph.split.split ], [ %xs.0.3, %while_body ]
%low_limb.sroa.0.046 = phi i64 [ %low_limb.sroa.0.046.unr, %while_body.lr.ph.split.split ], [ %low_limb.sroa.0.0.3, %while_body ]
%.pn = phi %"ll::limb::Limb"* [ %.pn.unr, %while_body.lr.ph.split.split ], [ %xp.045.3, %while_body ]
%rp.044 = phi %"ll::limb::Limb"* [ %rp.044.unr, %while_body.lr.ph.split.split ], [ %35, %while_body ]
%xp.045 = getelementptr inbounds %"ll::limb::Limb"* %.pn, i64 1
%high.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %xp.045, i64 0, i32 0
%high.sroa.0.0.copyload = load i64* %high.sroa.0.0..sroa_idx, align 8
%20 = shl i64 %high.sroa.0.0.copyload, %6
%21 = or i64 %20, %low_limb.sroa.0.046
%22 = getelementptr inbounds %"ll::limb::Limb"* %rp.044, i64 0, i32 0
store i64 %21, i64* %22, align 8
%23 = getelementptr inbounds %"ll::limb::Limb"* %rp.044, i64 1
%low_limb.sroa.0.0 = lshr i64 %high.sroa.0.0.copyload, %8
%xs.0 = add i32 %xs.047, -1
%xp.045.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045, i64 1
%high.sroa.0.0..sroa_idx.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.1, i64 0, i32 0
%high.sroa.0.0.copyload.1 = load i64* %high.sroa.0.0..sroa_idx.1, align 8
%24 = shl i64 %high.sroa.0.0.copyload.1, %6
%25 = or i64 %24, %low_limb.sroa.0.0
%26 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %25, i64* %26, align 8
%27 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%low_limb.sroa.0.0.1 = lshr i64 %high.sroa.0.0.copyload.1, %8
%xs.0.1 = add i32 %xs.0, -1
%xp.045.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.1, i64 1
%high.sroa.0.0..sroa_idx.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.2, i64 0, i32 0
%high.sroa.0.0.copyload.2 = load i64* %high.sroa.0.0..sroa_idx.2, align 8
%28 = shl i64 %high.sroa.0.0.copyload.2, %6
%29 = or i64 %28, %low_limb.sroa.0.0.1
%30 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
store i64 %29, i64* %30, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%low_limb.sroa.0.0.2 = lshr i64 %high.sroa.0.0.copyload.2, %8
%xs.0.2 = add i32 %xs.0.1, -1
%xp.045.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.2, i64 1
%high.sroa.0.0..sroa_idx.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.3, i64 0, i32 0
%high.sroa.0.0.copyload.3 = load i64* %high.sroa.0.0..sroa_idx.3, align 8
%32 = shl i64 %high.sroa.0.0.copyload.3, %6
%33 = or i64 %32, %low_limb.sroa.0.0.2
%34 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
store i64 %33, i64* %34, align 8
%35 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 1
%low_limb.sroa.0.0.3 = lshr i64 %high.sroa.0.0.copyload.3, %8
%xs.0.3 = add i32 %xs.0.2, -1
%36 = icmp eq i32 %xs.0.3, 0
br i1 %36, label %while_cond.while_exit_crit_edge.unr-lcssa, label %while_body
}
; Function Attrs: inlinehint nounwind uwtable
define void @_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE(%"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture, i32) unnamed_addr #3 {
entry-block:
%3 = icmp sgt i32 %2, 0
br i1 %3, label %while_body.lr.ph, label %while_exit
while_body.lr.ph: ; preds = %entry-block
%4 = add i32 %2, -1
%5 = zext i32 %4 to i64
%6 = add nuw nsw i64 %5, 1
%end.idx = add nuw nsw i64 %5, 1
%n.vec = and i64 %6, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%7 = add i32 %2, -1
%8 = zext i32 %7 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph
%scevgep14 = getelementptr %"ll::limb::Limb"* %0, i64 %8
%bound0 = icmp uge %"ll::limb::Limb"* %scevgep14, %1
%scevgep = getelementptr %"ll::limb::Limb"* %1, i64 %8
%bound1 = icmp uge %"ll::limb::Limb"* %scevgep, %0
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%9 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %index, i32 0
%10 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %index, i32 0
%11 = bitcast i64* %9 to <2 x i64>*
%wide.load = load <2 x i64>* %11, align 8
%12 = getelementptr i64* %9, i64 2
%13 = bitcast i64* %12 to <2 x i64>*
%wide.load17 = load <2 x i64>* %13, align 8
%14 = bitcast i64* %10 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %14, align 8
%15 = getelementptr i64* %10, i64 2
%16 = bitcast i64* %15 to <2 x i64>*
store <2 x i64> %wide.load17, <2 x i64>* %16, align 8
%index.next = add i64 %index, 4
%17 = icmp eq i64 %index.next, %n.vec
br i1 %17, label %middle.block.loopexit, label %vector.body, !llvm.loop !224
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph
%resume.val = phi i64 [ 0, %while_body.lr.ph ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %while_exit, label %while_body.preheader
while_body.preheader: ; preds = %middle.block
%18 = trunc i64 %resume.val to i32
%19 = sub i32 %2, %18
%20 = add i32 %2, -1
%21 = sub i32 %20, %18
%xtraiter = and i32 %19, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.prol, label %while_body.preheader.split
while_body.prol: ; preds = %while_body.prol, %while_body.preheader
%indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %while_body.prol ], [ %resume.val, %while_body.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.preheader ], [ %prol.iter.sub, %while_body.prol ]
%22 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.prol, i32 0
%23 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.prol, i32 0
%24 = load i64* %22, align 8
store i64 %24, i64* %23, align 8
%indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %4
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.prol, label %while_body.preheader.split, !llvm.loop !225
while_body.preheader.split: ; preds = %while_body.prol, %while_body.preheader
%indvars.iv.unr = phi i64 [ %resume.val, %while_body.preheader ], [ %indvars.iv.next.prol, %while_body.prol ]
%25 = icmp ult i32 %21, 3
br i1 %25, label %while_exit.loopexit, label %while_body.preheader.split.split
while_body.preheader.split.split: ; preds = %while_body.preheader.split
br label %while_body
while_exit.loopexit.unr-lcssa: ; preds = %while_body
br label %while_exit.loopexit
while_exit.loopexit: ; preds = %while_body.preheader.split, %while_exit.loopexit.unr-lcssa
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %middle.block, %entry-block
ret void
while_body: ; preds = %while_body, %while_body.preheader.split.split
%indvars.iv = phi i64 [ %indvars.iv.unr, %while_body.preheader.split.split ], [ %indvars.iv.next.3, %while_body ]
%26 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv, i32 0
%27 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv, i32 0
%28 = load i64* %26, align 8
store i64 %28, i64* %27, align 8
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv to i32
%29 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next, i32 0
%30 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next, i32 0
%31 = load i64* %29, align 8
store i64 %31, i64* %30, align 8
%indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.next, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next to i32
%32 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next.1, i32 0
%33 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.1, i32 0
%34 = load i64* %32, align 8
store i64 %34, i64* %33, align 8
%indvars.iv.next.2 = add nuw nsw i64 %indvars.iv.next.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.1 to i32
%35 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next.2, i32 0
%36 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.2, i32 0
%37 = load i64* %35, align 8
store i64 %37, i64* %36, align 8
%indvars.iv.next.3 = add nuw nsw i64 %indvars.iv.next.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %4
br i1 %exitcond.3, label %while_exit.loopexit.unr-lcssa, label %while_body, !llvm.loop !226
}
; Function Attrs: nounwind
declare void @llvm.assume(i1) unnamed_addr #1
; Function Attrs: alwaysinline nounwind readnone uwtable
define zeroext i1 @_ZN2ll4limb4Limb12high_bit_set20h49315ace3d2fcf30p2cE(i64) unnamed_addr #5 {
entry-block:
%1 = icmp slt i64 %0, 0
ret i1 %1
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$2ge20hf1d6228935e06825kfdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp uge i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb8Limb.Neg3neg20h0e6f565b6508cf511adE(i64) unnamed_addr #5 {
entry-block:
%1 = sub i64 0, %0
ret i64 %1
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23Limb.BitAnd$LT$Limb$GT$6bitand20h713711bad89a8be5xcdE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = and i64 %1, %0
ret i64 %2
}
; Function Attrs: alwaysinline nounwind uwtable
define i64 @_ZN2ll4limb4Limb6invert20h8f0b80d04ce45935D1cE(i64) unnamed_addr #2 {
entry-block:
%1 = xor i64 %0, -1
%2 = icmp slt i64 %0, 0
tail call void @llvm.assume(i1 %2) #20, !noalias !227
%3 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %1, i64 -1, i64 %0) #20, !noalias !230, !srcloc !146
%4 = extractvalue { i64, i64 } %3, 1
ret i64 %4
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64, i64) unnamed_addr #2 {
entry-block:
%5 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %4, i64 %1) #20, !noalias !233, !srcloc !19
%6 = extractvalue { i64, i64 } %5, 0
%7 = extractvalue { i64, i64 } %5, 1
%8 = add i64 %1, 1
%9 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %7, i64 %6, i64 %2, i64 %8) #20, !noalias !240, !srcloc !161
%10 = extractvalue { i64, i64 } %9, 0
%11 = extractvalue { i64, i64 } %9, 1
%12 = mul i64 %11, %3
%13 = sub i64 %2, %12
%14 = icmp ugt i64 %13, %10
br i1 %14, label %then-block-12450-, label %next-block
then-block-12450-: ; preds = %entry-block
%15 = add i64 %11, -1
%16 = add i64 %13, %3
br label %next-block
next-block: ; preds = %entry-block, %then-block-12450-
%17 = phi i64 [ %16, %then-block-12450- ], [ %13, %entry-block ]
%qh1.sroa.0.0 = phi i64 [ %15, %then-block-12450- ], [ %11, %entry-block ]
%18 = icmp ult i64 %17, %3
br i1 %18, label %next-block3, label %then-block-12468-
then-block-12468-: ; preds = %next-block
%19 = add i64 %qh1.sroa.0.0, 1
%20 = sub i64 %17, %3
br label %next-block3
next-block3: ; preds = %next-block, %then-block-12468-
%21 = phi i64 [ %20, %then-block-12468- ], [ %17, %next-block ]
%qh1.sroa.0.1 = phi i64 [ %19, %then-block-12468- ], [ %qh1.sroa.0.0, %next-block ]
%qh1.sroa.0.0..sroa_idx16 = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %qh1.sroa.0.1, i64* %qh1.sroa.0.0..sroa_idx16, align 8
%22 = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %21, i64* %22, align 8
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb4Limb13leading_zeros20h9f9ecf2efe2d27f2J2cE(i64) unnamed_addr #5 {
entry-block:
%1 = tail call i64 @llvm.ctlz.i64(i64 %0, i1 false) #20
ret i64 %1
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb22Limb.BitOr$LT$Limb$GT$5bitor20h5b90e33e37d8874aVcdE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = or i64 %1, %0
ret i64 %2
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll3div8divrem_220h1f2cce3c56b8ddf96nbE(%"ll::limb::Limb"* nocapture, i32, %"ll::limb::Limb"* nocapture, i32, %"ll::limb::Limb"* nocapture readonly) unnamed_addr #0 {
entry-block:
%5 = add i32 %3, -2
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %6
%8 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 1, i32 0
%9 = load i64* %8, align 8
%.op.i = sub i64 0, %9
%10 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 0, i32 0
%11 = load i64* %10, align 8
%.sum = add nsw i64 %6, 1
%12 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %.sum, i32 0
%13 = load i64* %12, align 8
%14 = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%15 = load i64* %14, align 8
%16 = icmp ult i64 %13, %9
br i1 %16, label %next-block, label %before_rhs
before_rhs: ; preds = %entry-block
%17 = icmp ugt i64 %13, %9
%18 = icmp uge i64 %15, %11
%or.cond = or i1 %17, %18
br i1 %or.cond, label %then-block-4924-, label %next-block
then-block-4924-: ; preds = %before_rhs
%19 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %15, i64 %13, i64 %11, i64 %9) #20, !noalias !245, !srcloc !250
%20 = extractvalue { i64, i64 } %19, 0
%21 = extractvalue { i64, i64 } %19, 1
br label %next-block
next-block: ; preds = %entry-block, %before_rhs, %then-block-4924-
%.sroa.5.8.r_113.sroa.0.0.copyload156168 = phi i64 [ %21, %then-block-4924- ], [ %13, %entry-block ], [ %13, %before_rhs ]
%.sroa.8.16.load157164 = phi i64 [ %20, %then-block-4924- ], [ %15, %entry-block ], [ %15, %before_rhs ]
%most_significant_q_limb.0 = phi i64 [ 1, %then-block-4924- ], [ 0, %entry-block ], [ 0, %before_rhs ]
%22 = xor i64 %9, -1
%23 = icmp slt i64 %9, 0
tail call void @llvm.assume(i1 %23) #20, !noalias !251
%24 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %22, i64 -1, i64 %9) #20, !noalias !254, !srcloc !146
%25 = extractvalue { i64, i64 } %24, 1
%26 = mul i64 %25, %9
%27 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %26, i64 %11) #20
%28 = extractvalue { i64, i1 } %27, 0
%29 = extractvalue { i64, i1 } %27, 1
br i1 %29, label %then-block-5136-.i, label %next-block.i
then-block-5136-.i: ; preds = %next-block
%30 = add i64 %25, -1
%31 = icmp uge i64 %28, %9
%..i118 = sext i1 %31 to i64
%32 = sub i64 %28, %9
%33 = add i64 %30, %..i118
%.neg65.i = select i1 %31, i64 %.op.i, i64 0
%34 = add i64 %32, %.neg65.i
br label %next-block.i
next-block.i: ; preds = %then-block-5136-.i, %next-block
%.sroa.048.0.62.i = phi i64 [ %34, %then-block-5136-.i ], [ %28, %next-block ]
%v.sroa.0.0.i = phi i64 [ %33, %then-block-5136-.i ], [ %25, %next-block ]
%35 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %11, i64 %v.sroa.0.0.i) #20, !noalias !257, !srcloc !19
%36 = extractvalue { i64, i64 } %35, 0
%37 = extractvalue { i64, i64 } %35, 1
%uadd.i = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %36, i64 %.sroa.048.0.62.i) #20
%38 = extractvalue { i64, i1 } %uadd.i, 0
%39 = extractvalue { i64, i1 } %uadd.i, 1
br i1 %39, label %then-block-5200-.i, label %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit
then-block-5200-.i: ; preds = %next-block.i
%40 = add i64 %v.sroa.0.0.i, -1
%41 = icmp ult i64 %38, %9
br i1 %41, label %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit, label %before_rhs.i120
before_rhs.i120: ; preds = %then-block-5200-.i
%42 = icmp ugt i64 %38, %9
%43 = icmp uge i64 %37, %11
%or.cond.i119 = or i1 %43, %42
%44 = add i64 %v.sroa.0.0.i, -2
%.64.i = select i1 %or.cond.i119, i64 %44, i64 %40
br label %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit
_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit: ; preds = %next-block.i, %then-block-5200-.i, %before_rhs.i120
%45 = phi i64 [ %.64.i, %before_rhs.i120 ], [ %v.sroa.0.0.i, %next-block.i ], [ %40, %then-block-5200-.i ]
%46 = sext i32 %1 to i64
%47 = add i32 %3, -3
%48 = icmp sgt i32 %47, -1
br i1 %48, label %while_body.lr.ph, label %while_exit
while_body.lr.ph: ; preds = %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit
%49 = sext i32 %47 to i64
%50 = add nsw i64 %6, -1
%51 = zext i32 %47 to i64
%52 = sub nsw i64 %50, %51
br label %while_body
while_exit.loopexit: ; preds = %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117
%.sroa.5126.8.r_14.sroa.0.0.copyload159.lcssa = phi i64 [ %.sroa.5126.8.r_14.sroa.0.0.copyload159, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%.sroa.8128.16.load160.lcssa = phi i64 [ %.sroa.8128.16.load160, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit
%53 = phi i64 [ %6, %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit ], [ %52, %while_exit.loopexit ]
%.sroa.8.16.load157163.lcssa = phi i64 [ %.sroa.8.16.load157164, %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit ], [ %.sroa.8128.16.load160.lcssa, %while_exit.loopexit ]
%.sroa.5.8.r_113.sroa.0.0.copyload156167.lcssa = phi i64 [ %.sroa.5.8.r_113.sroa.0.0.copyload156168, %_ZN2ll3div9invert_pi20h023c778a19a4ff6exubE.exit ], [ %.sroa.5126.8.r_14.sroa.0.0.copyload159.lcssa, %while_exit.loopexit ]
%54 = icmp eq i32 %1, 0
br i1 %54, label %next-block15, label %then-block-5032-
while_body: ; preds = %while_body.lr.ph, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117
%indvars.iv186 = phi i64 [ %49, %while_body.lr.ph ], [ %indvars.iv.next187, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%np.0181 = phi %"ll::limb::Limb"* [ %7, %while_body.lr.ph ], [ %55, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%i.0180 = phi i32 [ %47, %while_body.lr.ph ], [ %88, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%.sroa.8.16.load157163179 = phi i64 [ %.sroa.8.16.load157164, %while_body.lr.ph ], [ %.sroa.8128.16.load160, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%.sroa.5.8.r_113.sroa.0.0.copyload156167178 = phi i64 [ %.sroa.5.8.r_113.sroa.0.0.copyload156168, %while_body.lr.ph ], [ %.sroa.5126.8.r_14.sroa.0.0.copyload159, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117 ]
%55 = getelementptr inbounds %"ll::limb::Limb"* %np.0181, i64 -1
%n0.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %55, i64 0, i32 0
%n0.sroa.0.0.copyload = load i64* %n0.sroa.0.0..sroa_idx, align 8
%56 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %.sroa.5.8.r_113.sroa.0.0.copyload156167178, i64 %45) #20, !noalias !264, !srcloc !19
%57 = extractvalue { i64, i64 } %56, 0
%58 = extractvalue { i64, i64 } %56, 1
%59 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %58, i64 %57, i64 %.sroa.8.16.load157163179, i64 %.sroa.5.8.r_113.sroa.0.0.copyload156167178) #20, !noalias !273, !srcloc !161
%60 = extractvalue { i64, i64 } %59, 0
%61 = extractvalue { i64, i64 } %59, 1
%62 = mul i64 %61, %9
%63 = sub i64 %.sroa.8.16.load157163179, %62
%64 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %n0.sroa.0.0.copyload, i64 %63, i64 %11, i64 %9) #20, !noalias !278, !srcloc !250
%65 = extractvalue { i64, i64 } %64, 0
%66 = extractvalue { i64, i64 } %64, 1
%67 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %11, i64 %61) #20, !noalias !283, !srcloc !19
%68 = extractvalue { i64, i64 } %67, 0
%69 = extractvalue { i64, i64 } %67, 1
%70 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %65, i64 %66, i64 %69, i64 %68) #20, !noalias !290, !srcloc !250
%71 = extractvalue { i64, i64 } %70, 0
%72 = extractvalue { i64, i64 } %70, 1
%73 = add i64 %61, 1
%74 = icmp uge i64 %72, %60
%..i109 = sext i1 %74 to i64
%75 = add i64 %73, %..i109
%76 = select i1 %74, i64 %9, i64 0
%77 = select i1 %74, i64 %11, i64 0
%78 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %71, i64 %72, i64 %77, i64 %76) #20, !noalias !295, !srcloc !161
%79 = extractvalue { i64, i64 } %78, 0
%80 = extractvalue { i64, i64 } %78, 1
%81 = icmp ult i64 %80, %9
br i1 %81, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117, label %before_rhs.i111
before_rhs.i111: ; preds = %while_body
%82 = icmp ugt i64 %80, %9
%83 = icmp uge i64 %79, %11
%or.cond.i110 = or i1 %82, %83
br i1 %or.cond.i110, label %then-block-5367-.i114, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117
then-block-5367-.i114: ; preds = %before_rhs.i111
%84 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %79, i64 %80, i64 %11, i64 %9) #20, !noalias !300, !srcloc !250
%85 = extractvalue { i64, i64 } %84, 0
%86 = extractvalue { i64, i64 } %84, 1
%87 = add i64 %75, 1
br label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117
_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit117: ; preds = %while_body, %before_rhs.i111, %then-block-5367-.i114
%.sroa.8128.16.load160 = phi i64 [ %85, %then-block-5367-.i114 ], [ %79, %before_rhs.i111 ], [ %79, %while_body ]
%.sroa.5126.8.r_14.sroa.0.0.copyload159 = phi i64 [ %86, %then-block-5367-.i114 ], [ %80, %before_rhs.i111 ], [ %80, %while_body ]
%.sroa.0124.0.q.sroa.0.0.copyload158 = phi i64 [ %87, %then-block-5367-.i114 ], [ %75, %before_rhs.i111 ], [ %75, %while_body ]
%.sum172 = add nsw i64 %indvars.iv186, %46
%q.sroa.0.0..sroa_idx49 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum172, i32 0
store i64 %.sroa.0124.0.q.sroa.0.0.copyload158, i64* %q.sroa.0.0..sroa_idx49, align 8
%88 = add nsw i32 %i.0180, -1
%89 = icmp sgt i32 %i.0180, 0
%indvars.iv.next187 = add nsw i64 %indvars.iv186, -1
br i1 %89, label %while_body, label %while_exit.loopexit
then-block-5032-: ; preds = %while_exit
%90 = sub i32 0, %1
%91 = sext i32 %90 to i64
%.sum170 = add nsw i64 %46, %91
%i8.0173 = add i32 %1, -1
%92 = icmp sgt i32 %i8.0173, -1
br i1 %92, label %while_body11.lr.ph, label %next-block15
while_body11.lr.ph: ; preds = %then-block-5032-
%93 = sext i32 %i8.0173 to i64
br label %while_body11
while_body11: ; preds = %while_body11.lr.ph, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit
%indvars.iv = phi i64 [ %93, %while_body11.lr.ph ], [ %indvars.iv.next, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
%i8.0176 = phi i32 [ %i8.0173, %while_body11.lr.ph ], [ %i8.0, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
%.sroa.8.16.load157161175 = phi i64 [ %.sroa.8.16.load157163.lcssa, %while_body11.lr.ph ], [ %.sroa.8.16.load157, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
%.sroa.5.8.r_113.sroa.0.0.copyload156165174 = phi i64 [ %.sroa.5.8.r_113.sroa.0.0.copyload156167.lcssa, %while_body11.lr.ph ], [ %.sroa.5.8.r_113.sroa.0.0.copyload156, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
%94 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %.sroa.5.8.r_113.sroa.0.0.copyload156165174, i64 %45) #20, !noalias !305, !srcloc !19
%95 = extractvalue { i64, i64 } %94, 0
%96 = extractvalue { i64, i64 } %94, 1
%97 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %96, i64 %95, i64 %.sroa.8.16.load157161175, i64 %.sroa.5.8.r_113.sroa.0.0.copyload156165174) #20, !noalias !314, !srcloc !161
%98 = extractvalue { i64, i64 } %97, 0
%99 = extractvalue { i64, i64 } %97, 1
%100 = mul i64 %99, %9
%101 = sub i64 %.sroa.8.16.load157161175, %100
%102 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 0, i64 %101, i64 %11, i64 %9) #20, !noalias !319, !srcloc !250
%103 = extractvalue { i64, i64 } %102, 0
%104 = extractvalue { i64, i64 } %102, 1
%105 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %11, i64 %99) #20, !noalias !324, !srcloc !19
%106 = extractvalue { i64, i64 } %105, 0
%107 = extractvalue { i64, i64 } %105, 1
%108 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %103, i64 %104, i64 %107, i64 %106) #20, !noalias !331, !srcloc !250
%109 = extractvalue { i64, i64 } %108, 0
%110 = extractvalue { i64, i64 } %108, 1
%111 = add i64 %99, 1
%112 = icmp uge i64 %110, %98
%..i = sext i1 %112 to i64
%113 = add i64 %111, %..i
%114 = select i1 %112, i64 %9, i64 0
%115 = select i1 %112, i64 %11, i64 0
%116 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %109, i64 %110, i64 %115, i64 %114) #20, !noalias !336, !srcloc !161
%117 = extractvalue { i64, i64 } %116, 0
%118 = extractvalue { i64, i64 } %116, 1
%119 = icmp ult i64 %118, %9
br i1 %119, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit, label %before_rhs.i
before_rhs.i: ; preds = %while_body11
%120 = icmp ugt i64 %118, %9
%121 = icmp uge i64 %117, %11
%or.cond.i = or i1 %120, %121
br i1 %or.cond.i, label %then-block-5367-.i, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit
then-block-5367-.i: ; preds = %before_rhs.i
%122 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %117, i64 %118, i64 %11, i64 %9) #20, !noalias !341, !srcloc !250
%123 = extractvalue { i64, i64 } %122, 0
%124 = extractvalue { i64, i64 } %122, 1
%125 = add i64 %113, 1
br label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit
_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit: ; preds = %while_body11, %before_rhs.i, %then-block-5367-.i
%.sroa.8.16.load157 = phi i64 [ %123, %then-block-5367-.i ], [ %117, %before_rhs.i ], [ %117, %while_body11 ]
%.sroa.5.8.r_113.sroa.0.0.copyload156 = phi i64 [ %124, %then-block-5367-.i ], [ %118, %before_rhs.i ], [ %118, %while_body11 ]
%.sroa.0.0.q12.sroa.0.0.copyload155 = phi i64 [ %125, %then-block-5367-.i ], [ %113, %before_rhs.i ], [ %113, %while_body11 ]
%.sum171 = add nsw i64 %.sum170, %indvars.iv
%q12.sroa.0.0..sroa_idx26 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %.sum171, i32 0
store i64 %.sroa.0.0.q12.sroa.0.0.copyload155, i64* %q12.sroa.0.0..sroa_idx26, align 8
%i8.0 = add nsw i32 %i8.0176, -1
%126 = icmp sgt i32 %i8.0176, 0
%indvars.iv.next = add nsw i64 %indvars.iv, -1
br i1 %126, label %while_body11, label %next-block15.loopexit
next-block15.loopexit: ; preds = %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit
%.sroa.5.8.r_113.sroa.0.0.copyload156.lcssa = phi i64 [ %.sroa.5.8.r_113.sroa.0.0.copyload156, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
%.sroa.8.16.load157.lcssa = phi i64 [ %.sroa.8.16.load157, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit ]
br label %next-block15
next-block15: ; preds = %next-block15.loopexit, %then-block-5032-, %while_exit
%.sroa.5.8.r_113.sroa.0.0.copyload156166 = phi i64 [ %.sroa.5.8.r_113.sroa.0.0.copyload156167.lcssa, %while_exit ], [ %.sroa.5.8.r_113.sroa.0.0.copyload156167.lcssa, %then-block-5032- ], [ %.sroa.5.8.r_113.sroa.0.0.copyload156.lcssa, %next-block15.loopexit ]
%.sroa.8.16.load157162 = phi i64 [ %.sroa.8.16.load157163.lcssa, %while_exit ], [ %.sroa.8.16.load157163.lcssa, %then-block-5032- ], [ %.sroa.8.16.load157.lcssa, %next-block15.loopexit ]
%.sum188 = add nsw i64 %53, 1
%127 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %.sum188, i32 0
store i64 %.sroa.5.8.r_113.sroa.0.0.copyload156166, i64* %127, align 8
%128 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %53, i32 0
store i64 %.sroa.8.16.load157162, i64* %128, align 8
ret i64 %most_significant_q_limb.0
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$2gt20h52117567250fe1db4edE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp ugt i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64, i64) unnamed_addr #2 {
entry-block:
%5 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %2, i64 %1, i64 %4, i64 %3) #20, !noalias !346, !srcloc !250
%6 = extractvalue { i64, i64 } %5, 0
%7 = extractvalue { i64, i64 } %5, 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %7, i64* %high.sroa.0.0..sroa_idx.i, align 8, !alias.scope !346
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %6, i64* %low.sroa.0.0..sroa_idx.i, align 8, !alias.scope !346
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb20Limb.Mul$LT$Limb$GT$3mul20h92bd0f7b7f31dcd4R5cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = mul i64 %1, %0
ret i64 %2
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb5add_220h2af897905fcee546hjdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64, i64) unnamed_addr #2 {
entry-block:
%5 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %2, i64 %1, i64 %4, i64 %3) #20, !noalias !349, !srcloc !161
%6 = extractvalue { i64, i64 } %5, 0
%7 = extractvalue { i64, i64 } %5, 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %7, i64* %high.sroa.0.0..sroa_idx.i, align 8, !alias.scope !349
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %6, i64* %low.sroa.0.0..sroa_idx.i, align 8, !alias.scope !349
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23Limb.Add$LT$BaseInt$GT$3add20hfcf25701cd81a5aaA3cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = add i64 %1, %0
ret i64 %2
}
; Function Attrs: uwtable
define void @_ZN2ll3div6divrem20h475d48b23673b97d7ybE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #6 {
entry-block:
%6 = bitcast %"ll::limb::Limb"* %1 to i8*
%7 = bitcast %"ll::limb::Limb"* %2 to i8*
%8 = sub i32 0, %5
%dtmp = alloca [2 x %"ll::limb::Limb"], align 8
%9 = icmp slt i32 %3, %5
br i1 %9, label %then-block-5460-, label %else-block
then-block-5460-: ; preds = %entry-block
%10 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 0, i64* %10, align 8
%11 = icmp sgt i32 %3, 0
br i1 %11, label %while_body.lr.ph.i, label %clean_custom_
while_body.lr.ph.i: ; preds = %then-block-5460-
%12 = add i32 %3, -1
%13 = zext i32 %12 to i64
%14 = add nuw nsw i64 %13, 1
%end.idx516 = add nuw nsw i64 %13, 1
%n.vec518 = and i64 %14, 8589934588
%cmp.zero520 = icmp eq i64 %n.vec518, 0
%15 = add i32 %3, -1
%16 = zext i32 %15 to i64
br i1 %cmp.zero520, label %middle.block513, label %vector.memcheck530
vector.memcheck530: ; preds = %while_body.lr.ph.i
%scevgep524 = getelementptr %"ll::limb::Limb"* %2, i64 %16
%bound0526 = icmp uge %"ll::limb::Limb"* %scevgep524, %1
%scevgep522 = getelementptr %"ll::limb::Limb"* %1, i64 %16
%bound1527 = icmp uge %"ll::limb::Limb"* %scevgep522, %2
%memcheck.conflict529 = and i1 %bound0526, %bound1527
br i1 %memcheck.conflict529, label %middle.block513, label %vector.body512.preheader
vector.body512.preheader: ; preds = %vector.memcheck530
br label %vector.body512
vector.body512: ; preds = %vector.body512.preheader, %vector.body512
%index515 = phi i64 [ %index.next536, %vector.body512 ], [ 0, %vector.body512.preheader ]
%17 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %index515, i32 0
%18 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %index515, i32 0
%19 = bitcast i64* %17 to <2 x i64>*
%wide.load541 = load <2 x i64>* %19, align 8
%20 = getelementptr i64* %17, i64 2
%21 = bitcast i64* %20 to <2 x i64>*
%wide.load542 = load <2 x i64>* %21, align 8
%22 = bitcast i64* %18 to <2 x i64>*
store <2 x i64> %wide.load541, <2 x i64>* %22, align 8
%23 = getelementptr i64* %18, i64 2
%24 = bitcast i64* %23 to <2 x i64>*
store <2 x i64> %wide.load542, <2 x i64>* %24, align 8
%index.next536 = add i64 %index515, 4
%25 = icmp eq i64 %index.next536, %n.vec518
br i1 %25, label %middle.block513.loopexit, label %vector.body512, !llvm.loop !352
middle.block513.loopexit: ; preds = %vector.body512
br label %middle.block513
middle.block513: ; preds = %middle.block513.loopexit, %vector.memcheck530, %while_body.lr.ph.i
%resume.val531 = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck530 ], [ %n.vec518, %middle.block513.loopexit ]
%cmp.n535 = icmp eq i64 %end.idx516, %resume.val531
br i1 %cmp.n535, label %clean_custom_, label %while_body.i.preheader
while_body.i.preheader: ; preds = %middle.block513
%26 = trunc i64 %resume.val531 to i32
%27 = sub i32 %3, %26
%28 = add i32 %3, -1
%29 = sub i32 %28, %26
%xtraiter = and i32 %27, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i.prol ], [ %resume.val531, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.i.prol, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.i.prol, i32 0
%32 = load i64* %30, align 8
store i64 %32, i64* %31, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %12
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !353
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val531, %while_body.i.preheader ], [ %indvars.iv.next.i.prol, %while_body.i.prol ]
%33 = icmp ult i32 %29, 3
br i1 %33, label %clean_custom_.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i ]
%34 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.i, i32 0
%35 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.i, i32 0
%36 = load i64* %34, align 8
store i64 %36, i64* %35, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%37 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i, i32 0
%39 = load i64* %37, align 8
store i64 %39, i64* %38, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%40 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i.1, i32 0
%41 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i.1, i32 0
%42 = load i64* %40, align 8
store i64 %42, i64* %41, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%43 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i.2, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i.2, i32 0
%45 = load i64* %43, align 8
store i64 %45, i64* %44, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %12
br i1 %exitcond.3, label %clean_custom_.loopexit.unr-lcssa, label %while_body.i, !llvm.loop !354
clean_custom_.loopexit.unr-lcssa: ; preds = %while_body.i
br label %clean_custom_.loopexit
clean_custom_.loopexit: ; preds = %while_body.i.preheader.split, %clean_custom_.loopexit.unr-lcssa
br label %clean_custom_
clean_custom_.loopexit549: ; preds = %while_body.i.i
br label %clean_custom_
clean_custom_.loopexit550: ; preds = %while_body.i.i422
br label %clean_custom_
clean_custom_.loopexit551.unr-lcssa: ; preds = %while_body.i358
br label %clean_custom_.loopexit551
clean_custom_.loopexit551: ; preds = %while_body.i358.preheader.split, %clean_custom_.loopexit551.unr-lcssa
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit551, %clean_custom_.loopexit550, %clean_custom_.loopexit549, %clean_custom_.loopexit, %middle.block, %middle.block513, %cond.i, %match_case, %then-block-5460-, %match_case7
ret void
else-block: ; preds = %entry-block
%46 = icmp eq i32 %3, %5
br i1 %46, label %while_cond.i.preheader, label %join2
while_cond.i.preheader: ; preds = %else-block
br label %while_cond.i
while_cond.i: ; preds = %while_cond.i.preheader, %while_body.i340
%i.0.in.i = phi i32 [ %i.0.i, %while_body.i340 ], [ %5, %while_cond.i.preheader ]
%i.0.i = add i32 %i.0.in.i, -1
%47 = icmp sgt i32 %i.0.i, -1
br i1 %47, label %while_body.i340, label %join2.loopexit
while_body.i340: ; preds = %while_cond.i
%48 = sext i32 %i.0.i to i64
%49 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %48, i32 0
%50 = load i64* %49, align 8
%51 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 %48, i32 0
%52 = load i64* %51, align 8
%53 = icmp eq i64 %50, %52
br i1 %53, label %while_cond.i, label %then-block-13036-.i
then-block-13036-.i: ; preds = %while_body.i340
%.lcssa555 = phi i64 [ %52, %while_body.i340 ]
%.lcssa554 = phi i64 [ %50, %while_body.i340 ]
%54 = icmp ugt i64 %.lcssa554, %.lcssa555
br i1 %54, label %join2, label %match_case
match_case: ; preds = %then-block-13036-.i
%55 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 0, i64* %55, align 8
%56 = icmp sgt i32 %5, 0
br i1 %56, label %while_body.lr.ph.i353, label %clean_custom_
while_body.lr.ph.i353: ; preds = %match_case
%57 = add i32 %5, -1
%58 = zext i32 %57 to i64
%59 = add nuw nsw i64 %58, 1
%end.idx = add nuw nsw i64 %58, 1
%n.vec = and i64 %59, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%60 = add i32 %5, -1
%61 = zext i32 %60 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i353
%scevgep499 = getelementptr %"ll::limb::Limb"* %2, i64 %61
%bound0 = icmp uge %"ll::limb::Limb"* %scevgep499, %1
%scevgep = getelementptr %"ll::limb::Limb"* %1, i64 %61
%bound1 = icmp uge %"ll::limb::Limb"* %scevgep, %2
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%62 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %index, i32 0
%63 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %index, i32 0
%64 = bitcast i64* %62 to <2 x i64>*
%wide.load = load <2 x i64>* %64, align 8
%65 = getelementptr i64* %62, i64 2
%66 = bitcast i64* %65 to <2 x i64>*
%wide.load502 = load <2 x i64>* %66, align 8
%67 = bitcast i64* %63 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %67, align 8
%68 = getelementptr i64* %63, i64 2
%69 = bitcast i64* %68 to <2 x i64>*
store <2 x i64> %wide.load502, <2 x i64>* %69, align 8
%index.next = add i64 %index, 4
%70 = icmp eq i64 %index.next, %n.vec
br i1 %70, label %middle.block.loopexit, label %vector.body, !llvm.loop !355
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i353
%resume.val = phi i64 [ 0, %while_body.lr.ph.i353 ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %clean_custom_, label %while_body.i358.preheader
while_body.i358.preheader: ; preds = %middle.block
%71 = trunc i64 %resume.val to i32
%72 = sub i32 %5, %71
%73 = add i32 %5, -1
%74 = sub i32 %73, %71
%xtraiter573 = and i32 %72, 3
%lcmp.mod574 = icmp ne i32 %xtraiter573, 0
br i1 %lcmp.mod574, label %while_body.i358.prol, label %while_body.i358.preheader.split
while_body.i358.prol: ; preds = %while_body.i358.prol, %while_body.i358.preheader
%indvars.iv.i354.prol = phi i64 [ %indvars.iv.next.i355.prol, %while_body.i358.prol ], [ %resume.val, %while_body.i358.preheader ]
%prol.iter575 = phi i32 [ %xtraiter573, %while_body.i358.preheader ], [ %prol.iter575.sub, %while_body.i358.prol ]
%75 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.i354.prol, i32 0
%76 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.i354.prol, i32 0
%77 = load i64* %75, align 8
store i64 %77, i64* %76, align 8
%indvars.iv.next.i355.prol = add nuw nsw i64 %indvars.iv.i354.prol, 1
%lftr.wideiv489.prol = trunc i64 %indvars.iv.i354.prol to i32
%exitcond490.prol = icmp eq i32 %lftr.wideiv489.prol, %57
%prol.iter575.sub = sub i32 %prol.iter575, 1
%prol.iter575.cmp = icmp ne i32 %prol.iter575.sub, 0
br i1 %prol.iter575.cmp, label %while_body.i358.prol, label %while_body.i358.preheader.split, !llvm.loop !356
while_body.i358.preheader.split: ; preds = %while_body.i358.prol, %while_body.i358.preheader
%indvars.iv.i354.unr = phi i64 [ %resume.val, %while_body.i358.preheader ], [ %indvars.iv.next.i355.prol, %while_body.i358.prol ]
%78 = icmp ult i32 %74, 3
br i1 %78, label %clean_custom_.loopexit551, label %while_body.i358.preheader.split.split
while_body.i358.preheader.split.split: ; preds = %while_body.i358.preheader.split
br label %while_body.i358
while_body.i358: ; preds = %while_body.i358, %while_body.i358.preheader.split.split
%indvars.iv.i354 = phi i64 [ %indvars.iv.i354.unr, %while_body.i358.preheader.split.split ], [ %indvars.iv.next.i355.3, %while_body.i358 ]
%79 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.i354, i32 0
%80 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.i354, i32 0
%81 = load i64* %79, align 8
store i64 %81, i64* %80, align 8
%indvars.iv.next.i355 = add nuw nsw i64 %indvars.iv.i354, 1
%lftr.wideiv489 = trunc i64 %indvars.iv.i354 to i32
%82 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i355, i32 0
%83 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i355, i32 0
%84 = load i64* %82, align 8
store i64 %84, i64* %83, align 8
%indvars.iv.next.i355.1 = add nuw nsw i64 %indvars.iv.next.i355, 1
%lftr.wideiv489.1 = trunc i64 %indvars.iv.next.i355 to i32
%85 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i355.1, i32 0
%86 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i355.1, i32 0
%87 = load i64* %85, align 8
store i64 %87, i64* %86, align 8
%indvars.iv.next.i355.2 = add nuw nsw i64 %indvars.iv.next.i355.1, 1
%lftr.wideiv489.2 = trunc i64 %indvars.iv.next.i355.1 to i32
%88 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %indvars.iv.next.i355.2, i32 0
%89 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.i355.2, i32 0
%90 = load i64* %88, align 8
store i64 %90, i64* %89, align 8
%indvars.iv.next.i355.3 = add nuw nsw i64 %indvars.iv.next.i355.2, 1
%lftr.wideiv489.3 = trunc i64 %indvars.iv.next.i355.2 to i32
%exitcond490.3 = icmp eq i32 %lftr.wideiv489.3, %57
br i1 %exitcond490.3, label %clean_custom_.loopexit551.unr-lcssa, label %while_body.i358, !llvm.loop !357
join2.loopexit: ; preds = %while_cond.i
br label %join2
join2: ; preds = %join2.loopexit, %then-block-13036-.i, %else-block
switch i32 %5, label %normal-return53 [
i32 1, label %match_case7
i32 2, label %normal-return10
]
match_case7: ; preds = %join2
%91 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 0, i32 0
%92 = load i64* %91, align 8
%93 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %0, i32 0, %"ll::limb::Limb"* %2, i32 %3, i64 %92)
%r.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
store i64 %93, i64* %r.sroa.0.0..sroa_idx, align 8
br label %clean_custom_
clean_custom_9.loopexit: ; preds = %while_body.i.i394
%.fca.1.extract247464 = extractvalue { i8*, i32 } %308, 1
br label %clean_custom_9
clean_custom_9: ; preds = %clean_custom_9.loopexit, %cond.i392.thread, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370
%.sroa.0256.0 = phi i8* [ %.fca.0.extract233, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370 ], [ %.fca.0.extract245458, %cond.i392.thread ], [ %.fca.0.extract245463, %clean_custom_9.loopexit ]
%.sroa.10.0 = phi i32 [ %.fca.1.extract235, %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370 ], [ %.fca.1.extract247459, %cond.i392.thread ], [ %.fca.1.extract247464, %clean_custom_9.loopexit ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0256.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.10.0, 1
resume { i8*, i32 } %.fca.1.insert
normal-return10: ; preds = %join2
%dh.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %4, i64 1, i32 0
%dh.sroa.0.0.copyload = load i64* %dh.sroa.0.0..sroa_idx, align 8
%94 = tail call i64 @llvm.ctlz.i64(i64 %dh.sroa.0.0.copyload, i1 false) #20
%95 = icmp eq i64 %94, 0
br i1 %95, label %then-block-5562-, label %normal-return26
then-block-5562-: ; preds = %normal-return10
%96 = add i32 %3, 1
%97 = sext i32 %96 to i64
%98 = shl nsw i64 %97, 3
%99 = add nsw i64 %98, 16
%100 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %99)
to label %normal-return13 unwind label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370
normal-return13: ; preds = %then-block-5562-
%101 = getelementptr inbounds i8* %100, i64 8
%102 = bitcast i8* %101 to i64*
store i64 %99, i64* %102, align 8, !noalias !358
%103 = bitcast i8* %100 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %103, align 8, !noalias !358
%104 = getelementptr inbounds i8* %100, i64 16
%105 = bitcast i8* %104 to %"ll::limb::Limb"*
%106 = icmp sgt i32 %3, 0
br i1 %106, label %while_body.lr.ph.i360, label %normal-return20
while_body.lr.ph.i360: ; preds = %normal-return13
%107 = add i32 %3, -1
%108 = zext i32 %107 to i64
%109 = shl nuw nsw i64 %108, 3
%110 = add nuw nsw i64 %109, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %104, i8* %7, i64 %110, i32 8, i1 false)
br label %normal-return20
_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370: ; preds = %normal-return26, %then-block-5562-
%111 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract233 = extractvalue { i8*, i32 } %111, 0
%.fca.1.extract235 = extractvalue { i8*, i32 } %111, 1
br label %clean_custom_9
normal-return20: ; preds = %while_body.lr.ph.i360, %normal-return13
%112 = tail call i64 @_ZN2ll3div8divrem_220h1f2cce3c56b8ddf96nbE(%"ll::limb::Limb"* %0, i32 0, %"ll::limb::Limb"* %105, i32 %3, %"ll::limb::Limb"* %4)
%113 = add i32 %3, -2
%114 = sext i32 %113 to i64
%qhl.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %114, i32 0
store i64 %112, i64* %qhl.sroa.0.0..sroa_idx, align 8
%115 = bitcast i8* %104 to i64*
%116 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%117 = load i64* %115, align 8
store i64 %117, i64* %116, align 8
%118 = getelementptr inbounds i8* %100, i64 24
%119 = bitcast i8* %118 to i64*
%120 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1, i32 0
%121 = load i64* %119, align 8
store i64 %121, i64* %120, align 8
br label %while_body.i.i422.preheader
normal-return26: ; preds = %normal-return10
%122 = bitcast [2 x %"ll::limb::Limb"]* %dtmp to i8*
call void @llvm.lifetime.start(i64 16, i8* %122)
%123 = getelementptr inbounds [2 x %"ll::limb::Limb"]* %dtmp, i64 0, i64 0
%124 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 0, i32 0
%125 = load i64* %124, align 8
%126 = and i64 %94, 63
%127 = shl i64 %125, %126
%128 = getelementptr inbounds [2 x %"ll::limb::Limb"]* %dtmp, i64 0, i64 0, i32 0
store i64 %127, i64* %128, align 8
%129 = shl i64 %dh.sroa.0.0.copyload, %126
%130 = sub nsw i64 0, %94
%131 = and i64 %130, 63
%132 = lshr i64 %125, %131
%133 = or i64 %132, %129
%134 = getelementptr inbounds [2 x %"ll::limb::Limb"]* %dtmp, i64 0, i64 1, i32 0
store i64 %133, i64* %134, align 8
%135 = add i32 %3, 1
%136 = sext i32 %135 to i64
%137 = shl nsw i64 %136, 3
%138 = add nsw i64 %137, 16
%139 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %138)
to label %normal-return29 unwind label %_ZN17mem..TmpAllocator9drop.845517ha77bfee93b28cea3E.exit370
normal-return29: ; preds = %normal-return26
%140 = getelementptr inbounds i8* %139, i64 8
%141 = bitcast i8* %140 to i64*
store i64 %138, i64* %141, align 8, !noalias !363
%142 = bitcast i8* %139 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %142, align 8, !noalias !363
%143 = getelementptr inbounds i8* %139, i64 16
%144 = bitcast i8* %143 to %"ll::limb::Limb"*
%145 = add i32 %3, -1
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %146
%l.sroa.0.0..sroa_idx.i405 = getelementptr inbounds %"ll::limb::Limb"* %147, i64 0, i32 0
%l.sroa.0.0.copyload.i406 = load i64* %l.sroa.0.0..sroa_idx.i405, align 8
%148 = lshr i64 %l.sroa.0.0.copyload.i406, %131
%high_limb.sroa.0.049.i407 = shl i64 %l.sroa.0.0.copyload.i406, %126
%149 = icmp eq i32 %145, 0
br i1 %149, label %normal-return37, label %while_body.lr.ph.i408
while_body.lr.ph.i408: ; preds = %normal-return29
%150 = getelementptr inbounds %"ll::limb::Limb"* %144, i64 %146
%151 = add i32 %3, -2
%152 = zext i32 %151 to i64
%153 = add i32 %3, -1
%xtraiter570 = and i32 %153, 3
%lcmp.mod571 = icmp ne i32 %xtraiter570, 0
br i1 %lcmp.mod571, label %while_body.i418.prol, label %while_body.lr.ph.i408.split
while_body.i418.prol: ; preds = %while_body.i418.prol, %while_body.lr.ph.i408
%high_limb.sroa.0.053.i411.prol = phi i64 [ %high_limb.sroa.0.049.i407, %while_body.lr.ph.i408 ], [ %high_limb.sroa.0.0.i417.prol, %while_body.i418.prol ]
%rp.052.i412.prol = phi %"ll::limb::Limb"* [ %150, %while_body.lr.ph.i408 ], [ %158, %while_body.i418.prol ]
%xp.051.i413.prol = phi %"ll::limb::Limb"* [ %147, %while_body.lr.ph.i408 ], [ %154, %while_body.i418.prol ]
%xs.050.i414.prol = phi i32 [ %145, %while_body.lr.ph.i408 ], [ %159, %while_body.i418.prol ]
%prol.iter572 = phi i32 [ %xtraiter570, %while_body.lr.ph.i408 ], [ %prol.iter572.sub, %while_body.i418.prol ]
%154 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i413.prol, i64 -1
%low.sroa.0.0..sroa_idx.i415.prol = getelementptr inbounds %"ll::limb::Limb"* %154, i64 0, i32 0
%low.sroa.0.0.copyload.i416.prol = load i64* %low.sroa.0.0..sroa_idx.i415.prol, align 8
%155 = lshr i64 %low.sroa.0.0.copyload.i416.prol, %131
%156 = or i64 %155, %high_limb.sroa.0.053.i411.prol
%157 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i412.prol, i64 0, i32 0
store i64 %156, i64* %157, align 8
%158 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i412.prol, i64 -1
%159 = add i32 %xs.050.i414.prol, -1
%high_limb.sroa.0.0.i417.prol = shl i64 %low.sroa.0.0.copyload.i416.prol, %126
%160 = icmp eq i32 %159, 0
%prol.iter572.sub = sub i32 %prol.iter572, 1
%prol.iter572.cmp = icmp ne i32 %prol.iter572.sub, 0
br i1 %prol.iter572.cmp, label %while_body.i418.prol, label %while_body.lr.ph.i408.split, !llvm.loop !368
while_body.lr.ph.i408.split: ; preds = %while_body.i418.prol, %while_body.lr.ph.i408
%high_limb.sroa.0.0.i417.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i408 ], [ %high_limb.sroa.0.0.i417.prol, %while_body.i418.prol ]
%high_limb.sroa.0.053.i411.unr = phi i64 [ %high_limb.sroa.0.049.i407, %while_body.lr.ph.i408 ], [ %high_limb.sroa.0.0.i417.prol, %while_body.i418.prol ]
%rp.052.i412.unr = phi %"ll::limb::Limb"* [ %150, %while_body.lr.ph.i408 ], [ %158, %while_body.i418.prol ]
%xp.051.i413.unr = phi %"ll::limb::Limb"* [ %147, %while_body.lr.ph.i408 ], [ %154, %while_body.i418.prol ]
%xs.050.i414.unr = phi i32 [ %145, %while_body.lr.ph.i408 ], [ %159, %while_body.i418.prol ]
%161 = icmp ult i32 %151, 3
br i1 %161, label %normal-return37.loopexit, label %while_body.lr.ph.i408.split.split
while_body.lr.ph.i408.split.split: ; preds = %while_body.lr.ph.i408.split
br label %while_body.i418
while_body.i418: ; preds = %while_body.i418, %while_body.lr.ph.i408.split.split
%high_limb.sroa.0.053.i411 = phi i64 [ %high_limb.sroa.0.053.i411.unr, %while_body.lr.ph.i408.split.split ], [ %high_limb.sroa.0.0.i417.3, %while_body.i418 ]
%rp.052.i412 = phi %"ll::limb::Limb"* [ %rp.052.i412.unr, %while_body.lr.ph.i408.split.split ], [ %184, %while_body.i418 ]
%xp.051.i413 = phi %"ll::limb::Limb"* [ %xp.051.i413.unr, %while_body.lr.ph.i408.split.split ], [ %180, %while_body.i418 ]
%xs.050.i414 = phi i32 [ %xs.050.i414.unr, %while_body.lr.ph.i408.split.split ], [ %185, %while_body.i418 ]
%162 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i413, i64 -1
%low.sroa.0.0..sroa_idx.i415 = getelementptr inbounds %"ll::limb::Limb"* %162, i64 0, i32 0
%low.sroa.0.0.copyload.i416 = load i64* %low.sroa.0.0..sroa_idx.i415, align 8
%163 = lshr i64 %low.sroa.0.0.copyload.i416, %131
%164 = or i64 %163, %high_limb.sroa.0.053.i411
%165 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i412, i64 0, i32 0
store i64 %164, i64* %165, align 8
%166 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i412, i64 -1
%167 = add i32 %xs.050.i414, -1
%high_limb.sroa.0.0.i417 = shl i64 %low.sroa.0.0.copyload.i416, %126
%168 = getelementptr inbounds %"ll::limb::Limb"* %162, i64 -1
%low.sroa.0.0..sroa_idx.i415.1 = getelementptr inbounds %"ll::limb::Limb"* %168, i64 0, i32 0
%low.sroa.0.0.copyload.i416.1 = load i64* %low.sroa.0.0..sroa_idx.i415.1, align 8
%169 = lshr i64 %low.sroa.0.0.copyload.i416.1, %131
%170 = or i64 %169, %high_limb.sroa.0.0.i417
%171 = getelementptr inbounds %"ll::limb::Limb"* %166, i64 0, i32 0
store i64 %170, i64* %171, align 8
%172 = getelementptr inbounds %"ll::limb::Limb"* %166, i64 -1
%173 = add i32 %167, -1
%high_limb.sroa.0.0.i417.1 = shl i64 %low.sroa.0.0.copyload.i416.1, %126
%174 = getelementptr inbounds %"ll::limb::Limb"* %168, i64 -1
%low.sroa.0.0..sroa_idx.i415.2 = getelementptr inbounds %"ll::limb::Limb"* %174, i64 0, i32 0
%low.sroa.0.0.copyload.i416.2 = load i64* %low.sroa.0.0..sroa_idx.i415.2, align 8
%175 = lshr i64 %low.sroa.0.0.copyload.i416.2, %131
%176 = or i64 %175, %high_limb.sroa.0.0.i417.1
%177 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 0, i32 0
store i64 %176, i64* %177, align 8
%178 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 -1
%179 = add i32 %173, -1
%high_limb.sroa.0.0.i417.2 = shl i64 %low.sroa.0.0.copyload.i416.2, %126
%180 = getelementptr inbounds %"ll::limb::Limb"* %174, i64 -1
%low.sroa.0.0..sroa_idx.i415.3 = getelementptr inbounds %"ll::limb::Limb"* %180, i64 0, i32 0
%low.sroa.0.0.copyload.i416.3 = load i64* %low.sroa.0.0..sroa_idx.i415.3, align 8
%181 = lshr i64 %low.sroa.0.0.copyload.i416.3, %131
%182 = or i64 %181, %high_limb.sroa.0.0.i417.2
%183 = getelementptr inbounds %"ll::limb::Limb"* %178, i64 0, i32 0
store i64 %182, i64* %183, align 8
%184 = getelementptr inbounds %"ll::limb::Limb"* %178, i64 -1
%185 = add i32 %179, -1
%high_limb.sroa.0.0.i417.3 = shl i64 %low.sroa.0.0.copyload.i416.3, %126
%186 = icmp eq i32 %185, 0
br i1 %186, label %normal-return37.loopexit.unr-lcssa, label %while_body.i418
normal-return37.loopexit.unr-lcssa: ; preds = %while_body.i418
%high_limb.sroa.0.0.i417.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i417.3, %while_body.i418 ]
br label %normal-return37.loopexit
normal-return37.loopexit: ; preds = %while_body.lr.ph.i408.split, %normal-return37.loopexit.unr-lcssa
%high_limb.sroa.0.0.i417.lcssa = phi i64 [ %high_limb.sroa.0.0.i417.lcssa.unr, %while_body.lr.ph.i408.split ], [ %high_limb.sroa.0.0.i417.lcssa.ph, %normal-return37.loopexit.unr-lcssa ]
%187 = add nsw i64 %146, -1
%188 = sub nsw i64 %187, %152
br label %normal-return37
normal-return37: ; preds = %normal-return37.loopexit, %normal-return29
%high_limb.sroa.0.0.lcssa.i409 = phi i64 [ %high_limb.sroa.0.049.i407, %normal-return29 ], [ %high_limb.sroa.0.0.i417.lcssa, %normal-return37.loopexit ]
%189 = phi i64 [ %146, %normal-return29 ], [ %188, %normal-return37.loopexit ]
%high_limb.sroa.0.0..sroa_idx.i410 = getelementptr inbounds %"ll::limb::Limb"* %144, i64 %189, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i409, i64* %high_limb.sroa.0.0..sroa_idx.i410, align 8
%190 = sext i32 %3 to i64
%191 = getelementptr inbounds %"ll::limb::Limb"* %144, i64 %190, i32 0
store i64 %148, i64* %191, align 8
%192 = icmp eq i64 %148, 0
%193 = zext i1 %192 to i32
%. = xor i32 %193, 1
%194 = add i32 %., %3
%195 = call i64 @_ZN2ll3div8divrem_220h1f2cce3c56b8ddf96nbE(%"ll::limb::Limb"* %0, i32 0, %"ll::limb::Limb"* %144, i32 %194, %"ll::limb::Limb"* %123)
br i1 %192, label %normal-return38, label %normal-return46
normal-return38: ; preds = %normal-return37
%196 = add i32 %3, -2
%197 = sext i32 %196 to i64
%qhl35.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %197, i32 0
store i64 %195, i64* %qhl35.sroa.0.0..sroa_idx, align 8
br label %normal-return46
normal-return46: ; preds = %normal-return38, %normal-return37
%198 = bitcast i8* %143 to i64*
%199 = load i64* %198, align 8
%200 = lshr i64 %199, %126
%201 = getelementptr inbounds i8* %139, i64 24
%202 = bitcast i8* %201 to i64*
%203 = load i64* %202, align 8
%204 = shl i64 %203, %131
%205 = or i64 %204, %200
%206 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
store i64 %205, i64* %206, align 8
%207 = lshr i64 %203, %126
%208 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 1, i32 0
store i64 %207, i64* %208, align 8
call void @llvm.lifetime.end(i64 16, i8* %122)
br label %while_body.i.i422.preheader
while_body.i.i422.preheader: ; preds = %normal-return20, %normal-return46
%mark.09.i.i421.ph.in = phi i8* [ %100, %normal-return20 ], [ %139, %normal-return46 ]
%mark.09.i.i421.ph = bitcast i8* %mark.09.i.i421.ph.in to %"mem::Marker"*
br label %while_body.i.i422
while_body.i.i422: ; preds = %while_body.i.i422.preheader, %while_body.i.i422
%mark.09.i.i421 = phi %"mem::Marker"* [ %210, %while_body.i.i422 ], [ %mark.09.i.i421.ph, %while_body.i.i422.preheader ]
%209 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i421, i64 0, i32 0
%210 = load %"mem::Marker"** %209, align 8, !noalias !369
%211 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i421, i64 0, i32 1
%212 = load i64* %211, align 8, !noalias !369
%213 = bitcast %"mem::Marker"* %mark.09.i.i421 to i8*
tail call void @je_sdallocx(i8* %213, i64 %212, i32 0)
%214 = icmp eq %"mem::Marker"* %210, null
br i1 %214, label %clean_custom_.loopexit550, label %while_body.i.i422
normal-return53: ; preds = %join2
%215 = add i32 %5, -1
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds %"ll::limb::Limb"* %4, i64 %216
%dh50.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %217, i64 0, i32 0
%dh50.sroa.0.0.copyload = load i64* %dh50.sroa.0.0..sroa_idx, align 8
%218 = tail call i64 @llvm.ctlz.i64(i64 %dh50.sroa.0.0.copyload, i1 false) #20
%219 = icmp eq i64 %218, 0
br i1 %219, label %then-block-5800-, label %else-block63
then-block-5800-: ; preds = %normal-return53
%220 = sext i32 %3 to i64
%221 = shl nsw i64 %220, 3
%222 = add nsw i64 %221, 16
%223 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %222)
to label %normal-return59 unwind label %cond.i392.thread
normal-return59: ; preds = %then-block-5800-
%224 = getelementptr inbounds i8* %223, i64 8
%225 = bitcast i8* %224 to i64*
store i64 %222, i64* %225, align 8, !noalias !372
%226 = bitcast i8* %223 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %226, align 8, !noalias !372
%227 = bitcast i8* %223 to %"mem::Marker"*
%228 = getelementptr inbounds i8* %223, i64 16
%229 = bitcast i8* %228 to %"ll::limb::Limb"*
%230 = icmp sgt i32 %3, 0
br i1 %230, label %while_body.lr.ph.i396, label %normal-return76
while_body.lr.ph.i396: ; preds = %normal-return59
%231 = add i32 %3, -1
%232 = zext i32 %231 to i64
%233 = shl nuw nsw i64 %232, 3
%234 = add nuw nsw i64 %233, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %228, i8* %7, i64 %234, i32 8, i1 false)
br label %normal-return76
cond.i392.thread: ; preds = %then-block-5800-, %else-block63
%235 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract245458 = extractvalue { i8*, i32 } %235, 0
%.fca.1.extract247459 = extractvalue { i8*, i32 } %235, 1
br label %clean_custom_9
while_body.i.i394: ; preds = %cond.i392.thread462, %while_body.i.i394
%mark.09.i.i393 = phi %"mem::Marker"* [ %237, %while_body.i.i394 ], [ %250, %cond.i392.thread462 ]
%236 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i393, i64 0, i32 0
%237 = load %"mem::Marker"** %236, align 8, !noalias !377
%238 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i393, i64 0, i32 1
%239 = load i64* %238, align 8, !noalias !377
%240 = bitcast %"mem::Marker"* %mark.09.i.i393 to i8*
tail call void @je_sdallocx(i8* %240, i64 %239, i32 0)
%241 = icmp eq %"mem::Marker"* %237, null
br i1 %241, label %clean_custom_9.loopexit, label %while_body.i.i394
else-block63: ; preds = %normal-return53
%242 = add i32 %3, 1
%243 = sext i32 %242 to i64
%244 = shl nsw i64 %243, 3
%245 = add nsw i64 %244, 16
%246 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %245)
to label %normal-return64 unwind label %cond.i392.thread
normal-return64: ; preds = %else-block63
%247 = getelementptr inbounds i8* %246, i64 8
%248 = bitcast i8* %247 to i64*
store i64 %245, i64* %248, align 8, !noalias !380
%249 = bitcast i8* %246 to %"mem::Marker"**
store %"mem::Marker"* null, %"mem::Marker"** %249, align 8, !noalias !380
%250 = bitcast i8* %246 to %"mem::Marker"*
%251 = getelementptr inbounds i8* %246, i64 16
%252 = bitcast i8* %251 to %"ll::limb::Limb"*
%253 = add i32 %3, -1
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %254
%l.sroa.0.0..sroa_idx.i376 = getelementptr inbounds %"ll::limb::Limb"* %255, i64 0, i32 0
%l.sroa.0.0.copyload.i377 = load i64* %l.sroa.0.0..sroa_idx.i376, align 8
%256 = sub nsw i64 0, %218
%257 = and i64 %256, 63
%258 = lshr i64 %l.sroa.0.0.copyload.i377, %257
%259 = and i64 %218, 63
%high_limb.sroa.0.049.i378 = shl i64 %l.sroa.0.0.copyload.i377, %259
%260 = icmp eq i32 %253, 0
br i1 %260, label %normal-return67, label %while_body.lr.ph.i379
while_body.lr.ph.i379: ; preds = %normal-return64
%261 = getelementptr inbounds %"ll::limb::Limb"* %252, i64 %254
%262 = add i32 %3, -2
%263 = zext i32 %262 to i64
%264 = add i32 %3, -1
%xtraiter567 = and i32 %264, 3
%lcmp.mod568 = icmp ne i32 %xtraiter567, 0
br i1 %lcmp.mod568, label %while_body.i389.prol, label %while_body.lr.ph.i379.split
while_body.i389.prol: ; preds = %while_body.i389.prol, %while_body.lr.ph.i379
%high_limb.sroa.0.053.i382.prol = phi i64 [ %high_limb.sroa.0.049.i378, %while_body.lr.ph.i379 ], [ %high_limb.sroa.0.0.i388.prol, %while_body.i389.prol ]
%rp.052.i383.prol = phi %"ll::limb::Limb"* [ %261, %while_body.lr.ph.i379 ], [ %269, %while_body.i389.prol ]
%xp.051.i384.prol = phi %"ll::limb::Limb"* [ %255, %while_body.lr.ph.i379 ], [ %265, %while_body.i389.prol ]
%xs.050.i385.prol = phi i32 [ %253, %while_body.lr.ph.i379 ], [ %270, %while_body.i389.prol ]
%prol.iter569 = phi i32 [ %xtraiter567, %while_body.lr.ph.i379 ], [ %prol.iter569.sub, %while_body.i389.prol ]
%265 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i384.prol, i64 -1
%low.sroa.0.0..sroa_idx.i386.prol = getelementptr inbounds %"ll::limb::Limb"* %265, i64 0, i32 0
%low.sroa.0.0.copyload.i387.prol = load i64* %low.sroa.0.0..sroa_idx.i386.prol, align 8
%266 = lshr i64 %low.sroa.0.0.copyload.i387.prol, %257
%267 = or i64 %266, %high_limb.sroa.0.053.i382.prol
%268 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i383.prol, i64 0, i32 0
store i64 %267, i64* %268, align 8
%269 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i383.prol, i64 -1
%270 = add i32 %xs.050.i385.prol, -1
%high_limb.sroa.0.0.i388.prol = shl i64 %low.sroa.0.0.copyload.i387.prol, %259
%271 = icmp eq i32 %270, 0
%prol.iter569.sub = sub i32 %prol.iter569, 1
%prol.iter569.cmp = icmp ne i32 %prol.iter569.sub, 0
br i1 %prol.iter569.cmp, label %while_body.i389.prol, label %while_body.lr.ph.i379.split, !llvm.loop !385
while_body.lr.ph.i379.split: ; preds = %while_body.i389.prol, %while_body.lr.ph.i379
%high_limb.sroa.0.0.i388.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i379 ], [ %high_limb.sroa.0.0.i388.prol, %while_body.i389.prol ]
%high_limb.sroa.0.053.i382.unr = phi i64 [ %high_limb.sroa.0.049.i378, %while_body.lr.ph.i379 ], [ %high_limb.sroa.0.0.i388.prol, %while_body.i389.prol ]
%rp.052.i383.unr = phi %"ll::limb::Limb"* [ %261, %while_body.lr.ph.i379 ], [ %269, %while_body.i389.prol ]
%xp.051.i384.unr = phi %"ll::limb::Limb"* [ %255, %while_body.lr.ph.i379 ], [ %265, %while_body.i389.prol ]
%xs.050.i385.unr = phi i32 [ %253, %while_body.lr.ph.i379 ], [ %270, %while_body.i389.prol ]
%272 = icmp ult i32 %262, 3
br i1 %272, label %normal-return67.loopexit, label %while_body.lr.ph.i379.split.split
while_body.lr.ph.i379.split.split: ; preds = %while_body.lr.ph.i379.split
br label %while_body.i389
while_body.i389: ; preds = %while_body.i389, %while_body.lr.ph.i379.split.split
%high_limb.sroa.0.053.i382 = phi i64 [ %high_limb.sroa.0.053.i382.unr, %while_body.lr.ph.i379.split.split ], [ %high_limb.sroa.0.0.i388.3, %while_body.i389 ]
%rp.052.i383 = phi %"ll::limb::Limb"* [ %rp.052.i383.unr, %while_body.lr.ph.i379.split.split ], [ %295, %while_body.i389 ]
%xp.051.i384 = phi %"ll::limb::Limb"* [ %xp.051.i384.unr, %while_body.lr.ph.i379.split.split ], [ %291, %while_body.i389 ]
%xs.050.i385 = phi i32 [ %xs.050.i385.unr, %while_body.lr.ph.i379.split.split ], [ %296, %while_body.i389 ]
%273 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i384, i64 -1
%low.sroa.0.0..sroa_idx.i386 = getelementptr inbounds %"ll::limb::Limb"* %273, i64 0, i32 0
%low.sroa.0.0.copyload.i387 = load i64* %low.sroa.0.0..sroa_idx.i386, align 8
%274 = lshr i64 %low.sroa.0.0.copyload.i387, %257
%275 = or i64 %274, %high_limb.sroa.0.053.i382
%276 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i383, i64 0, i32 0
store i64 %275, i64* %276, align 8
%277 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i383, i64 -1
%278 = add i32 %xs.050.i385, -1
%high_limb.sroa.0.0.i388 = shl i64 %low.sroa.0.0.copyload.i387, %259
%279 = getelementptr inbounds %"ll::limb::Limb"* %273, i64 -1
%low.sroa.0.0..sroa_idx.i386.1 = getelementptr inbounds %"ll::limb::Limb"* %279, i64 0, i32 0
%low.sroa.0.0.copyload.i387.1 = load i64* %low.sroa.0.0..sroa_idx.i386.1, align 8
%280 = lshr i64 %low.sroa.0.0.copyload.i387.1, %257
%281 = or i64 %280, %high_limb.sroa.0.0.i388
%282 = getelementptr inbounds %"ll::limb::Limb"* %277, i64 0, i32 0
store i64 %281, i64* %282, align 8
%283 = getelementptr inbounds %"ll::limb::Limb"* %277, i64 -1
%284 = add i32 %278, -1
%high_limb.sroa.0.0.i388.1 = shl i64 %low.sroa.0.0.copyload.i387.1, %259
%285 = getelementptr inbounds %"ll::limb::Limb"* %279, i64 -1
%low.sroa.0.0..sroa_idx.i386.2 = getelementptr inbounds %"ll::limb::Limb"* %285, i64 0, i32 0
%low.sroa.0.0.copyload.i387.2 = load i64* %low.sroa.0.0..sroa_idx.i386.2, align 8
%286 = lshr i64 %low.sroa.0.0.copyload.i387.2, %257
%287 = or i64 %286, %high_limb.sroa.0.0.i388.1
%288 = getelementptr inbounds %"ll::limb::Limb"* %283, i64 0, i32 0
store i64 %287, i64* %288, align 8
%289 = getelementptr inbounds %"ll::limb::Limb"* %283, i64 -1
%290 = add i32 %284, -1
%high_limb.sroa.0.0.i388.2 = shl i64 %low.sroa.0.0.copyload.i387.2, %259
%291 = getelementptr inbounds %"ll::limb::Limb"* %285, i64 -1
%low.sroa.0.0..sroa_idx.i386.3 = getelementptr inbounds %"ll::limb::Limb"* %291, i64 0, i32 0
%low.sroa.0.0.copyload.i387.3 = load i64* %low.sroa.0.0..sroa_idx.i386.3, align 8
%292 = lshr i64 %low.sroa.0.0.copyload.i387.3, %257
%293 = or i64 %292, %high_limb.sroa.0.0.i388.2
%294 = getelementptr inbounds %"ll::limb::Limb"* %289, i64 0, i32 0
store i64 %293, i64* %294, align 8
%295 = getelementptr inbounds %"ll::limb::Limb"* %289, i64 -1
%296 = add i32 %290, -1
%high_limb.sroa.0.0.i388.3 = shl i64 %low.sroa.0.0.copyload.i387.3, %259
%297 = icmp eq i32 %296, 0
br i1 %297, label %normal-return67.loopexit.unr-lcssa, label %while_body.i389
normal-return67.loopexit.unr-lcssa: ; preds = %while_body.i389
%high_limb.sroa.0.0.i388.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i388.3, %while_body.i389 ]
br label %normal-return67.loopexit
normal-return67.loopexit: ; preds = %while_body.lr.ph.i379.split, %normal-return67.loopexit.unr-lcssa
%high_limb.sroa.0.0.i388.lcssa = phi i64 [ %high_limb.sroa.0.0.i388.lcssa.unr, %while_body.lr.ph.i379.split ], [ %high_limb.sroa.0.0.i388.lcssa.ph, %normal-return67.loopexit.unr-lcssa ]
%298 = add nsw i64 %254, -1
%299 = sub nsw i64 %298, %263
br label %normal-return67
normal-return67: ; preds = %normal-return67.loopexit, %normal-return64
%high_limb.sroa.0.0.lcssa.i380 = phi i64 [ %high_limb.sroa.0.049.i378, %normal-return64 ], [ %high_limb.sroa.0.0.i388.lcssa, %normal-return67.loopexit ]
%300 = phi i64 [ %254, %normal-return64 ], [ %299, %normal-return67.loopexit ]
%high_limb.sroa.0.0..sroa_idx.i381 = getelementptr inbounds %"ll::limb::Limb"* %252, i64 %300, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i380, i64* %high_limb.sroa.0.0..sroa_idx.i381, align 8
%301 = icmp eq i64 %258, 0
br i1 %301, label %join70, label %normal-return68
normal-return68: ; preds = %normal-return67
%302 = sext i32 %3 to i64
%303 = getelementptr inbounds %"ll::limb::Limb"* %252, i64 %302, i32 0
store i64 %258, i64* %303, align 8
br label %join70
join70: ; preds = %normal-return67, %normal-return68
%ns_tmp58.0 = phi i32 [ %242, %normal-return68 ], [ %3, %normal-return67 ]
%304 = sext i32 %5 to i64
%305 = shl nsw i64 %304, 3
%306 = add nsw i64 %305, 16
%307 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %306)
to label %normal-return72 unwind label %cond.i392.thread462
cond.i392.thread462: ; preds = %join70
%308 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract245463 = extractvalue { i8*, i32 } %308, 0
br label %while_body.i.i394
normal-return72: ; preds = %join70
%309 = getelementptr inbounds i8* %307, i64 8
%310 = bitcast i8* %309 to i64*
store i64 %306, i64* %310, align 8, !noalias !386
%311 = bitcast i8* %307 to i8**
store i8* %246, i8** %311, align 8, !noalias !386
%312 = bitcast i8* %307 to %"mem::Marker"*
%313 = getelementptr inbounds i8* %307, i64 16
%314 = bitcast i8* %313 to %"ll::limb::Limb"*
%l.sroa.0.0.copyload.i = load i64* %dh50.sroa.0.0..sroa_idx, align 8
%high_limb.sroa.0.049.i = shl i64 %l.sroa.0.0.copyload.i, %259
%315 = icmp eq i32 %215, 0
br i1 %315, label %normal-return73, label %while_body.lr.ph.i373
while_body.lr.ph.i373: ; preds = %normal-return72
%316 = getelementptr inbounds %"ll::limb::Limb"* %314, i64 %216
%317 = add i32 %5, -2
%318 = zext i32 %317 to i64
%319 = add i32 %5, -1
%xtraiter564 = and i32 %319, 3
%lcmp.mod565 = icmp ne i32 %xtraiter564, 0
br i1 %lcmp.mod565, label %while_body.i374.prol, label %while_body.lr.ph.i373.split
while_body.i374.prol: ; preds = %while_body.i374.prol, %while_body.lr.ph.i373
%high_limb.sroa.0.053.i.prol = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i373 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i374.prol ]
%rp.052.i.prol = phi %"ll::limb::Limb"* [ %316, %while_body.lr.ph.i373 ], [ %324, %while_body.i374.prol ]
%xp.051.i.prol = phi %"ll::limb::Limb"* [ %217, %while_body.lr.ph.i373 ], [ %320, %while_body.i374.prol ]
%xs.050.i.prol = phi i32 [ %215, %while_body.lr.ph.i373 ], [ %325, %while_body.i374.prol ]
%prol.iter566 = phi i32 [ %xtraiter564, %while_body.lr.ph.i373 ], [ %prol.iter566.sub, %while_body.i374.prol ]
%320 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i.prol, i64 -1
%low.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %320, i64 0, i32 0
%low.sroa.0.0.copyload.i.prol = load i64* %low.sroa.0.0..sroa_idx.i.prol, align 8
%321 = lshr i64 %low.sroa.0.0.copyload.i.prol, %257
%322 = or i64 %321, %high_limb.sroa.0.053.i.prol
%323 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 0, i32 0
store i64 %322, i64* %323, align 8
%324 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 -1
%325 = add i32 %xs.050.i.prol, -1
%high_limb.sroa.0.0.i.prol = shl i64 %low.sroa.0.0.copyload.i.prol, %259
%326 = icmp eq i32 %325, 0
%prol.iter566.sub = sub i32 %prol.iter566, 1
%prol.iter566.cmp = icmp ne i32 %prol.iter566.sub, 0
br i1 %prol.iter566.cmp, label %while_body.i374.prol, label %while_body.lr.ph.i373.split, !llvm.loop !391
while_body.lr.ph.i373.split: ; preds = %while_body.i374.prol, %while_body.lr.ph.i373
%high_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i373 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i374.prol ]
%high_limb.sroa.0.053.i.unr = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i373 ], [ %high_limb.sroa.0.0.i.prol, %while_body.i374.prol ]
%rp.052.i.unr = phi %"ll::limb::Limb"* [ %316, %while_body.lr.ph.i373 ], [ %324, %while_body.i374.prol ]
%xp.051.i.unr = phi %"ll::limb::Limb"* [ %217, %while_body.lr.ph.i373 ], [ %320, %while_body.i374.prol ]
%xs.050.i.unr = phi i32 [ %215, %while_body.lr.ph.i373 ], [ %325, %while_body.i374.prol ]
%327 = icmp ult i32 %317, 3
br i1 %327, label %normal-return73.loopexit, label %while_body.lr.ph.i373.split.split
while_body.lr.ph.i373.split.split: ; preds = %while_body.lr.ph.i373.split
br label %while_body.i374
while_body.i374: ; preds = %while_body.i374, %while_body.lr.ph.i373.split.split
%high_limb.sroa.0.053.i = phi i64 [ %high_limb.sroa.0.053.i.unr, %while_body.lr.ph.i373.split.split ], [ %high_limb.sroa.0.0.i.3, %while_body.i374 ]
%rp.052.i = phi %"ll::limb::Limb"* [ %rp.052.i.unr, %while_body.lr.ph.i373.split.split ], [ %350, %while_body.i374 ]
%xp.051.i = phi %"ll::limb::Limb"* [ %xp.051.i.unr, %while_body.lr.ph.i373.split.split ], [ %346, %while_body.i374 ]
%xs.050.i = phi i32 [ %xs.050.i.unr, %while_body.lr.ph.i373.split.split ], [ %351, %while_body.i374 ]
%328 = getelementptr inbounds %"ll::limb::Limb"* %xp.051.i, i64 -1
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %328, i64 0, i32 0
%low.sroa.0.0.copyload.i = load i64* %low.sroa.0.0..sroa_idx.i, align 8
%329 = lshr i64 %low.sroa.0.0.copyload.i, %257
%330 = or i64 %329, %high_limb.sroa.0.053.i
%331 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 0, i32 0
store i64 %330, i64* %331, align 8
%332 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 -1
%333 = add i32 %xs.050.i, -1
%high_limb.sroa.0.0.i = shl i64 %low.sroa.0.0.copyload.i, %259
%334 = getelementptr inbounds %"ll::limb::Limb"* %328, i64 -1
%low.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %334, i64 0, i32 0
%low.sroa.0.0.copyload.i.1 = load i64* %low.sroa.0.0..sroa_idx.i.1, align 8
%335 = lshr i64 %low.sroa.0.0.copyload.i.1, %257
%336 = or i64 %335, %high_limb.sroa.0.0.i
%337 = getelementptr inbounds %"ll::limb::Limb"* %332, i64 0, i32 0
store i64 %336, i64* %337, align 8
%338 = getelementptr inbounds %"ll::limb::Limb"* %332, i64 -1
%339 = add i32 %333, -1
%high_limb.sroa.0.0.i.1 = shl i64 %low.sroa.0.0.copyload.i.1, %259
%340 = getelementptr inbounds %"ll::limb::Limb"* %334, i64 -1
%low.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %340, i64 0, i32 0
%low.sroa.0.0.copyload.i.2 = load i64* %low.sroa.0.0..sroa_idx.i.2, align 8
%341 = lshr i64 %low.sroa.0.0.copyload.i.2, %257
%342 = or i64 %341, %high_limb.sroa.0.0.i.1
%343 = getelementptr inbounds %"ll::limb::Limb"* %338, i64 0, i32 0
store i64 %342, i64* %343, align 8
%344 = getelementptr inbounds %"ll::limb::Limb"* %338, i64 -1
%345 = add i32 %339, -1
%high_limb.sroa.0.0.i.2 = shl i64 %low.sroa.0.0.copyload.i.2, %259
%346 = getelementptr inbounds %"ll::limb::Limb"* %340, i64 -1
%low.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %346, i64 0, i32 0
%low.sroa.0.0.copyload.i.3 = load i64* %low.sroa.0.0..sroa_idx.i.3, align 8
%347 = lshr i64 %low.sroa.0.0.copyload.i.3, %257
%348 = or i64 %347, %high_limb.sroa.0.0.i.2
%349 = getelementptr inbounds %"ll::limb::Limb"* %344, i64 0, i32 0
store i64 %348, i64* %349, align 8
%350 = getelementptr inbounds %"ll::limb::Limb"* %344, i64 -1
%351 = add i32 %345, -1
%high_limb.sroa.0.0.i.3 = shl i64 %low.sroa.0.0.copyload.i.3, %259
%352 = icmp eq i32 %351, 0
br i1 %352, label %normal-return73.loopexit.unr-lcssa, label %while_body.i374
normal-return73.loopexit.unr-lcssa: ; preds = %while_body.i374
%high_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i.3, %while_body.i374 ]
br label %normal-return73.loopexit
normal-return73.loopexit: ; preds = %while_body.lr.ph.i373.split, %normal-return73.loopexit.unr-lcssa
%high_limb.sroa.0.0.i.lcssa = phi i64 [ %high_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i373.split ], [ %high_limb.sroa.0.0.i.lcssa.ph, %normal-return73.loopexit.unr-lcssa ]
%353 = add nsw i64 %216, -1
%354 = sub nsw i64 %353, %318
br label %normal-return73
normal-return73: ; preds = %normal-return73.loopexit, %normal-return72
%high_limb.sroa.0.0.lcssa.i = phi i64 [ %high_limb.sroa.0.049.i, %normal-return72 ], [ %high_limb.sroa.0.0.i.lcssa, %normal-return73.loopexit ]
%355 = phi i64 [ %216, %normal-return72 ], [ %354, %normal-return73.loopexit ]
%high_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %314, i64 %355, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i, i64* %high_limb.sroa.0.0..sroa_idx.i, align 8
br label %normal-return76
normal-return76: ; preds = %while_body.lr.ph.i396, %normal-return59, %normal-return73
%tmp49.sroa.0.0.452 = phi %"mem::Marker"* [ %312, %normal-return73 ], [ %227, %normal-return59 ], [ %227, %while_body.lr.ph.i396 ]
%ns_tmp58.1 = phi i32 [ %ns_tmp58.0, %normal-return73 ], [ %3, %normal-return59 ], [ %3, %while_body.lr.ph.i396 ]
%np_tmp57.0 = phi %"ll::limb::Limb"* [ %252, %normal-return73 ], [ %229, %normal-return59 ], [ %229, %while_body.lr.ph.i396 ]
%dp_tmp56.0 = phi %"ll::limb::Limb"* [ %314, %normal-return73 ], [ %4, %normal-return59 ], [ %4, %while_body.lr.ph.i396 ]
%np_tmp57.0483 = bitcast %"ll::limb::Limb"* %np_tmp57.0 to i8*
%356 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 %216, i32 0
%357 = load i64* %356, align 8
%358 = add i32 %5, -2
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 %359, i32 0
%361 = load i64* %360, align 8
%362 = xor i64 %357, -1
%363 = icmp slt i64 %357, 0
tail call void @llvm.assume(i1 %363) #20, !noalias !392
%364 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %362, i64 -1, i64 %357) #20, !noalias !395, !srcloc !146
%365 = extractvalue { i64, i64 } %364, 1
%366 = mul i64 %365, %357
%367 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %366, i64 %361) #20
%368 = extractvalue { i64, i1 } %367, 0
%369 = extractvalue { i64, i1 } %367, 1
br i1 %369, label %then-block-5136-.i, label %next-block.i
then-block-5136-.i: ; preds = %normal-return76
%.op.i = sub i64 0, %357
%370 = add i64 %365, -1
%371 = icmp uge i64 %368, %357
%..i371 = sext i1 %371 to i64
%372 = sub i64 %368, %357
%373 = add i64 %370, %..i371
%.neg65.i = select i1 %371, i64 %.op.i, i64 0
%374 = add i64 %372, %.neg65.i
br label %next-block.i
next-block.i: ; preds = %then-block-5136-.i, %normal-return76
%.sroa.048.0.62.i = phi i64 [ %374, %then-block-5136-.i ], [ %368, %normal-return76 ]
%v.sroa.0.0.i = phi i64 [ %373, %then-block-5136-.i ], [ %365, %normal-return76 ]
%375 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %361, i64 %v.sroa.0.0.i) #20, !noalias !398, !srcloc !19
%376 = extractvalue { i64, i64 } %375, 0
%377 = extractvalue { i64, i64 } %375, 1
%uadd.i = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %376, i64 %.sroa.048.0.62.i) #20
%378 = extractvalue { i64, i1 } %uadd.i, 0
%379 = extractvalue { i64, i1 } %uadd.i, 1
br i1 %379, label %then-block-5200-.i, label %normal-return77
then-block-5200-.i: ; preds = %next-block.i
%380 = add i64 %v.sroa.0.0.i, -1
%381 = icmp ult i64 %378, %357
br i1 %381, label %normal-return77, label %before_rhs.i
before_rhs.i: ; preds = %then-block-5200-.i
%382 = icmp ugt i64 %378, %357
%383 = icmp uge i64 %377, %361
%or.cond.i372 = or i1 %383, %382
%384 = add i64 %v.sroa.0.0.i, -2
%.64.i = select i1 %or.cond.i372, i64 %384, i64 %380
br label %normal-return77
normal-return77: ; preds = %before_rhs.i, %then-block-5200-.i, %next-block.i
%385 = phi i64 [ %.64.i, %before_rhs.i ], [ %v.sroa.0.0.i, %next-block.i ], [ %380, %then-block-5200-.i ]
%386 = sext i32 %ns_tmp58.1 to i64
%387 = sext i32 %8 to i64
%.sum.i = add nsw i64 %386, %387
%388 = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 %.sum.i
br label %while_cond.i.i
while_cond.i.i: ; preds = %while_body.i.i350, %normal-return77
%i.0.in.i.i = phi i32 [ %5, %normal-return77 ], [ %i.0.i.i, %while_body.i.i350 ]
%i.0.i.i = add i32 %i.0.in.i.i, -1
%389 = icmp sgt i32 %i.0.i.i, -1
br i1 %389, label %while_body.i.i350, label %match_else.i.loopexit
while_body.i.i350: ; preds = %while_cond.i.i
%390 = sext i32 %i.0.i.i to i64
%.sum208.i = add nsw i64 %390, %.sum.i
%391 = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 %.sum208.i, i32 0
%392 = load i64* %391, align 8
%393 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 %390, i32 0
%394 = load i64* %393, align 8
%395 = icmp eq i64 %392, %394
br i1 %395, label %while_cond.i.i, label %then-block-13036-.i.i
then-block-13036-.i.i: ; preds = %while_body.i.i350
%.lcssa553 = phi i64 [ %394, %while_body.i.i350 ]
%.lcssa552 = phi i64 [ %392, %while_body.i.i350 ]
%396 = icmp ugt i64 %.lcssa552, %.lcssa553
br i1 %396, label %match_else.i, label %join.i
match_else.i.loopexit: ; preds = %while_cond.i.i
br label %match_else.i
match_else.i: ; preds = %match_else.i.loopexit, %then-block-13036-.i.i
%xl.sroa.0.0..sroa_idx43.i.i145.i = getelementptr inbounds %"ll::limb::Limb"* %388, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i146.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i145.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i147.i = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i148.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i147.i, align 8
%397 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i146.i, i64 %yl.sroa.0.0.copyload46.i.i148.i) #20
%398 = extractvalue { i64, i1 } %397, 0
store i64 %398, i64* %xl.sroa.0.0..sroa_idx43.i.i145.i, align 8
%399 = icmp eq i32 %215, 0
br i1 %399, label %join.i, label %next-block.i.i161.preheader.i
next-block.i.i161.preheader.i: ; preds = %match_else.i
%400 = extractvalue { i64, i1 } %397, 1
%.47.i.i149.i = zext i1 %400 to i64
%401 = add i32 %5, -1
%402 = add i32 %5, -2
%xtraiter561 = and i32 %401, 1
%lcmp.mod562 = icmp ne i32 %xtraiter561, 0
br i1 %lcmp.mod562, label %next-block.i.i161.i.prol, label %next-block.i.i161.preheader.i.split
next-block.i.i161.i.prol: ; preds = %next-block.i.i161.preheader.i
%403 = getelementptr inbounds %"ll::limb::Limb"* %388, i64 1
%404 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 1
%xl.sroa.0.0..sroa_idx.i.i155.i.prol = getelementptr inbounds %"ll::limb::Limb"* %403, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i156.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i155.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i157.i.prol = getelementptr inbounds %"ll::limb::Limb"* %404, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i158.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i157.i.prol, align 8
%405 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i156.i.prol, i64 %yl.sroa.0.0.copyload.i.i158.i.prol) #20
%406 = extractvalue { i64, i1 } %405, 0
%407 = extractvalue { i64, i1 } %405, 1
%408 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %406, i64 %.47.i.i149.i) #20
%409 = extractvalue { i64, i1 } %408, 0
%410 = extractvalue { i64, i1 } %408, 1
%411 = or i1 %407, %410
%..i.i159.i.prol = zext i1 %411 to i64
store i64 %409, i64* %xl.sroa.0.0..sroa_idx.i.i155.i.prol, align 8
%412 = add i32 %215, -1
%413 = icmp eq i32 %412, 0
br label %next-block.i.i161.preheader.i.split
next-block.i.i161.preheader.i.split: ; preds = %next-block.i.i161.i.prol, %next-block.i.i161.preheader.i
%.unr563 = phi i32 [ %215, %next-block.i.i161.preheader.i ], [ %412, %next-block.i.i161.i.prol ]
%.52.i.i151.i.unr = phi i64 [ %.47.i.i149.i, %next-block.i.i161.preheader.i ], [ %..i.i159.i.prol, %next-block.i.i161.i.prol ]
%wp.051.i.i152.i.unr = phi %"ll::limb::Limb"* [ %388, %next-block.i.i161.preheader.i ], [ %403, %next-block.i.i161.i.prol ]
%yp.049.i.i154.i.unr = phi %"ll::limb::Limb"* [ %dp_tmp56.0, %next-block.i.i161.preheader.i ], [ %404, %next-block.i.i161.i.prol ]
%414 = icmp ult i32 %402, 1
br i1 %414, label %join.i.loopexit, label %next-block.i.i161.preheader.i.split.split
next-block.i.i161.preheader.i.split.split: ; preds = %next-block.i.i161.preheader.i.split
br label %next-block.i.i161.i
next-block.i.i161.i: ; preds = %next-block.i.i161.i, %next-block.i.i161.preheader.i.split.split
%415 = phi i32 [ %.unr563, %next-block.i.i161.preheader.i.split.split ], [ %435, %next-block.i.i161.i ]
%.52.i.i151.i = phi i64 [ %.52.i.i151.i.unr, %next-block.i.i161.preheader.i.split.split ], [ %..i.i159.i.1, %next-block.i.i161.i ]
%wp.051.i.i152.i = phi %"ll::limb::Limb"* [ %wp.051.i.i152.i.unr, %next-block.i.i161.preheader.i.split.split ], [ %426, %next-block.i.i161.i ]
%yp.049.i.i154.i = phi %"ll::limb::Limb"* [ %yp.049.i.i154.i.unr, %next-block.i.i161.preheader.i.split.split ], [ %427, %next-block.i.i161.i ]
%416 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i152.i, i64 1
%417 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i154.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i155.i = getelementptr inbounds %"ll::limb::Limb"* %416, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i156.i = load i64* %xl.sroa.0.0..sroa_idx.i.i155.i, align 8
%yl.sroa.0.0..sroa_idx.i.i157.i = getelementptr inbounds %"ll::limb::Limb"* %417, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i158.i = load i64* %yl.sroa.0.0..sroa_idx.i.i157.i, align 8
%418 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i156.i, i64 %yl.sroa.0.0.copyload.i.i158.i) #20
%419 = extractvalue { i64, i1 } %418, 0
%420 = extractvalue { i64, i1 } %418, 1
%421 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %419, i64 %.52.i.i151.i) #20
%422 = extractvalue { i64, i1 } %421, 0
%423 = extractvalue { i64, i1 } %421, 1
%424 = or i1 %420, %423
%..i.i159.i = zext i1 %424 to i64
store i64 %422, i64* %xl.sroa.0.0..sroa_idx.i.i155.i, align 8
%425 = add i32 %415, -1
%426 = getelementptr inbounds %"ll::limb::Limb"* %416, i64 1
%427 = getelementptr inbounds %"ll::limb::Limb"* %417, i64 1
%xl.sroa.0.0..sroa_idx.i.i155.i.1 = getelementptr inbounds %"ll::limb::Limb"* %426, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i156.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i155.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i157.i.1 = getelementptr inbounds %"ll::limb::Limb"* %427, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i158.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i157.i.1, align 8
%428 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i156.i.1, i64 %yl.sroa.0.0.copyload.i.i158.i.1) #20
%429 = extractvalue { i64, i1 } %428, 0
%430 = extractvalue { i64, i1 } %428, 1
%431 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %429, i64 %..i.i159.i) #20
%432 = extractvalue { i64, i1 } %431, 0
%433 = extractvalue { i64, i1 } %431, 1
%434 = or i1 %430, %433
%..i.i159.i.1 = zext i1 %434 to i64
store i64 %432, i64* %xl.sroa.0.0..sroa_idx.i.i155.i.1, align 8
%435 = add i32 %425, -1
%436 = icmp eq i32 %435, 0
br i1 %436, label %join.i.loopexit.unr-lcssa, label %next-block.i.i161.i
join.i.loopexit.unr-lcssa: ; preds = %next-block.i.i161.i
br label %join.i.loopexit
join.i.loopexit: ; preds = %next-block.i.i161.preheader.i.split, %join.i.loopexit.unr-lcssa
br label %join.i
join.i: ; preds = %join.i.loopexit, %match_else.i, %then-block-13036-.i.i
%qh.sroa.0.0.i = phi i64 [ 1, %match_else.i ], [ 0, %then-block-13036-.i.i ], [ 1, %join.i.loopexit ]
%437 = sub i32 %ns_tmp58.1, %5
%438 = add nsw i64 %359, 1
%439 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 %438, i32 0
%440 = load i64* %439, align 8
%441 = load i64* %360, align 8
%.sum204.i = add nsw i64 %386, -2
%.sum205.i = add nsw i64 %386, -1
%442 = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 %.sum205.i, i32 0
%443 = load i64* %442, align 8
%444 = icmp sgt i32 %437, 0
br i1 %444, label %while_body.lr.ph.i351, label %normal-return81
while_body.lr.ph.i351: ; preds = %join.i
%445 = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 %.sum204.i
%446 = sext i32 %437 to i64
%447 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %446
%.sum207.i = xor i64 %359, -1
%xl.sroa.0.0..sroa_idx.i.i167211.i = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 0, i32 0
%448 = icmp eq i32 %215, 0
%449 = trunc i64 %438 to i32
%450 = add i32 %449, -1
%451 = icmp eq i32 %450, 0
%452 = xor i32 %5, -1
%453 = add i32 %ns_tmp58.1, %452
%454 = zext i32 %453 to i64
%455 = add i32 %5, -2
%456 = add i32 %5, -3
br label %while_body.i352
while_body.i352: ; preds = %join17.i, %while_body.lr.ph.i351
%np1.0218.i = phi %"ll::limb::Limb"* [ %445, %while_body.lr.ph.i351 ], [ %457, %join17.i ]
%qp4.0217.i = phi %"ll::limb::Limb"* [ %447, %while_body.lr.ph.i351 ], [ %591, %join17.i ]
%i.0216.i = phi i32 [ %437, %while_body.lr.ph.i351 ], [ %592, %join17.i ]
%.sroa.5.8.r1.sroa.0.0.copyload195197215.i = phi i64 [ %443, %while_body.lr.ph.i351 ], [ %.sroa.5.8.r1.sroa.0.0.copyload195198.i, %join17.i ]
%457 = getelementptr inbounds %"ll::limb::Limb"* %np1.0218.i, i64 -1
%458 = getelementptr inbounds %"ll::limb::Limb"* %np1.0218.i, i64 0, i32 0
%459 = load i64* %458, align 8
%n0.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %457, i64 0, i32 0
%460 = icmp eq i64 %.sroa.5.8.r1.sroa.0.0.copyload195197215.i, %440
%461 = icmp eq i64 %459, %441
%or.cond.i = and i1 %460, %461
br i1 %or.cond.i, label %then-block-6226-.i, label %else-block.i
then-block-6226-.i: ; preds = %while_body.i352
%462 = getelementptr inbounds %"ll::limb::Limb"* %np1.0218.i, i64 %.sum207.i
%xl.sroa.0.0.copyload.i.i168212.i = load i64* %xl.sroa.0.0..sroa_idx.i.i167211.i, align 8
%463 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i168212.i, i64 -1) #20, !noalias !405, !srcloc !19
%464 = extractvalue { i64, i64 } %463, 1
%465 = getelementptr inbounds %"ll::limb::Limb"* %462, i64 0, i32 0
%466 = load i64* %465, align 8
%467 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %466, i64 %464) #20
%468 = extractvalue { i64, i1 } %467, 0
store i64 %468, i64* %465, align 8
br i1 %448, label %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i, label %next-block.i.i170.lr.ph.i
next-block.i.i170.lr.ph.i: ; preds = %then-block-6226-.i
%469 = insertvalue { i64, i1 } { i64 undef, i1 false }, i64 %464, 0
br label %next-block.i.i170.i
next-block.i.i170.i: ; preds = %next-block.i.i170.i, %next-block.i.i170.lr.ph.i
%470 = phi i32 [ %215, %next-block.i.i170.lr.ph.i ], [ %491, %next-block.i.i170.i ]
%471 = phi { i64, i1 } [ %467, %next-block.i.i170.lr.ph.i ], [ %489, %next-block.i.i170.i ]
%472 = phi { i64, i1 } [ %469, %next-block.i.i170.lr.ph.i ], [ %485, %next-block.i.i170.i ]
%473 = phi { i64, i64 } [ %463, %next-block.i.i170.lr.ph.i ], [ %483, %next-block.i.i170.i ]
%wp.0.i.i166214.i = phi %"ll::limb::Limb"* [ %462, %next-block.i.i170.lr.ph.i ], [ %481, %next-block.i.i170.i ]
%xp.0.i.i165213.i = phi %"ll::limb::Limb"* [ %dp_tmp56.0, %next-block.i.i170.lr.ph.i ], [ %482, %next-block.i.i170.i ]
%474 = extractvalue { i64, i1 } %472, 1
%475 = zext i1 %474 to i64
%476 = extractvalue { i64, i64 } %473, 0
%477 = extractvalue { i64, i1 } %471, 1
%478 = zext i1 %477 to i64
%479 = add i64 %476, %478
%480 = add i64 %479, %475
%481 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i.i166214.i, i64 1
%482 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i165213.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i167.i = getelementptr inbounds %"ll::limb::Limb"* %482, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i168.i = load i64* %xl.sroa.0.0..sroa_idx.i.i167.i, align 8
%483 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i168.i, i64 -1) #20, !noalias !405, !srcloc !19
%484 = extractvalue { i64, i64 } %483, 1
%485 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %484, i64 %480) #20
%486 = extractvalue { i64, i1 } %485, 0
%487 = getelementptr inbounds %"ll::limb::Limb"* %481, i64 0, i32 0
%488 = load i64* %487, align 8
%489 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %488, i64 %486) #20
%490 = extractvalue { i64, i1 } %489, 0
store i64 %490, i64* %487, align 8
%491 = add i32 %470, -1
%492 = icmp eq i32 %491, 0
br i1 %492, label %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i.loopexit, label %next-block.i.i170.i
_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i.loopexit: ; preds = %next-block.i.i170.i
br label %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i
_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i: ; preds = %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i.loopexit, %then-block-6226-.i
%493 = load i64* %458, align 8
br label %join17.i
else-block.i: ; preds = %while_body.i352
%n0.sroa.0.0.copyload.i = load i64* %n0.sroa.0.0..sroa_idx.i, align 8
%494 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %.sroa.5.8.r1.sroa.0.0.copyload195197215.i, i64 %385) #20, !noalias !412, !srcloc !19
%495 = extractvalue { i64, i64 } %494, 0
%496 = extractvalue { i64, i64 } %494, 1
%497 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %496, i64 %495, i64 %459, i64 %.sroa.5.8.r1.sroa.0.0.copyload195197215.i) #20, !noalias !421, !srcloc !161
%498 = extractvalue { i64, i64 } %497, 0
%499 = extractvalue { i64, i64 } %497, 1
%500 = mul i64 %499, %440
%501 = sub i64 %459, %500
%502 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %n0.sroa.0.0.copyload.i, i64 %501, i64 %441, i64 %440) #20, !noalias !426, !srcloc !250
%503 = extractvalue { i64, i64 } %502, 0
%504 = extractvalue { i64, i64 } %502, 1
%505 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %441, i64 %499) #20, !noalias !431, !srcloc !19
%506 = extractvalue { i64, i64 } %505, 0
%507 = extractvalue { i64, i64 } %505, 1
%508 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %503, i64 %504, i64 %507, i64 %506) #20, !noalias !438, !srcloc !250
%509 = extractvalue { i64, i64 } %508, 0
%510 = extractvalue { i64, i64 } %508, 1
%511 = add i64 %499, 1
%512 = icmp uge i64 %510, %498
%..i.i = sext i1 %512 to i64
%513 = add i64 %511, %..i.i
%514 = select i1 %512, i64 %440, i64 0
%515 = select i1 %512, i64 %441, i64 0
%516 = tail call { i64, i64 } asm "addq $4, $0\0A adcq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %509, i64 %510, i64 %515, i64 %514) #20, !noalias !443, !srcloc !161
%517 = extractvalue { i64, i64 } %516, 0
%518 = extractvalue { i64, i64 } %516, 1
%519 = icmp ult i64 %518, %440
br i1 %519, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i, label %before_rhs.i.i
before_rhs.i.i: ; preds = %else-block.i
%520 = icmp ugt i64 %518, %440
%521 = icmp uge i64 %517, %441
%or.cond.i.i = or i1 %520, %521
br i1 %or.cond.i.i, label %then-block-5367-.i.i, label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i
then-block-5367-.i.i: ; preds = %before_rhs.i.i
%522 = tail call { i64, i64 } asm "subq $4, $0\0A sbbq $5, $1", "=r,=r,0,1,r|e|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i64 %517, i64 %518, i64 %441, i64 %440) #20, !noalias !448, !srcloc !250
%523 = extractvalue { i64, i64 } %522, 0
%524 = extractvalue { i64, i64 } %522, 1
%525 = add i64 %513, 1
br label %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i
_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i: ; preds = %then-block-5367-.i.i, %before_rhs.i.i, %else-block.i
%.sroa.8.16.load196.i = phi i64 [ %523, %then-block-5367-.i.i ], [ %517, %before_rhs.i.i ], [ %517, %else-block.i ]
%.sroa.5.8.r1.sroa.0.0.copyload195.i = phi i64 [ %524, %then-block-5367-.i.i ], [ %518, %before_rhs.i.i ], [ %518, %else-block.i ]
%.sroa.0.0.q10.sroa.0.0.copyload194.i = phi i64 [ %525, %then-block-5367-.i.i ], [ %513, %before_rhs.i.i ], [ %513, %else-block.i ]
%526 = getelementptr inbounds %"ll::limb::Limb"* %np1.0218.i, i64 %.sum207.i
br label %loop_body.i.i.i
loop_body.i.i.i: ; preds = %next-block.i.i143.i, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i
%cl.sroa.0.0.i.i.i = phi i64 [ 0, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i ], [ %541, %next-block.i.i143.i ]
%n.0.i.i.i = phi i32 [ %358, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i ], [ %542, %next-block.i.i143.i ]
%xp.0.i.i.i = phi %"ll::limb::Limb"* [ %dp_tmp56.0, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i ], [ %545, %next-block.i.i143.i ]
%wp.0.i.i.i = phi %"ll::limb::Limb"* [ %526, %_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE.exit.i ], [ %544, %next-block.i.i143.i ]
%xl.sroa.0.0..sroa_idx.i.i141.i = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i.i, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i142.i = load i64* %xl.sroa.0.0..sroa_idx.i.i141.i, align 8
%527 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i142.i, i64 %.sroa.0.0.q10.sroa.0.0.copyload194.i) #20, !noalias !453, !srcloc !19
%528 = extractvalue { i64, i64 } %527, 0
%529 = extractvalue { i64, i64 } %527, 1
%530 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %529, i64 %cl.sroa.0.0.i.i.i) #20
%531 = extractvalue { i64, i1 } %530, 0
%532 = extractvalue { i64, i1 } %530, 1
%533 = zext i1 %532 to i64
%534 = add i64 %533, %528
%535 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i.i.i, i64 0, i32 0
%536 = load i64* %535, align 8
%537 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %536, i64 %531) #20
%538 = extractvalue { i64, i1 } %537, 0
%539 = extractvalue { i64, i1 } %537, 1
%540 = zext i1 %539 to i64
%541 = add i64 %534, %540
store i64 %538, i64* %535, align 8
%542 = add i32 %n.0.i.i.i, -1
%543 = icmp eq i32 %542, 0
br i1 %543, label %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i, label %next-block.i.i143.i
next-block.i.i143.i: ; preds = %loop_body.i.i.i
%544 = getelementptr inbounds %"ll::limb::Limb"* %wp.0.i.i.i, i64 1
%545 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i.i, i64 1
br label %loop_body.i.i.i
_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i: ; preds = %loop_body.i.i.i
%.lcssa = phi i64 [ %541, %loop_body.i.i.i ]
%546 = icmp ult i64 %.sroa.8.16.load196.i, %.lcssa
%547 = sub i64 %.sroa.8.16.load196.i, %.lcssa
%548 = zext i1 %546 to i64
%549 = icmp ult i64 %.sroa.5.8.r1.sroa.0.0.copyload195.i, %548
%550 = sext i1 %546 to i64
%..sroa.5.8.r1.sroa.0.0.copyload195.i = add i64 %550, %.sroa.5.8.r1.sroa.0.0.copyload195.i
store i64 %547, i64* %n0.sroa.0.0..sroa_idx.i, align 8
br i1 %549, label %then-block-6328-.i, label %join17.i
then-block-6328-.i: ; preds = %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i
%551 = add i64 %..sroa.5.8.r1.sroa.0.0.copyload195.i, %440
%xl.sroa.0.0..sroa_idx43.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %526, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%yl.sroa.0.0.copyload46.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i167211.i, align 8
%552 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i, i64 %yl.sroa.0.0.copyload46.i.i.i) #20
%553 = extractvalue { i64, i1 } %552, 0
%554 = extractvalue { i64, i1 } %552, 1
%.47.i.i.i = zext i1 %554 to i64
store i64 %553, i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
br i1 %451, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %then-block-6328-.i
%xtraiter559 = and i32 %455, 1
%lcmp.mod560 = icmp ne i32 %xtraiter559, 0
br i1 %lcmp.mod560, label %next-block.i.i.i.prol, label %next-block.i.i.i.preheader.split
next-block.i.i.i.prol: ; preds = %next-block.i.i.i.preheader
%555 = getelementptr inbounds %"ll::limb::Limb"* %526, i64 1
%556 = getelementptr inbounds %"ll::limb::Limb"* %dp_tmp56.0, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %555, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %556, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%557 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.i.prol) #20
%558 = extractvalue { i64, i1 } %557, 0
%559 = extractvalue { i64, i1 } %557, 1
%560 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %558, i64 %.47.i.i.i) #20
%561 = extractvalue { i64, i1 } %560, 0
%562 = extractvalue { i64, i1 } %560, 1
%563 = or i1 %559, %562
%..i.i.i.prol = zext i1 %563 to i64
store i64 %561, i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%564 = add i32 %450, -1
%565 = icmp eq i32 %564, 0
br label %next-block.i.i.i.preheader.split
next-block.i.i.i.preheader.split: ; preds = %next-block.i.i.i.prol, %next-block.i.i.i.preheader
%..i.i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%.unr = phi i32 [ %450, %next-block.i.i.i.preheader ], [ %564, %next-block.i.i.i.prol ]
%.52.i.i.i.unr = phi i64 [ %.47.i.i.i, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%wp.051.i.i.i.unr = phi %"ll::limb::Limb"* [ %526, %next-block.i.i.i.preheader ], [ %555, %next-block.i.i.i.prol ]
%yp.049.i.i.i.unr = phi %"ll::limb::Limb"* [ %dp_tmp56.0, %next-block.i.i.i.preheader ], [ %556, %next-block.i.i.i.prol ]
%566 = icmp ult i32 %456, 1
br i1 %566, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, label %next-block.i.i.i.preheader.split.split
next-block.i.i.i.preheader.split.split: ; preds = %next-block.i.i.i.preheader.split
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i, %next-block.i.i.i.preheader.split.split
%567 = phi i32 [ %.unr, %next-block.i.i.i.preheader.split.split ], [ %587, %next-block.i.i.i ]
%.52.i.i.i = phi i64 [ %.52.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %..i.i.i.1, %next-block.i.i.i ]
%wp.051.i.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %578, %next-block.i.i.i ]
%yp.049.i.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %579, %next-block.i.i.i ]
%568 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i, i64 1
%569 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %568, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %569, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i.i, align 8
%570 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %yl.sroa.0.0.copyload.i.i.i) #20
%571 = extractvalue { i64, i1 } %570, 0
%572 = extractvalue { i64, i1 } %570, 1
%573 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %571, i64 %.52.i.i.i) #20
%574 = extractvalue { i64, i1 } %573, 0
%575 = extractvalue { i64, i1 } %573, 1
%576 = or i1 %572, %575
%..i.i.i = zext i1 %576 to i64
store i64 %574, i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%577 = add i32 %567, -1
%578 = getelementptr inbounds %"ll::limb::Limb"* %568, i64 1
%579 = getelementptr inbounds %"ll::limb::Limb"* %569, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %578, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %579, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%580 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.i.1) #20
%581 = extractvalue { i64, i1 } %580, 0
%582 = extractvalue { i64, i1 } %580, 1
%583 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %581, i64 %..i.i.i) #20
%584 = extractvalue { i64, i1 } %583, 0
%585 = extractvalue { i64, i1 } %583, 1
%586 = or i1 %582, %585
%..i.i.i.1 = zext i1 %586 to i64
store i64 %584, i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%587 = add i32 %577, -1
%588 = icmp eq i32 %587, 0
br i1 %588, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i
%..i.i.i.lcssa.ph = phi i64 [ %..i.i.i.1, %next-block.i.i.i ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit: ; preds = %next-block.i.i.i.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa
%..i.i.i.lcssa = phi i64 [ %..i.i.i.lcssa.unr, %next-block.i.i.i.preheader.split ], [ %..i.i.i.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, %then-block-6328-.i
%..lcssa.i.i.i = phi i64 [ %.47.i.i.i, %then-block-6328-.i ], [ %..i.i.i.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit ]
%589 = add i64 %551, %..lcssa.i.i.i
%590 = add i64 %.sroa.0.0.q10.sroa.0.0.copyload194.i, -1
br label %join17.i
join17.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i
%.sroa.5.8.r1.sroa.0.0.copyload195198.i = phi i64 [ %493, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i ], [ %589, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %..sroa.5.8.r1.sroa.0.0.copyload195.i, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i ]
%q.sroa.0.1.i = phi i64 [ -1, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit171.i ], [ %590, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %.sroa.0.0.q10.sroa.0.0.copyload194.i, %_ZN2ll3mul8submul_120h2ce3d1be79e355a5UAaE.exit.i ]
%591 = getelementptr inbounds %"ll::limb::Limb"* %qp4.0217.i, i64 -1
%q.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %591, i64 0, i32 0
store i64 %q.sroa.0.1.i, i64* %q.sroa.0.0..sroa_idx.i, align 8
%592 = add nsw i32 %i.0216.i, -1
%593 = icmp sgt i32 %i.0216.i, 1
br i1 %593, label %while_body.i352, label %normal-return81.loopexit
normal-return81.loopexit: ; preds = %join17.i
%.sroa.5.8.r1.sroa.0.0.copyload195198.i.lcssa = phi i64 [ %.sroa.5.8.r1.sroa.0.0.copyload195198.i, %join17.i ]
%594 = add nsw i64 %386, -3
%595 = sub nsw i64 %594, %454
br label %normal-return81
normal-return81: ; preds = %normal-return81.loopexit, %join.i
%596 = phi i64 [ %.sum204.i, %join.i ], [ %595, %normal-return81.loopexit ]
%.sroa.5.8.r1.sroa.0.0.copyload195197.lcssa.i = phi i64 [ %443, %join.i ], [ %.sroa.5.8.r1.sroa.0.0.copyload195198.i.lcssa, %normal-return81.loopexit ]
%.sum223.i = add nsw i64 %596, 1
%597 = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 %.sum223.i, i32 0
store i64 %.sroa.5.8.r1.sroa.0.0.copyload195197.lcssa.i, i64* %597, align 8
%598 = icmp eq i64 %qh.sroa.0.0.i, 0
br i1 %598, label %next-block85, label %normal-return84
normal-return84: ; preds = %normal-return81
%599 = sub i32 %3, %5
%600 = sext i32 %599 to i64
%601 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %600, i32 0
store i64 %qh.sroa.0.0.i, i64* %601, align 8
br label %next-block85
next-block85: ; preds = %normal-return81, %normal-return84
br i1 %219, label %then-block-5938-, label %else-block87
then-block-5938-: ; preds = %next-block85
%602 = icmp sgt i32 %5, 0
br i1 %602, label %while_body.i348.preheader, label %cond.i
while_body.i348.preheader: ; preds = %then-block-5938-
%603 = zext i32 %215 to i64
%604 = shl nuw nsw i64 %603, 3
%605 = add nuw nsw i64 %604, 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %np_tmp57.0483, i64 %605, i32 8, i1 false)
br label %cond.i
else-block87: ; preds = %next-block85
%h.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %np_tmp57.0, i64 0, i32 0
%h.sroa.0.0.copyload.i = load i64* %h.sroa.0.0..sroa_idx.i, align 8
%606 = sub nsw i64 0, %218
%607 = and i64 %606, 63
%608 = and i64 %218, 63
%low_limb.sroa.0.042.i = lshr i64 %h.sroa.0.0.copyload.i, %608
%609 = icmp eq i32 %215, 0
br i1 %609, label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit, label %while_body.lr.ph.i341
while_body.lr.ph.i341: ; preds = %else-block87
%610 = zext i32 %358 to i64
%611 = add i32 %5, -1
%612 = add i32 %5, -2
%xtraiter556 = and i32 %611, 3
%lcmp.mod557 = icmp ne i32 %xtraiter556, 0
br i1 %lcmp.mod557, label %while_body.i342.prol, label %while_body.lr.ph.i341.split
while_body.i342.prol: ; preds = %while_body.i342.prol, %while_body.lr.ph.i341
%xs.047.i.prol = phi i32 [ %215, %while_body.lr.ph.i341 ], [ %xs.0.i.prol, %while_body.i342.prol ]
%low_limb.sroa.0.046.i.prol = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i341 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i342.prol ]
%.pn.i.prol = phi %"ll::limb::Limb"* [ %np_tmp57.0, %while_body.lr.ph.i341 ], [ %xp.045.i.prol, %while_body.i342.prol ]
%rp.044.i.prol = phi %"ll::limb::Limb"* [ %1, %while_body.lr.ph.i341 ], [ %616, %while_body.i342.prol ]
%prol.iter558 = phi i32 [ %xtraiter556, %while_body.lr.ph.i341 ], [ %prol.iter558.sub, %while_body.i342.prol ]
%xp.045.i.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.i.prol, i64 1
%high.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.prol, i64 0, i32 0
%high.sroa.0.0.copyload.i.prol = load i64* %high.sroa.0.0..sroa_idx.i.prol, align 8
%613 = shl i64 %high.sroa.0.0.copyload.i.prol, %607
%614 = or i64 %613, %low_limb.sroa.0.046.i.prol
%615 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.i.prol, i64 0, i32 0
store i64 %614, i64* %615, align 8
%616 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.i.prol, i64 1
%low_limb.sroa.0.0.i.prol = lshr i64 %high.sroa.0.0.copyload.i.prol, %608
%xs.0.i.prol = add i32 %xs.047.i.prol, -1
%617 = icmp eq i32 %xs.0.i.prol, 0
%prol.iter558.sub = sub i32 %prol.iter558, 1
%prol.iter558.cmp = icmp ne i32 %prol.iter558.sub, 0
br i1 %prol.iter558.cmp, label %while_body.i342.prol, label %while_body.lr.ph.i341.split, !llvm.loop !460
while_body.lr.ph.i341.split: ; preds = %while_body.i342.prol, %while_body.lr.ph.i341
%low_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i341 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i342.prol ]
%xs.047.i.unr = phi i32 [ %215, %while_body.lr.ph.i341 ], [ %xs.0.i.prol, %while_body.i342.prol ]
%low_limb.sroa.0.046.i.unr = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i341 ], [ %low_limb.sroa.0.0.i.prol, %while_body.i342.prol ]
%.pn.i.unr = phi %"ll::limb::Limb"* [ %np_tmp57.0, %while_body.lr.ph.i341 ], [ %xp.045.i.prol, %while_body.i342.prol ]
%rp.044.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.lr.ph.i341 ], [ %616, %while_body.i342.prol ]
%618 = icmp ult i32 %612, 3
br i1 %618, label %while_cond.while_exit_crit_edge.i, label %while_body.lr.ph.i341.split.split
while_body.lr.ph.i341.split.split: ; preds = %while_body.lr.ph.i341.split
br label %while_body.i342
while_cond.while_exit_crit_edge.i.unr-lcssa: ; preds = %while_body.i342
%low_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %low_limb.sroa.0.0.i.3, %while_body.i342 ]
br label %while_cond.while_exit_crit_edge.i
while_cond.while_exit_crit_edge.i: ; preds = %while_body.lr.ph.i341.split, %while_cond.while_exit_crit_edge.i.unr-lcssa
%low_limb.sroa.0.0.i.lcssa = phi i64 [ %low_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i341.split ], [ %low_limb.sroa.0.0.i.lcssa.ph, %while_cond.while_exit_crit_edge.i.unr-lcssa ]
%619 = add nuw nsw i64 %610, 1
%scevgep.i = getelementptr %"ll::limb::Limb"* %1, i64 %619
br label %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit
while_body.i342: ; preds = %while_body.i342, %while_body.lr.ph.i341.split.split
%xs.047.i = phi i32 [ %xs.047.i.unr, %while_body.lr.ph.i341.split.split ], [ %xs.0.i.3, %while_body.i342 ]
%low_limb.sroa.0.046.i = phi i64 [ %low_limb.sroa.0.046.i.unr, %while_body.lr.ph.i341.split.split ], [ %low_limb.sroa.0.0.i.3, %while_body.i342 ]
%.pn.i = phi %"ll::limb::Limb"* [ %.pn.i.unr, %while_body.lr.ph.i341.split.split ], [ %xp.045.i.3, %while_body.i342 ]
%rp.044.i = phi %"ll::limb::Limb"* [ %rp.044.i.unr, %while_body.lr.ph.i341.split.split ], [ %635, %while_body.i342 ]
%xp.045.i = getelementptr inbounds %"ll::limb::Limb"* %.pn.i, i64 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 0, i32 0
%high.sroa.0.0.copyload.i = load i64* %high.sroa.0.0..sroa_idx.i, align 8
%620 = shl i64 %high.sroa.0.0.copyload.i, %607
%621 = or i64 %620, %low_limb.sroa.0.046.i
%622 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.i, i64 0, i32 0
store i64 %621, i64* %622, align 8
%623 = getelementptr inbounds %"ll::limb::Limb"* %rp.044.i, i64 1
%low_limb.sroa.0.0.i = lshr i64 %high.sroa.0.0.copyload.i, %608
%xs.0.i = add i32 %xs.047.i, -1
%xp.045.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 1
%high.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 0, i32 0
%high.sroa.0.0.copyload.i.1 = load i64* %high.sroa.0.0..sroa_idx.i.1, align 8
%624 = shl i64 %high.sroa.0.0.copyload.i.1, %607
%625 = or i64 %624, %low_limb.sroa.0.0.i
%626 = getelementptr inbounds %"ll::limb::Limb"* %623, i64 0, i32 0
store i64 %625, i64* %626, align 8
%627 = getelementptr inbounds %"ll::limb::Limb"* %623, i64 1
%low_limb.sroa.0.0.i.1 = lshr i64 %high.sroa.0.0.copyload.i.1, %608
%xs.0.i.1 = add i32 %xs.0.i, -1
%xp.045.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 1
%high.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 0, i32 0
%high.sroa.0.0.copyload.i.2 = load i64* %high.sroa.0.0..sroa_idx.i.2, align 8
%628 = shl i64 %high.sroa.0.0.copyload.i.2, %607
%629 = or i64 %628, %low_limb.sroa.0.0.i.1
%630 = getelementptr inbounds %"ll::limb::Limb"* %627, i64 0, i32 0
store i64 %629, i64* %630, align 8
%631 = getelementptr inbounds %"ll::limb::Limb"* %627, i64 1
%low_limb.sroa.0.0.i.2 = lshr i64 %high.sroa.0.0.copyload.i.2, %608
%xs.0.i.2 = add i32 %xs.0.i.1, -1
%xp.045.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 1
%high.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.3, i64 0, i32 0
%high.sroa.0.0.copyload.i.3 = load i64* %high.sroa.0.0..sroa_idx.i.3, align 8
%632 = shl i64 %high.sroa.0.0.copyload.i.3, %607
%633 = or i64 %632, %low_limb.sroa.0.0.i.2
%634 = getelementptr inbounds %"ll::limb::Limb"* %631, i64 0, i32 0
store i64 %633, i64* %634, align 8
%635 = getelementptr inbounds %"ll::limb::Limb"* %631, i64 1
%low_limb.sroa.0.0.i.3 = lshr i64 %high.sroa.0.0.copyload.i.3, %608
%xs.0.i.3 = add i32 %xs.0.i.2, -1
%636 = icmp eq i32 %xs.0.i.3, 0
br i1 %636, label %while_cond.while_exit_crit_edge.i.unr-lcssa, label %while_body.i342
_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit: ; preds = %else-block87, %while_cond.while_exit_crit_edge.i
%low_limb.sroa.0.0.lcssa.i = phi i64 [ %low_limb.sroa.0.0.i.lcssa, %while_cond.while_exit_crit_edge.i ], [ %low_limb.sroa.0.042.i, %else-block87 ]
%rp.0.lcssa.i = phi %"ll::limb::Limb"* [ %scevgep.i, %while_cond.while_exit_crit_edge.i ], [ %1, %else-block87 ]
%low_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %rp.0.lcssa.i, i64 0, i32 0
store i64 %low_limb.sroa.0.0.lcssa.i, i64* %low_limb.sroa.0.0..sroa_idx.i, align 8
br label %cond.i
cond.i: ; preds = %while_body.i348.preheader, %_ZN2ll3bit3shr20h7a1579b04ae4257clTbE.exit, %then-block-5938-
%637 = icmp eq %"mem::Marker"* %tmp49.sroa.0.0.452, null
br i1 %637, label %clean_custom_, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %cond.i
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i.preheader, %while_body.i.i
%mark.09.i.i = phi %"mem::Marker"* [ %639, %while_body.i.i ], [ %tmp49.sroa.0.0.452, %while_body.i.i.preheader ]
%638 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 0
%639 = load %"mem::Marker"** %638, align 8, !noalias !461
%640 = getelementptr inbounds %"mem::Marker"* %mark.09.i.i, i64 0, i32 1
%641 = load i64* %640, align 8, !noalias !461
%642 = bitcast %"mem::Marker"* %mark.09.i.i to i8*
tail call void @je_sdallocx(i8* %642, i64 %641, i32 0)
%643 = icmp eq %"mem::Marker"* %639, null
br i1 %643, label %clean_custom_.loopexit549, label %while_body.i.i
}
; Function Attrs: cold noinline noreturn
declare void @_ZN9panicking18panic_bounds_check20hd2d91b0e4588e71aA4BE({ %str_slice, i32 }* noalias readonly dereferenceable(24), i64, i64) unnamed_addr #9
; Function Attrs: nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) unnamed_addr #1
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp eq i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb30Limb.PartialOrd$LT$BaseInt$GT$2lt20h6cfd087523abc5f9wgdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp ult i64 %3, %4
ret i1 %5
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit5and_n20h4383c1b346a04acciZbE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop20h9276713358898283059E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %12, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %15, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = and i64 %9, %7
%11 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %10, i64* %11, align 8
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%15 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %15, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !464
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %12, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%16 = icmp ult i32 %5, 3
br i1 %16, label %_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %53, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %54, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %55, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %56, %while_body.i ]
%17 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%18 = load i64* %17, align 8
%19 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%20 = load i64* %19, align 8
%21 = and i64 %20, %18
%22 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %21, i64* %22, align 8
%23 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%24 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%25 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%26 = add nuw nsw i32 %i.01.i, 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 0, i32 0
%28 = load i64* %27, align 8
%29 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = and i64 %30, %28
%32 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %31, i64* %32, align 8
%33 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%34 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 1
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%36 = add nuw nsw i32 %26, 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 0, i32 0
%38 = load i64* %37, align 8
%39 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 0, i32 0
%40 = load i64* %39, align 8
%41 = and i64 %40, %38
%42 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 0, i32 0
store i64 %41, i64* %42, align 8
%43 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 1
%44 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 1
%45 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 1
%46 = add nuw nsw i32 %36, 1
%47 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
%48 = load i64* %47, align 8
%49 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 0, i32 0
%50 = load i64* %49, align 8
%51 = and i64 %50, %48
%52 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 0, i32 0
store i64 %51, i64* %52, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 1
%54 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 1
%55 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 1
%56 = add nuw nsw i32 %46, 1
%exitcond.i.3 = icmp eq i32 %56, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit
_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop20h9276713358898283059E.exit
_ZN2ll3bit5bitop20h9276713358898283059E.exit: ; preds = %_ZN2ll3bit5bitop20h9276713358898283059E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit9and_not_n20h15fe40527c34a00aSZbE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop21h15052891100227812647E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %15, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %16, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = xor i64 %9, -1
%11 = and i64 %7, %10
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %11, i64* %12, align 8
%13 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%15 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%16 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %16, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !465
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %16, %while_body.i.prol ]
%17 = icmp ult i32 %5, 3
br i1 %17, label %_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %58, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %59, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %60, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %61, %while_body.i ]
%18 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%19 = load i64* %18, align 8
%20 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%21 = load i64* %20, align 8
%22 = xor i64 %21, -1
%23 = and i64 %19, %22
%24 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %23, i64* %24, align 8
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%28 = add nuw nsw i32 %i.01.i, 1
%29 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%32 = load i64* %31, align 8
%33 = xor i64 %32, -1
%34 = and i64 %30, %33
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %34, i64* %35, align 8
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = add nuw nsw i32 %28, 1
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%43 = load i64* %42, align 8
%44 = xor i64 %43, -1
%45 = and i64 %41, %44
%46 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %45, i64* %46, align 8
%47 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 1
%48 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 1
%49 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 1
%50 = add nuw nsw i32 %39, 1
%51 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 0, i32 0
%52 = load i64* %51, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 0, i32 0
%54 = load i64* %53, align 8
%55 = xor i64 %54, -1
%56 = and i64 %52, %55
%57 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 0, i32 0
store i64 %56, i64* %57, align 8
%58 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 1
%59 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 1
%60 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 1
%61 = add nuw nsw i32 %50, 1
%exitcond.i.3 = icmp eq i32 %61, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit
_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop21h15052891100227812647E.exit
_ZN2ll3bit5bitop21h15052891100227812647E.exit: ; preds = %_ZN2ll3bit5bitop21h15052891100227812647E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb8Limb.Not3not20h07e147fa89d0ae81fcdE(i64) unnamed_addr #5 {
entry-block:
%1 = xor i64 %0, -1
ret i64 %1
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit6nand_n20h0dbc33948c72968ct0bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop21h13846212487717473464E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %15, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %16, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = and i64 %9, %7
%11 = xor i64 %10, -1
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %11, i64* %12, align 8
%13 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%15 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%16 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %16, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !466
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %16, %while_body.i.prol ]
%17 = icmp ult i32 %5, 3
br i1 %17, label %_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %58, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %59, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %60, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %61, %while_body.i ]
%18 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%19 = load i64* %18, align 8
%20 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%21 = load i64* %20, align 8
%22 = and i64 %21, %19
%23 = xor i64 %22, -1
%24 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %23, i64* %24, align 8
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%28 = add nuw nsw i32 %i.01.i, 1
%29 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%32 = load i64* %31, align 8
%33 = and i64 %32, %30
%34 = xor i64 %33, -1
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %34, i64* %35, align 8
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = add nuw nsw i32 %28, 1
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%43 = load i64* %42, align 8
%44 = and i64 %43, %41
%45 = xor i64 %44, -1
%46 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %45, i64* %46, align 8
%47 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 1
%48 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 1
%49 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 1
%50 = add nuw nsw i32 %39, 1
%51 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 0, i32 0
%52 = load i64* %51, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 0, i32 0
%54 = load i64* %53, align 8
%55 = and i64 %54, %52
%56 = xor i64 %55, -1
%57 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 0, i32 0
store i64 %56, i64* %57, align 8
%58 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 1
%59 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 1
%60 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 1
%61 = add nuw nsw i32 %50, 1
%exitcond.i.3 = icmp eq i32 %61, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit
_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop21h13846212487717473464E.exit
_ZN2ll3bit5bitop21h13846212487717473464E.exit: ; preds = %_ZN2ll3bit5bitop21h13846212487717473464E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit4or_n20hbb482c26c9194c0a50bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop21h11441331853846954504E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %12, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %15, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = or i64 %9, %7
%11 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %10, i64* %11, align 8
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%15 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %15, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !467
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %12, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%16 = icmp ult i32 %5, 3
br i1 %16, label %_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %53, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %54, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %55, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %56, %while_body.i ]
%17 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%18 = load i64* %17, align 8
%19 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%20 = load i64* %19, align 8
%21 = or i64 %20, %18
%22 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %21, i64* %22, align 8
%23 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%24 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%25 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%26 = add nuw nsw i32 %i.01.i, 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 0, i32 0
%28 = load i64* %27, align 8
%29 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = or i64 %30, %28
%32 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %31, i64* %32, align 8
%33 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%34 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 1
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%36 = add nuw nsw i32 %26, 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 0, i32 0
%38 = load i64* %37, align 8
%39 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 0, i32 0
%40 = load i64* %39, align 8
%41 = or i64 %40, %38
%42 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 0, i32 0
store i64 %41, i64* %42, align 8
%43 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 1
%44 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 1
%45 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 1
%46 = add nuw nsw i32 %36, 1
%47 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
%48 = load i64* %47, align 8
%49 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 0, i32 0
%50 = load i64* %49, align 8
%51 = or i64 %50, %48
%52 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 0, i32 0
store i64 %51, i64* %52, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 1
%54 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 1
%55 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 1
%56 = add nuw nsw i32 %46, 1
%exitcond.i.3 = icmp eq i32 %56, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit
_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop21h11441331853846954504E.exit
_ZN2ll3bit5bitop21h11441331853846954504E.exit: ; preds = %_ZN2ll3bit5bitop21h11441331853846954504E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit8or_not_n20h3c629fb22f03e42bF1bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop20h9390017882105271615E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %15, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %16, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = xor i64 %9, -1
%11 = or i64 %7, %10
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %11, i64* %12, align 8
%13 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%15 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%16 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %16, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !468
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %16, %while_body.i.prol ]
%17 = icmp ult i32 %5, 3
br i1 %17, label %_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %58, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %59, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %60, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %61, %while_body.i ]
%18 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%19 = load i64* %18, align 8
%20 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%21 = load i64* %20, align 8
%22 = xor i64 %21, -1
%23 = or i64 %19, %22
%24 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %23, i64* %24, align 8
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%28 = add nuw nsw i32 %i.01.i, 1
%29 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%32 = load i64* %31, align 8
%33 = xor i64 %32, -1
%34 = or i64 %30, %33
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %34, i64* %35, align 8
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = add nuw nsw i32 %28, 1
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%43 = load i64* %42, align 8
%44 = xor i64 %43, -1
%45 = or i64 %41, %44
%46 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %45, i64* %46, align 8
%47 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 1
%48 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 1
%49 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 1
%50 = add nuw nsw i32 %39, 1
%51 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 0, i32 0
%52 = load i64* %51, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 0, i32 0
%54 = load i64* %53, align 8
%55 = xor i64 %54, -1
%56 = or i64 %52, %55
%57 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 0, i32 0
store i64 %56, i64* %57, align 8
%58 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 1
%59 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 1
%60 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 1
%61 = add nuw nsw i32 %50, 1
%exitcond.i.3 = icmp eq i32 %61, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit
_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop20h9390017882105271615E.exit
_ZN2ll3bit5bitop20h9390017882105271615E.exit: ; preds = %_ZN2ll3bit5bitop20h9390017882105271615E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit5nor_n20hdd6243e8769f25a8g2bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop20h5393653243241560096E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %15, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %16, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = or i64 %9, %7
%11 = xor i64 %10, -1
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %11, i64* %12, align 8
%13 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%15 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%16 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %16, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !469
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %16, %while_body.i.prol ]
%17 = icmp ult i32 %5, 3
br i1 %17, label %_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %58, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %59, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %60, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %61, %while_body.i ]
%18 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%19 = load i64* %18, align 8
%20 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%21 = load i64* %20, align 8
%22 = or i64 %21, %19
%23 = xor i64 %22, -1
%24 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %23, i64* %24, align 8
%25 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%26 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%28 = add nuw nsw i32 %i.01.i, 1
%29 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 0, i32 0
%32 = load i64* %31, align 8
%33 = or i64 %32, %30
%34 = xor i64 %33, -1
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
store i64 %34, i64* %35, align 8
%36 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %26, i64 1
%38 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 1
%39 = add nuw nsw i32 %28, 1
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 0, i32 0
%43 = load i64* %42, align 8
%44 = or i64 %43, %41
%45 = xor i64 %44, -1
%46 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
store i64 %45, i64* %46, align 8
%47 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 1
%48 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 1
%49 = getelementptr inbounds %"ll::limb::Limb"* %38, i64 1
%50 = add nuw nsw i32 %39, 1
%51 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 0, i32 0
%52 = load i64* %51, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 0, i32 0
%54 = load i64* %53, align 8
%55 = or i64 %54, %52
%56 = xor i64 %55, -1
%57 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 0, i32 0
store i64 %56, i64* %57, align 8
%58 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 1
%59 = getelementptr inbounds %"ll::limb::Limb"* %48, i64 1
%60 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 1
%61 = add nuw nsw i32 %50, 1
%exitcond.i.3 = icmp eq i32 %61, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit
_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop20h5393653243241560096E.exit
_ZN2ll3bit5bitop20h5393653243241560096E.exit: ; preds = %_ZN2ll3bit5bitop20h5393653243241560096E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit5xor_n20hb46416276fbee076S2bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%4 = icmp sgt i32 %3, 0
br i1 %4, label %while_body.i.preheader, label %_ZN2ll3bit5bitop20h1320597434464399091E.exit
while_body.i.preheader: ; preds = %entry-block
%5 = add i32 %3, -1
%xtraiter = and i32 %3, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.prol = phi %"ll::limb::Limb"* [ %12, %while_body.i.prol ], [ %0, %while_body.i.preheader ]
%xp.03.i.prol = phi %"ll::limb::Limb"* [ %13, %while_body.i.prol ], [ %1, %while_body.i.preheader ]
%yp.02.i.prol = phi %"ll::limb::Limb"* [ %14, %while_body.i.prol ], [ %2, %while_body.i.preheader ]
%i.01.i.prol = phi i32 [ %15, %while_body.i.prol ], [ 0, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 0, i32 0
%7 = load i64* %6, align 8
%8 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 0, i32 0
%9 = load i64* %8, align 8
%10 = xor i64 %9, %7
%11 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 0, i32 0
store i64 %10, i64* %11, align 8
%12 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.prol, i64 1
%13 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.prol, i64 1
%14 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.prol, i64 1
%15 = add nuw nsw i32 %i.01.i.prol, 1
%exitcond.i.prol = icmp eq i32 %15, %3
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !470
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%wp.04.i.unr = phi %"ll::limb::Limb"* [ %0, %while_body.i.preheader ], [ %12, %while_body.i.prol ]
%xp.03.i.unr = phi %"ll::limb::Limb"* [ %1, %while_body.i.preheader ], [ %13, %while_body.i.prol ]
%yp.02.i.unr = phi %"ll::limb::Limb"* [ %2, %while_body.i.preheader ], [ %14, %while_body.i.prol ]
%i.01.i.unr = phi i32 [ 0, %while_body.i.preheader ], [ %15, %while_body.i.prol ]
%16 = icmp ult i32 %5, 3
br i1 %16, label %_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%wp.04.i = phi %"ll::limb::Limb"* [ %wp.04.i.unr, %while_body.i.preheader.split.split ], [ %53, %while_body.i ]
%xp.03.i = phi %"ll::limb::Limb"* [ %xp.03.i.unr, %while_body.i.preheader.split.split ], [ %54, %while_body.i ]
%yp.02.i = phi %"ll::limb::Limb"* [ %yp.02.i.unr, %while_body.i.preheader.split.split ], [ %55, %while_body.i ]
%i.01.i = phi i32 [ %i.01.i.unr, %while_body.i.preheader.split.split ], [ %56, %while_body.i ]
%17 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 0, i32 0
%18 = load i64* %17, align 8
%19 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 0, i32 0
%20 = load i64* %19, align 8
%21 = xor i64 %20, %18
%22 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 0, i32 0
store i64 %21, i64* %22, align 8
%23 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i, i64 1
%24 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i, i64 1
%25 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i, i64 1
%26 = add nuw nsw i32 %i.01.i, 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 0, i32 0
%28 = load i64* %27, align 8
%29 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
%30 = load i64* %29, align 8
%31 = xor i64 %30, %28
%32 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
store i64 %31, i64* %32, align 8
%33 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 1
%34 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 1
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%36 = add nuw nsw i32 %26, 1
%37 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 0, i32 0
%38 = load i64* %37, align 8
%39 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 0, i32 0
%40 = load i64* %39, align 8
%41 = xor i64 %40, %38
%42 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 0, i32 0
store i64 %41, i64* %42, align 8
%43 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 1
%44 = getelementptr inbounds %"ll::limb::Limb"* %34, i64 1
%45 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 1
%46 = add nuw nsw i32 %36, 1
%47 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
%48 = load i64* %47, align 8
%49 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 0, i32 0
%50 = load i64* %49, align 8
%51 = xor i64 %50, %48
%52 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 0, i32 0
store i64 %51, i64* %52, align 8
%53 = getelementptr inbounds %"ll::limb::Limb"* %43, i64 1
%54 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 1
%55 = getelementptr inbounds %"ll::limb::Limb"* %45, i64 1
%56 = add nuw nsw i32 %46, 1
%exitcond.i.3 = icmp eq i32 %56, %3
br i1 %exitcond.i.3, label %_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit.unr-lcssa, label %while_body.i
_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit
_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit.unr-lcssa
br label %_ZN2ll3bit5bitop20h1320597434464399091E.exit
_ZN2ll3bit5bitop20h1320597434464399091E.exit: ; preds = %_ZN2ll3bit5bitop20h1320597434464399091E.exit.loopexit, %entry-block
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23Limb.BitXor$LT$Limb$GT$6bitxor20ha383e96387d99a2ejddE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = xor i64 %1, %0
ret i64 %2
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll3bit3not20h7e0170c404da4ed2s3bE(%"ll::limb::Limb"* nocapture, %"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #0 {
entry-block:
%3 = icmp sgt i32 %2, 0
br i1 %3, label %while_body.preheader, label %while_exit
while_body.preheader: ; preds = %entry-block
%4 = add i32 %2, -1
%xtraiter = and i32 %2, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.prol, label %while_body.preheader.split
while_body.prol: ; preds = %while_body.prol, %while_body.preheader
%wp.018.prol = phi %"ll::limb::Limb"* [ %9, %while_body.prol ], [ %0, %while_body.preheader ]
%xp.017.prol = phi %"ll::limb::Limb"* [ %10, %while_body.prol ], [ %1, %while_body.preheader ]
%i.016.prol = phi i32 [ %11, %while_body.prol ], [ 0, %while_body.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.preheader ], [ %prol.iter.sub, %while_body.prol ]
%5 = getelementptr inbounds %"ll::limb::Limb"* %xp.017.prol, i64 0, i32 0
%6 = load i64* %5, align 8
%7 = xor i64 %6, -1
%8 = getelementptr inbounds %"ll::limb::Limb"* %wp.018.prol, i64 0, i32 0
store i64 %7, i64* %8, align 8
%9 = getelementptr inbounds %"ll::limb::Limb"* %wp.018.prol, i64 1
%10 = getelementptr inbounds %"ll::limb::Limb"* %xp.017.prol, i64 1
%11 = add nuw nsw i32 %i.016.prol, 1
%exitcond.prol = icmp eq i32 %11, %2
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.prol, label %while_body.preheader.split, !llvm.loop !471
while_body.preheader.split: ; preds = %while_body.prol, %while_body.preheader
%wp.018.unr = phi %"ll::limb::Limb"* [ %0, %while_body.preheader ], [ %9, %while_body.prol ]
%xp.017.unr = phi %"ll::limb::Limb"* [ %1, %while_body.preheader ], [ %10, %while_body.prol ]
%i.016.unr = phi i32 [ 0, %while_body.preheader ], [ %11, %while_body.prol ]
%12 = icmp ult i32 %4, 3
br i1 %12, label %while_exit.loopexit, label %while_body.preheader.split.split
while_body.preheader.split.split: ; preds = %while_body.preheader.split
br label %while_body
while_exit.loopexit.unr-lcssa: ; preds = %while_body
br label %while_exit.loopexit
while_exit.loopexit: ; preds = %while_body.preheader.split, %while_exit.loopexit.unr-lcssa
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
ret void
while_body: ; preds = %while_body, %while_body.preheader.split.split
%wp.018 = phi %"ll::limb::Limb"* [ %wp.018.unr, %while_body.preheader.split.split ], [ %38, %while_body ]
%xp.017 = phi %"ll::limb::Limb"* [ %xp.017.unr, %while_body.preheader.split.split ], [ %39, %while_body ]
%i.016 = phi i32 [ %i.016.unr, %while_body.preheader.split.split ], [ %40, %while_body ]
%13 = getelementptr inbounds %"ll::limb::Limb"* %xp.017, i64 0, i32 0
%14 = load i64* %13, align 8
%15 = xor i64 %14, -1
%16 = getelementptr inbounds %"ll::limb::Limb"* %wp.018, i64 0, i32 0
store i64 %15, i64* %16, align 8
%17 = getelementptr inbounds %"ll::limb::Limb"* %wp.018, i64 1
%18 = getelementptr inbounds %"ll::limb::Limb"* %xp.017, i64 1
%19 = add nuw nsw i32 %i.016, 1
%20 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 0, i32 0
%21 = load i64* %20, align 8
%22 = xor i64 %21, -1
%23 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 0, i32 0
store i64 %22, i64* %23, align 8
%24 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 1
%25 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 1
%26 = add nuw nsw i32 %19, 1
%27 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
%28 = load i64* %27, align 8
%29 = xor i64 %28, -1
%30 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 0, i32 0
store i64 %29, i64* %30, align 8
%31 = getelementptr inbounds %"ll::limb::Limb"* %24, i64 1
%32 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 1
%33 = add nuw nsw i32 %26, 1
%34 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 0, i32 0
%35 = load i64* %34, align 8
%36 = xor i64 %35, -1
%37 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
store i64 %36, i64* %37, align 8
%38 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 1
%39 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 1
%40 = add nuw nsw i32 %33, 1
%exitcond.3 = icmp eq i32 %40, %2
br i1 %exitcond.3, label %while_exit.loopexit.unr-lcssa, label %while_body
}
; Function Attrs: nounwind readonly uwtable
define i32 @_ZN2ll3bit6scan_120h758a1df6cf0407acJ4bE(%"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #8 {
entry-block:
br label %while_cond
while_exit: ; preds = %while_cond
%xp.0.lcssa = phi %"ll::limb::Limb"* [ %xp.0, %while_cond ]
%cnt.0.lcssa = phi i32 [ %cnt.0, %while_cond ]
%2 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.lcssa, i64 1, i32 0
%3 = load i64* %2, align 8
%4 = tail call i64 @llvm.cttz.i64(i64 %3, i1 false) #20
%5 = trunc i64 %4 to i32
%6 = add i32 %5, %cnt.0.lcssa
br label %clean_ast_7361_
while_cond: ; preds = %while_body, %entry-block
%cnt.0 = phi i32 [ 0, %entry-block ], [ %10, %while_body ]
%xs.0 = phi i32 [ %1, %entry-block ], [ %12, %while_body ]
%xp.0 = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %11, %while_body ]
%7 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 0, i32 0
%8 = load i64* %7, align 8, !alias.scope !472, !noalias !475
%9 = icmp eq i64 %8, 0
br i1 %9, label %while_body, label %while_exit
while_body: ; preds = %while_cond
%10 = add i32 %cnt.0, 64
%11 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 1
%12 = add i32 %xs.0, -1
%13 = icmp eq i32 %12, 0
br i1 %13, label %clean_ast_7361_.loopexit, label %while_cond
clean_ast_7361_.loopexit: ; preds = %while_body
%.lcssa = phi i32 [ %10, %while_body ]
br label %clean_ast_7361_
clean_ast_7361_: ; preds = %clean_ast_7361_.loopexit, %while_exit
%sret_slot.0 = phi i32 [ %6, %while_exit ], [ %.lcssa, %clean_ast_7361_.loopexit ]
ret i32 %sret_slot.0
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb4Limb14trailing_zeros20he904e2aeed704015V2cE(i64) unnamed_addr #5 {
entry-block:
%1 = tail call i64 @llvm.cttz.i64(i64 %0, i1 false) #20
ret i64 %1
}
; Function Attrs: nounwind readonly uwtable
define i32 @_ZN2ll3bit6scan_020hbeb6ad20f775146df6bE(%"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #8 {
entry-block:
br label %while_cond
while_exit: ; preds = %while_cond
%xp.0.lcssa = phi %"ll::limb::Limb"* [ %xp.0, %while_cond ]
%cnt.0.lcssa = phi i32 [ %cnt.0, %while_cond ]
%2 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.lcssa, i64 1, i32 0
%3 = load i64* %2, align 8
%4 = and i64 %3, 1
%5 = icmp eq i64 %4, 0
br i1 %5, label %clean_custom_, label %while_body3.preheader
while_body3.preheader: ; preds = %while_exit
br label %while_body3
while_cond: ; preds = %while_body, %entry-block
%cnt.0 = phi i32 [ 0, %entry-block ], [ %9, %while_body ]
%xs.0 = phi i32 [ %1, %entry-block ], [ %11, %while_body ]
%xp.0 = phi %"ll::limb::Limb"* [ %0, %entry-block ], [ %10, %while_body ]
%6 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 0, i32 0
%7 = load i64* %6, align 8, !alias.scope !477, !noalias !480
%8 = icmp eq i64 %7, -1
br i1 %8, label %while_body, label %while_exit
while_body: ; preds = %while_cond
%9 = add i32 %cnt.0, 64
%10 = getelementptr inbounds %"ll::limb::Limb"* %xp.0, i64 1
%11 = add i32 %xs.0, -1
%12 = icmp eq i32 %11, 0
br i1 %12, label %clean_custom_.loopexit33, label %while_cond
clean_custom_.loopexit: ; preds = %while_body3
%.lcssa = phi i32 [ %13, %while_body3 ]
br label %clean_custom_
clean_custom_.loopexit33: ; preds = %while_body
%.lcssa36 = phi i32 [ %9, %while_body ]
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit33, %clean_custom_.loopexit, %while_exit
%sret_slot.0 = phi i32 [ %cnt.0.lcssa, %while_exit ], [ %.lcssa, %clean_custom_.loopexit ], [ %.lcssa36, %clean_custom_.loopexit33 ]
ret i32 %sret_slot.0
while_body3: ; preds = %while_body3.preheader, %while_body3
%last.025 = phi i64 [ %14, %while_body3 ], [ %3, %while_body3.preheader ]
%cnt.124 = phi i32 [ %13, %while_body3 ], [ %cnt.0.lcssa, %while_body3.preheader ]
%13 = add i32 %cnt.124, 1
%14 = lshr i64 %last.025, 1
%15 = and i64 %14, 1
%16 = icmp eq i64 %15, 0
br i1 %16, label %clean_custom_.loopexit, label %while_body3
}
; Function Attrs: alwaysinline uwtable
define void @_ZN2ll4base10div_unnorm20h180c4e8a6e9e4343VscE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64) unnamed_addr #10 {
entry-block:
%3 = icmp ne i64 %2, 0
tail call void @llvm.assume(i1 %3)
%4 = udiv i64 %1, %2
%5 = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %4, i64* %5, align 8
%6 = urem i64 %1, %2
%7 = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %6, i64* %7, align 8
ret void
}
; Function Attrs: alwaysinline uwtable
define i64 @"_ZN2ll4limb20Limb.Div$LT$Limb$GT$3div20h1202b8a9bc4d2e13V6cE"(i64, i64) unnamed_addr #10 {
next:
%2 = icmp ne i64 %1, 0
tail call void @llvm.assume(i1 %2)
%3 = udiv i64 %0, %1
ret i64 %3
}
; Function Attrs: alwaysinline uwtable
define i64 @"_ZN2ll4limb20Limb.Rem$LT$Limb$GT$3rem20haa60a9b5e2f37ae3Y8cE"(i64, i64) unnamed_addr #10 {
next:
%2 = icmp ne i64 %1, 0
tail call void @llvm.assume(i1 %2)
%3 = urem i64 %0, %1
ret i64 %3
}
; Function Attrs: inlinehint uwtable
define i64 @_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE(%"ll::limb::Limb"* nocapture readonly, i32, i32) unnamed_addr #11 {
entry-block:
%3 = icmp ugt i32 %2, 1
tail call void @llvm.assume(i1 %3)
%4 = icmp eq i32 %1, 0
br i1 %4, label %clean_custom_, label %next-block
clean_custom_: ; preds = %entry-block, %next, %else-block
%llretslotptr.0.sroa.speculated = phi i64 [ %22, %next ], [ %28, %else-block ], [ 1, %entry-block ]
ret i64 %llretslotptr.0.sroa.speculated
next-block: ; preds = %entry-block
%5 = add i32 %1, -1
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %6, i32 0
%8 = load i64* %7, align 8
%9 = tail call i64 @llvm.ctlz.i64(i64 %8, i1 false) #20
%10 = sext i32 %1 to i64
%11 = shl nsw i64 %10, 6
%12 = sub nsw i64 %11, %9
%13 = add i32 %2, -1
%14 = and i32 %13, %2
%15 = icmp eq i32 %14, 0
br i1 %15, label %then-block-8960-, label %else-block
then-block-8960-: ; preds = %next-block
%16 = zext i32 %2 to i64
%17 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %16, i32 1, i32 0
%18 = load i64* %17, align 8
%19 = icmp eq i64 %18, 0
br i1 %19, label %cond, label %next
next: ; preds = %then-block-8960-
%20 = add nsw i64 %12, -1
%21 = add i64 %20, %18
%22 = udiv i64 %21, %18
br label %clean_custom_
cond: ; preds = %then-block-8960-
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @panic_loc8619)
unreachable
else-block: ; preds = %next-block
%23 = uitofp i64 %12 to double
%24 = uitofp i32 %2 to double
%25 = tail call double @llvm.log2.f64(double %24) #20
%26 = fdiv double %23, %25
%27 = tail call double @llvm.ceil.f64(double %26) #20
%28 = fptoui double %27 to i64
br label %clean_custom_
}
; Function Attrs: cold noinline noreturn
declare void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40)) unnamed_addr #9
; Function Attrs: nounwind readnone
declare double @llvm.log2.f64(double) unnamed_addr #12
; Function Attrs: nounwind readnone
declare double @llvm.ceil.f64(double) unnamed_addr #12
; Function Attrs: inlinehint uwtable
define i64 @_ZN2ll4base18base_digits_to_len20h23d42f11ab11ae89tvcE(i64, i32) unnamed_addr #11 {
entry-block:
%2 = icmp eq i64 %0, 0
br i1 %2, label %clean_custom_, label %next-block
clean_custom_: ; preds = %entry-block, %next1
%sret_slot.0 = phi i64 [ %10, %next1 ], [ 0, %entry-block ]
ret i64 %sret_slot.0
next-block: ; preds = %entry-block
%3 = zext i32 %1 to i64
%4 = icmp ugt i32 %1, 256
br i1 %4, label %cond, label %next, !prof !482
next: ; preds = %next-block
%5 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %3, i32 0
%6 = load i32* %5, align 16
%7 = icmp eq i32 %6, 0
br i1 %7, label %cond2, label %next1
cond: ; preds = %next-block
tail call void @_ZN9panicking18panic_bounds_check20hd2d91b0e4588e71aA4BE({ %str_slice, i32 }* noalias readonly dereferenceable(24) @panic_bounds_check_loc8643, i64 %3, i64 257)
unreachable
next1: ; preds = %next
%8 = zext i32 %6 to i64
%9 = udiv i64 %0, %8
%10 = add i64 %9, 1
br label %clean_custom_
cond2: ; preds = %next
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @panic_loc8644)
unreachable
}
; Function Attrs: nounwind uwtable
define i64 @_ZN2ll4base9from_base20hf5e40fea922b0726XKcE(%"ll::limb::Limb"* nocapture, i8* readonly, i32, i32) unnamed_addr #0 {
entry-block:
%4 = icmp ult i32 %3, 257
tail call void @llvm.assume(i1 %4)
%5 = icmp ugt i32 %3, 1
tail call void @llvm.assume(i1 %5)
%6 = icmp slt i32 %2, 1
br i1 %6, label %then-block-10100-, label %next-block
then-block-10100-: ; preds = %entry-block
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 0, i64* %7, align 8
br label %clean_custom_
clean_custom_: ; preds = %then-block-10115-, %while_exit, %then-block-10687-.i, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i, %then-block-10645-.i, %then-block-10640-.i, %then-block-10232-, %then-block-10100-
%sret_slot.0 = phi i64 [ 1, %then-block-10100- ], [ %38, %then-block-10232- ], [ %size.1.lcssa, %while_exit ], [ 1, %then-block-10645-.i ], [ 0, %then-block-10640-.i ], [ %285, %then-block-10687-.i ], [ %size.0.lcssa.i, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i ], [ 0, %then-block-10115- ]
ret i64 %sret_slot.0
next-block: ; preds = %entry-block
%8 = add nuw nsw i32 %3, 511
%9 = and i32 %8, %3
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-10115-, label %next-block5
then-block-10115-: ; preds = %next-block
%11 = zext i32 %3 to i64
%12 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %11, i32 1, i32 0
%13 = load i64* %12, align 8
%14 = icmp ne i64 %13, 0
tail call void @llvm.assume(i1 %14)
%15 = add i32 %2, -1
%16 = icmp slt i32 %15, 0
br i1 %16, label %clean_custom_, label %while_body.lr.ph
while_body.lr.ph: ; preds = %then-block-10115-
%17 = sext i32 %15 to i64
%18 = getelementptr inbounds i8* %1, i64 %17
br label %while_body
while_exit: ; preds = %next-block2
%size.1.lcssa = phi i64 [ %size.1, %next-block2 ]
%.lcssa = phi i64 [ %34, %next-block2 ]
%19 = icmp eq i64 %.lcssa, 0
br i1 %19, label %clean_custom_, label %then-block-10232-
while_body: ; preds = %while_body.lr.ph, %next-block2
%size.085 = phi i64 [ 0, %while_body.lr.ph ], [ %size.1, %next-block2 ]
%b.084 = phi i8* [ %18, %while_body.lr.ph ], [ %35, %next-block2 ]
%next_bitpos.083 = phi i64 [ 0, %while_body.lr.ph ], [ %next_bitpos.1, %next-block2 ]
%20 = phi i64 [ 0, %while_body.lr.ph ], [ %34, %next-block2 ]
%21 = load i8* %b.084, align 1
%22 = zext i8 %21 to i64
%23 = and i64 %next_bitpos.083, 63
%24 = shl i64 %22, %23
%25 = or i64 %24, %20
%26 = add i64 %next_bitpos.083, %13
%27 = icmp ugt i64 %26, 63
br i1 %27, label %then-block-10193-, label %next-block2
then-block-10193-: ; preds = %while_body
%28 = add i64 %26, -64
%29 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %size.085, i32 0
store i64 %25, i64* %29, align 8
%30 = add i64 %size.085, 1
%31 = sub i64 %13, %28
%32 = and i64 %31, 63
%33 = lshr i64 %22, %32
br label %next-block2
next-block2: ; preds = %while_body, %then-block-10193-
%34 = phi i64 [ %33, %then-block-10193- ], [ %25, %while_body ]
%next_bitpos.1 = phi i64 [ %28, %then-block-10193- ], [ %26, %while_body ]
%size.1 = phi i64 [ %30, %then-block-10193- ], [ %size.085, %while_body ]
%35 = getelementptr inbounds i8* %b.084, i64 -1
%36 = icmp ult i8* %35, %1
br i1 %36, label %while_exit, label %while_body
then-block-10232-: ; preds = %while_exit
%37 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %size.1.lcssa, i32 0
store i64 %.lcssa, i64* %37, align 8
%38 = add i64 %size.1.lcssa, 1
br label %clean_custom_
next-block5: ; preds = %next-block
%39 = icmp ugt i32 %3, 2
tail call void @llvm.assume(i1 %39) #20
%40 = zext i32 %3 to i64
%big_base.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %40, i32 1, i32 0
%big_base.sroa.0.0.copyload.i = load i64* %big_base.sroa.0.0..sroa_idx.i, align 8
%41 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %40, i32 0
%42 = load i32* %41, align 16
%43 = icmp ult i32 %42, %2
%44 = load i8* %1, align 1
%45 = zext i8 %44 to i64
%46 = getelementptr inbounds i8* %1, i64 1
%47 = icmp eq i32 %3, 10
br i1 %43, label %while_body.lr.ph.i, label %while_exit.i
while_body.lr.ph.i: ; preds = %next-block5
%48 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%j.0239.i = add i32 %42, -1
%49 = icmp eq i32 %j.0239.i, 0
%50 = add i32 %42, -2
br label %while_body.i
while_exit.i.loopexit: ; preds = %join15.i
%.lcssa130 = phi i8* [ %192, %join15.i ]
%.lcssa129 = phi i64 [ %191, %join15.i ]
%.lcssa128 = phi i32 [ %188, %join15.i ]
%size.2.i.lcssa = phi i64 [ %size.2.i, %join15.i ]
%bp.3.i.lcssa = phi i8* [ %bp.3.i, %join15.i ]
br label %while_exit.i
while_exit.i: ; preds = %while_exit.i.loopexit, %next-block5
%.lcssa221.i = phi i8* [ %46, %next-block5 ], [ %.lcssa130, %while_exit.i.loopexit ]
%.lcssa220.i = phi i64 [ %45, %next-block5 ], [ %.lcssa129, %while_exit.i.loopexit ]
%bp.0.lcssa.i = phi i8* [ %1, %next-block5 ], [ %bp.3.i.lcssa, %while_exit.i.loopexit ]
%i.0.lcssa.i = phi i32 [ %42, %next-block5 ], [ %.lcssa128, %while_exit.i.loopexit ]
%size.0.lcssa.i = phi i64 [ 0, %next-block5 ], [ %size.2.i.lcssa, %while_exit.i.loopexit ]
%51 = add i32 %2, -1
%52 = add i32 %51, %42
%j19.0223.i = sub i32 %52, %i.0.lcssa.i
%53 = icmp eq i32 %52, %i.0.lcssa.i
br i1 %47, label %while_cond21.preheader.i, label %while_cond27.preheader.i
while_cond27.preheader.i: ; preds = %while_exit.i
br i1 %53, label %join30.i, label %while_body28.i.preheader
while_body28.i.preheader: ; preds = %while_cond27.preheader.i
%54 = add i32 %42, %2
%55 = add i32 %54, -1
%56 = sub i32 %55, %i.0.lcssa.i
%57 = add i32 %54, -2
%58 = sub i32 %57, %i.0.lcssa.i
%xtraiter132 = and i32 %56, 3
%lcmp.mod133 = icmp ne i32 %xtraiter132, 0
br i1 %lcmp.mod133, label %while_body28.i.prol, label %while_body28.i.preheader.split
while_body28.i.prol: ; preds = %while_body28.i.prol, %while_body28.i.preheader
%j25.0231.i.prol = phi i32 [ %j25.0.i.prol, %while_body28.i.prol ], [ %j19.0223.i, %while_body28.i.preheader ]
%bp.5230.i.prol = phi i8* [ %65, %while_body28.i.prol ], [ %.lcssa221.i, %while_body28.i.preheader ]
%59 = phi i8* [ %bp.5230.i.prol, %while_body28.i.prol ], [ %bp.0.lcssa.i, %while_body28.i.preheader ]
%big_base16.1229.i.prol = phi i64 [ %66, %while_body28.i.prol ], [ %40, %while_body28.i.preheader ]
%60 = phi i64 [ %64, %while_body28.i.prol ], [ %.lcssa220.i, %while_body28.i.preheader ]
%prol.iter134 = phi i32 [ %xtraiter132, %while_body28.i.preheader ], [ %prol.iter134.sub, %while_body28.i.prol ]
%61 = mul i64 %60, %40
%62 = load i8* %bp.5230.i.prol, align 1
%63 = zext i8 %62 to i64
%64 = add i64 %63, %61
%65 = getelementptr inbounds i8* %59, i64 2
%66 = mul i64 %big_base16.1229.i.prol, %40
%j25.0.i.prol = add i32 %j25.0231.i.prol, -1
%67 = icmp eq i32 %j25.0.i.prol, 0
%prol.iter134.sub = sub i32 %prol.iter134, 1
%prol.iter134.cmp = icmp ne i32 %prol.iter134.sub, 0
br i1 %prol.iter134.cmp, label %while_body28.i.prol, label %while_body28.i.preheader.split, !llvm.loop !483
while_body28.i.preheader.split: ; preds = %while_body28.i.prol, %while_body28.i.preheader
%.lcssa122.unr = phi i64 [ 0, %while_body28.i.preheader ], [ %66, %while_body28.i.prol ]
%.lcssa121.unr = phi i64 [ 0, %while_body28.i.preheader ], [ %64, %while_body28.i.prol ]
%j25.0231.i.unr = phi i32 [ %j19.0223.i, %while_body28.i.preheader ], [ %j25.0.i.prol, %while_body28.i.prol ]
%bp.5230.i.unr = phi i8* [ %.lcssa221.i, %while_body28.i.preheader ], [ %65, %while_body28.i.prol ]
%.unr135 = phi i8* [ %bp.0.lcssa.i, %while_body28.i.preheader ], [ %bp.5230.i.prol, %while_body28.i.prol ]
%big_base16.1229.i.unr = phi i64 [ %40, %while_body28.i.preheader ], [ %66, %while_body28.i.prol ]
%.unr136 = phi i64 [ %.lcssa220.i, %while_body28.i.preheader ], [ %64, %while_body28.i.prol ]
%68 = icmp ult i32 %58, 3
br i1 %68, label %join30.i.loopexit116, label %while_body28.i.preheader.split.split
while_body28.i.preheader.split.split: ; preds = %while_body28.i.preheader.split
br label %while_body28.i
while_cond21.preheader.i: ; preds = %while_exit.i
br i1 %53, label %join30.i, label %while_body22.i.preheader
while_body22.i.preheader: ; preds = %while_cond21.preheader.i
%69 = add i32 %42, %2
%70 = add i32 %69, -1
%71 = sub i32 %70, %i.0.lcssa.i
%72 = add i32 %69, -2
%73 = sub i32 %72, %i.0.lcssa.i
%xtraiter = and i32 %71, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body22.i.prol, label %while_body22.i.preheader.split
while_body22.i.prol: ; preds = %while_body22.i.prol, %while_body22.i.preheader
%j19.0226.i.prol = phi i32 [ %j19.0.i.prol, %while_body22.i.prol ], [ %j19.0223.i, %while_body22.i.preheader ]
%bp.4225.i.prol = phi i8* [ %81, %while_body22.i.prol ], [ %.lcssa221.i, %while_body22.i.preheader ]
%74 = phi i8* [ %bp.4225.i.prol, %while_body22.i.prol ], [ %bp.0.lcssa.i, %while_body22.i.preheader ]
%big_base16.0224.i.prol = phi i64 [ %80, %while_body22.i.prol ], [ %40, %while_body22.i.preheader ]
%75 = phi i64 [ %79, %while_body22.i.prol ], [ %.lcssa220.i, %while_body22.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body22.i.preheader ], [ %prol.iter.sub, %while_body22.i.prol ]
%76 = mul i64 %75, 10
%77 = load i8* %bp.4225.i.prol, align 1
%78 = zext i8 %77 to i64
%79 = add i64 %78, %76
%80 = mul i64 %big_base16.0224.i.prol, 10
%81 = getelementptr inbounds i8* %74, i64 2
%j19.0.i.prol = add i32 %j19.0226.i.prol, -1
%82 = icmp eq i32 %j19.0.i.prol, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body22.i.prol, label %while_body22.i.preheader.split, !llvm.loop !484
while_body22.i.preheader.split: ; preds = %while_body22.i.prol, %while_body22.i.preheader
%.lcssa120.unr = phi i64 [ 0, %while_body22.i.preheader ], [ %80, %while_body22.i.prol ]
%.lcssa119.unr = phi i64 [ 0, %while_body22.i.preheader ], [ %79, %while_body22.i.prol ]
%j19.0226.i.unr = phi i32 [ %j19.0223.i, %while_body22.i.preheader ], [ %j19.0.i.prol, %while_body22.i.prol ]
%bp.4225.i.unr = phi i8* [ %.lcssa221.i, %while_body22.i.preheader ], [ %81, %while_body22.i.prol ]
%.unr = phi i8* [ %bp.0.lcssa.i, %while_body22.i.preheader ], [ %bp.4225.i.prol, %while_body22.i.prol ]
%big_base16.0224.i.unr = phi i64 [ %40, %while_body22.i.preheader ], [ %80, %while_body22.i.prol ]
%.unr131 = phi i64 [ %.lcssa220.i, %while_body22.i.preheader ], [ %79, %while_body22.i.prol ]
%83 = icmp ult i32 %73, 3
br i1 %83, label %join30.i.loopexit, label %while_body22.i.preheader.split.split
while_body22.i.preheader.split.split: ; preds = %while_body22.i.preheader.split
br label %while_body22.i
while_body.i: ; preds = %join15.i, %while_body.lr.ph.i
%84 = phi i8* [ %46, %while_body.lr.ph.i ], [ %192, %join15.i ]
%85 = phi i64 [ %45, %while_body.lr.ph.i ], [ %191, %join15.i ]
%bp.0246.i = phi i8* [ %1, %while_body.lr.ph.i ], [ %bp.3.i, %join15.i ]
%i.0245.i = phi i32 [ %42, %while_body.lr.ph.i ], [ %188, %join15.i ]
%size.0244.i = phi i64 [ 0, %while_body.lr.ph.i ], [ %size.2.i, %join15.i ]
br i1 %47, label %while_cond5.preheader.i, label %while_cond10.preheader.i
while_cond10.preheader.i: ; preds = %while_body.i
br i1 %49, label %join.i, label %while_body11.i.preheader
while_body11.i.preheader: ; preds = %while_cond10.preheader.i
%xtraiter137 = and i32 %j.0239.i, 3
%lcmp.mod138 = icmp ne i32 %xtraiter137, 0
br i1 %lcmp.mod138, label %while_body11.i.prol.preheader, label %while_body11.i.preheader.split
while_body11.i.prol.preheader: ; preds = %while_body11.i.preheader
br label %while_body11.i.prol
while_body11.i.prol: ; preds = %while_body11.i.prol.preheader, %while_body11.i.prol
%j8.0236.i.prol = phi i32 [ %j8.0.i.prol, %while_body11.i.prol ], [ %j.0239.i, %while_body11.i.prol.preheader ]
%bp.2235.i.prol = phi i8* [ %92, %while_body11.i.prol ], [ %84, %while_body11.i.prol.preheader ]
%86 = phi i8* [ %bp.2235.i.prol, %while_body11.i.prol ], [ %bp.0246.i, %while_body11.i.prol.preheader ]
%87 = phi i64 [ %91, %while_body11.i.prol ], [ %85, %while_body11.i.prol.preheader ]
%prol.iter139 = phi i32 [ %prol.iter139.sub, %while_body11.i.prol ], [ %xtraiter137, %while_body11.i.prol.preheader ]
%88 = mul i64 %87, %40
%89 = load i8* %bp.2235.i.prol, align 1
%90 = zext i8 %89 to i64
%91 = add i64 %90, %88
%92 = getelementptr inbounds i8* %86, i64 2
%j8.0.i.prol = add i32 %j8.0236.i.prol, -1
%93 = icmp eq i32 %j8.0.i.prol, 0
%prol.iter139.sub = sub i32 %prol.iter139, 1
%prol.iter139.cmp = icmp ne i32 %prol.iter139.sub, 0
br i1 %prol.iter139.cmp, label %while_body11.i.prol, label %while_body11.i.preheader.split.loopexit, !llvm.loop !485
while_body11.i.preheader.split.loopexit: ; preds = %while_body11.i.prol
%.lcssa124.unr.ph = phi i8* [ %92, %while_body11.i.prol ]
%.lcssa123.unr.ph = phi i64 [ %91, %while_body11.i.prol ]
%j8.0236.i.unr.ph = phi i32 [ %j8.0.i.prol, %while_body11.i.prol ]
%bp.2235.i.unr.ph = phi i8* [ %92, %while_body11.i.prol ]
%.unr140.ph = phi i8* [ %bp.2235.i.prol, %while_body11.i.prol ]
%.unr141.ph = phi i64 [ %91, %while_body11.i.prol ]
br label %while_body11.i.preheader.split
while_body11.i.preheader.split: ; preds = %while_body11.i.preheader.split.loopexit, %while_body11.i.preheader
%.lcssa124.unr = phi i8* [ null, %while_body11.i.preheader ], [ %.lcssa124.unr.ph, %while_body11.i.preheader.split.loopexit ]
%.lcssa123.unr = phi i64 [ 0, %while_body11.i.preheader ], [ %.lcssa123.unr.ph, %while_body11.i.preheader.split.loopexit ]
%j8.0236.i.unr = phi i32 [ %j.0239.i, %while_body11.i.preheader ], [ %j8.0236.i.unr.ph, %while_body11.i.preheader.split.loopexit ]
%bp.2235.i.unr = phi i8* [ %84, %while_body11.i.preheader ], [ %bp.2235.i.unr.ph, %while_body11.i.preheader.split.loopexit ]
%.unr140 = phi i8* [ %bp.0246.i, %while_body11.i.preheader ], [ %.unr140.ph, %while_body11.i.preheader.split.loopexit ]
%.unr141 = phi i64 [ %85, %while_body11.i.preheader ], [ %.unr141.ph, %while_body11.i.preheader.split.loopexit ]
%94 = icmp ult i32 %50, 3
br i1 %94, label %join.i.loopexit117, label %while_body11.i.preheader.split.split
while_body11.i.preheader.split.split: ; preds = %while_body11.i.preheader.split
br label %while_body11.i
while_cond5.preheader.i: ; preds = %while_body.i
br i1 %49, label %join.i, label %while_body6.i.preheader
while_body6.i.preheader: ; preds = %while_cond5.preheader.i
%xtraiter142 = and i32 %j.0239.i, 3
%lcmp.mod143 = icmp ne i32 %xtraiter142, 0
br i1 %lcmp.mod143, label %while_body6.i.prol.preheader, label %while_body6.i.preheader.split
while_body6.i.prol.preheader: ; preds = %while_body6.i.preheader
br label %while_body6.i.prol
while_body6.i.prol: ; preds = %while_body6.i.prol.preheader, %while_body6.i.prol
%j.0241.i.prol = phi i32 [ %j.0.i.prol, %while_body6.i.prol ], [ %j.0239.i, %while_body6.i.prol.preheader ]
%bp.1240.i.prol = phi i8* [ %101, %while_body6.i.prol ], [ %84, %while_body6.i.prol.preheader ]
%95 = phi i8* [ %bp.1240.i.prol, %while_body6.i.prol ], [ %bp.0246.i, %while_body6.i.prol.preheader ]
%96 = phi i64 [ %100, %while_body6.i.prol ], [ %85, %while_body6.i.prol.preheader ]
%prol.iter144 = phi i32 [ %prol.iter144.sub, %while_body6.i.prol ], [ %xtraiter142, %while_body6.i.prol.preheader ]
%97 = mul i64 %96, 10
%98 = load i8* %bp.1240.i.prol, align 1
%99 = zext i8 %98 to i64
%100 = add i64 %99, %97
%101 = getelementptr inbounds i8* %95, i64 2
%j.0.i.prol = add i32 %j.0241.i.prol, -1
%102 = icmp eq i32 %j.0.i.prol, 0
%prol.iter144.sub = sub i32 %prol.iter144, 1
%prol.iter144.cmp = icmp ne i32 %prol.iter144.sub, 0
br i1 %prol.iter144.cmp, label %while_body6.i.prol, label %while_body6.i.preheader.split.loopexit, !llvm.loop !486
while_body6.i.preheader.split.loopexit: ; preds = %while_body6.i.prol
%.lcssa126.unr.ph = phi i8* [ %101, %while_body6.i.prol ]
%.lcssa125.unr.ph = phi i64 [ %100, %while_body6.i.prol ]
%j.0241.i.unr.ph = phi i32 [ %j.0.i.prol, %while_body6.i.prol ]
%bp.1240.i.unr.ph = phi i8* [ %101, %while_body6.i.prol ]
%.unr145.ph = phi i8* [ %bp.1240.i.prol, %while_body6.i.prol ]
%.unr146.ph = phi i64 [ %100, %while_body6.i.prol ]
br label %while_body6.i.preheader.split
while_body6.i.preheader.split: ; preds = %while_body6.i.preheader.split.loopexit, %while_body6.i.preheader
%.lcssa126.unr = phi i8* [ null, %while_body6.i.preheader ], [ %.lcssa126.unr.ph, %while_body6.i.preheader.split.loopexit ]
%.lcssa125.unr = phi i64 [ 0, %while_body6.i.preheader ], [ %.lcssa125.unr.ph, %while_body6.i.preheader.split.loopexit ]
%j.0241.i.unr = phi i32 [ %j.0239.i, %while_body6.i.preheader ], [ %j.0241.i.unr.ph, %while_body6.i.preheader.split.loopexit ]
%bp.1240.i.unr = phi i8* [ %84, %while_body6.i.preheader ], [ %bp.1240.i.unr.ph, %while_body6.i.preheader.split.loopexit ]
%.unr145 = phi i8* [ %bp.0246.i, %while_body6.i.preheader ], [ %.unr145.ph, %while_body6.i.preheader.split.loopexit ]
%.unr146 = phi i64 [ %85, %while_body6.i.preheader ], [ %.unr146.ph, %while_body6.i.preheader.split.loopexit ]
%103 = icmp ult i32 %50, 3
br i1 %103, label %join.i.loopexit, label %while_body6.i.preheader.split.split
while_body6.i.preheader.split.split: ; preds = %while_body6.i.preheader.split
br label %while_body6.i
while_body6.i: ; preds = %while_body6.i, %while_body6.i.preheader.split.split
%j.0241.i = phi i32 [ %j.0241.i.unr, %while_body6.i.preheader.split.split ], [ %j.0.i.3, %while_body6.i ]
%bp.1240.i = phi i8* [ %bp.1240.i.unr, %while_body6.i.preheader.split.split ], [ %125, %while_body6.i ]
%104 = phi i8* [ %.unr145, %while_body6.i.preheader.split.split ], [ %120, %while_body6.i ]
%105 = phi i64 [ %.unr146, %while_body6.i.preheader.split.split ], [ %124, %while_body6.i ]
%106 = mul i64 %105, 10
%107 = load i8* %bp.1240.i, align 1
%108 = zext i8 %107 to i64
%109 = add i64 %108, %106
%110 = getelementptr inbounds i8* %104, i64 2
%j.0.i = add i32 %j.0241.i, -1
%111 = mul i64 %109, 10
%112 = load i8* %110, align 1
%113 = zext i8 %112 to i64
%114 = add i64 %113, %111
%115 = getelementptr inbounds i8* %bp.1240.i, i64 2
%j.0.i.1 = add i32 %j.0.i, -1
%116 = mul i64 %114, 10
%117 = load i8* %115, align 1
%118 = zext i8 %117 to i64
%119 = add i64 %118, %116
%120 = getelementptr inbounds i8* %110, i64 2
%j.0.i.2 = add i32 %j.0.i.1, -1
%121 = mul i64 %119, 10
%122 = load i8* %120, align 1
%123 = zext i8 %122 to i64
%124 = add i64 %123, %121
%125 = getelementptr inbounds i8* %115, i64 2
%j.0.i.3 = add i32 %j.0.i.2, -1
%126 = icmp eq i32 %j.0.i.3, 0
br i1 %126, label %join.i.loopexit.unr-lcssa, label %while_body6.i
while_body11.i: ; preds = %while_body11.i, %while_body11.i.preheader.split.split
%j8.0236.i = phi i32 [ %j8.0236.i.unr, %while_body11.i.preheader.split.split ], [ %j8.0.i.3, %while_body11.i ]
%bp.2235.i = phi i8* [ %bp.2235.i.unr, %while_body11.i.preheader.split.split ], [ %148, %while_body11.i ]
%127 = phi i8* [ %.unr140, %while_body11.i.preheader.split.split ], [ %143, %while_body11.i ]
%128 = phi i64 [ %.unr141, %while_body11.i.preheader.split.split ], [ %147, %while_body11.i ]
%129 = mul i64 %128, %40
%130 = load i8* %bp.2235.i, align 1
%131 = zext i8 %130 to i64
%132 = add i64 %131, %129
%133 = getelementptr inbounds i8* %127, i64 2
%j8.0.i = add i32 %j8.0236.i, -1
%134 = mul i64 %132, %40
%135 = load i8* %133, align 1
%136 = zext i8 %135 to i64
%137 = add i64 %136, %134
%138 = getelementptr inbounds i8* %bp.2235.i, i64 2
%j8.0.i.1 = add i32 %j8.0.i, -1
%139 = mul i64 %137, %40
%140 = load i8* %138, align 1
%141 = zext i8 %140 to i64
%142 = add i64 %141, %139
%143 = getelementptr inbounds i8* %133, i64 2
%j8.0.i.2 = add i32 %j8.0.i.1, -1
%144 = mul i64 %142, %40
%145 = load i8* %143, align 1
%146 = zext i8 %145 to i64
%147 = add i64 %146, %144
%148 = getelementptr inbounds i8* %138, i64 2
%j8.0.i.3 = add i32 %j8.0.i.2, -1
%149 = icmp eq i32 %j8.0.i.3, 0
br i1 %149, label %join.i.loopexit117.unr-lcssa, label %while_body11.i
join.i.loopexit.unr-lcssa: ; preds = %while_body6.i
%.lcssa126.ph = phi i8* [ %125, %while_body6.i ]
%.lcssa125.ph = phi i64 [ %124, %while_body6.i ]
br label %join.i.loopexit
join.i.loopexit: ; preds = %while_body6.i.preheader.split, %join.i.loopexit.unr-lcssa
%.lcssa126 = phi i8* [ %.lcssa126.unr, %while_body6.i.preheader.split ], [ %.lcssa126.ph, %join.i.loopexit.unr-lcssa ]
%.lcssa125 = phi i64 [ %.lcssa125.unr, %while_body6.i.preheader.split ], [ %.lcssa125.ph, %join.i.loopexit.unr-lcssa ]
br label %join.i
join.i.loopexit117.unr-lcssa: ; preds = %while_body11.i
%.lcssa124.ph = phi i8* [ %148, %while_body11.i ]
%.lcssa123.ph = phi i64 [ %147, %while_body11.i ]
br label %join.i.loopexit117
join.i.loopexit117: ; preds = %while_body11.i.preheader.split, %join.i.loopexit117.unr-lcssa
%.lcssa124 = phi i8* [ %.lcssa124.unr, %while_body11.i.preheader.split ], [ %.lcssa124.ph, %join.i.loopexit117.unr-lcssa ]
%.lcssa123 = phi i64 [ %.lcssa123.unr, %while_body11.i.preheader.split ], [ %.lcssa123.ph, %join.i.loopexit117.unr-lcssa ]
br label %join.i
join.i: ; preds = %join.i.loopexit117, %join.i.loopexit, %while_cond5.preheader.i, %while_cond10.preheader.i
%150 = phi i64 [ %85, %while_cond5.preheader.i ], [ %85, %while_cond10.preheader.i ], [ %.lcssa125, %join.i.loopexit ], [ %.lcssa123, %join.i.loopexit117 ]
%bp.3.i = phi i8* [ %84, %while_cond5.preheader.i ], [ %84, %while_cond10.preheader.i ], [ %.lcssa126, %join.i.loopexit ], [ %.lcssa124, %join.i.loopexit117 ]
%151 = icmp eq i64 %size.0244.i, 0
br i1 %151, label %then-block-10445-.i, label %else-block13.i
then-block-10445-.i: ; preds = %join.i
%152 = icmp eq i64 %150, 0
br i1 %152, label %join15.i, label %then-block-10450-.i
then-block-10450-.i: ; preds = %then-block-10445-.i
store i64 %150, i64* %48, align 8
br label %join15.i
else-block13.i: ; preds = %join.i
%153 = trunc i64 %size.0244.i to i32
%xl.sroa.0.0.copyload36.i.i182.i = load i64* %48, align 8
%154 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36.i.i182.i, i64 %big_base.sroa.0.0.copyload.i) #20, !noalias !487, !srcloc !19
%155 = extractvalue { i64, i64 } %154, 0
%156 = extractvalue { i64, i64 } %154, 1
store i64 %156, i64* %48, align 8
%157 = add i32 %153, -1
%158 = icmp eq i32 %157, 0
br i1 %158, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i, label %next-block.i.i189.i.preheader
next-block.i.i189.i.preheader: ; preds = %else-block13.i
br label %next-block.i.i189.i
next-block.i.i189.i: ; preds = %next-block.i.i189.i.preheader, %next-block.i.i189.i
%159 = phi i32 [ %170, %next-block.i.i189.i ], [ %157, %next-block.i.i189.i.preheader ]
%160 = phi i64 [ %169, %next-block.i.i189.i ], [ %155, %next-block.i.i189.i.preheader ]
%wp.039.i.i184.i = phi %"ll::limb::Limb"* [ %161, %next-block.i.i189.i ], [ %0, %next-block.i.i189.i.preheader ]
%161 = getelementptr inbounds %"ll::limb::Limb"* %wp.039.i.i184.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i186.i = getelementptr inbounds %"ll::limb::Limb"* %161, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i187.i = load i64* %xl.sroa.0.0..sroa_idx.i.i186.i, align 8
%162 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i187.i, i64 %big_base.sroa.0.0.copyload.i) #20, !noalias !487, !srcloc !19
%163 = extractvalue { i64, i64 } %162, 0
%164 = extractvalue { i64, i64 } %162, 1
%165 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %164, i64 %160) #20
%166 = extractvalue { i64, i1 } %165, 0
%167 = extractvalue { i64, i1 } %165, 1
%168 = zext i1 %167 to i64
%169 = add i64 %168, %163
store i64 %166, i64* %xl.sroa.0.0..sroa_idx.i.i186.i, align 8
%170 = add i32 %159, -1
%171 = icmp eq i32 %170, 0
br i1 %171, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i.loopexit, label %next-block.i.i189.i
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i.loopexit: ; preds = %next-block.i.i189.i
%.lcssa127 = phi i64 [ %169, %next-block.i.i189.i ]
br label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i.loopexit, %else-block13.i
%.lcssa.i.i190.i = phi i64 [ %155, %else-block13.i ], [ %.lcssa127, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i.loopexit ]
%172 = icmp sgt i32 %153, 0
br i1 %172, label %then-block-839-.i172.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i
then-block-839-.i172.i: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i
%173 = load i64* %48, align 8
%174 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %173, i64 %150) #20
%175 = extractvalue { i64, i1 } %174, 0
%176 = extractvalue { i64, i1 } %174, 1
store i64 %175, i64* %48, align 8
br i1 %176, label %while_body.lr.ph.i173.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i
while_body.lr.ph.i173.i: ; preds = %then-block-839-.i172.i
%sext212.i = shl i64 %size.0244.i, 32
%177 = ashr exact i64 %sext212.i, 32
br label %while_body.i175.i
while_body.i175.i: ; preds = %next-block.i179.i, %while_body.lr.ph.i173.i
%indvars.iv.i174.i = phi i64 [ %indvars.iv.next.i178.i, %next-block.i179.i ], [ 1, %while_body.lr.ph.i173.i ]
%178 = icmp slt i64 %indvars.iv.i174.i, %177
br i1 %178, label %next-block.i179.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i.loopexit
next-block.i179.i: ; preds = %while_body.i175.i
%179 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.i174.i, i32 0
%180 = load i64* %179, align 8
%181 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %180, i64 1) #20
%182 = extractvalue { i64, i1 } %181, 0
%183 = extractvalue { i64, i1 } %181, 1
store i64 %182, i64* %179, align 8
%indvars.iv.next.i178.i = add nuw nsw i64 %indvars.iv.i174.i, 1
br i1 %183, label %while_body.i175.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i.loopexit
_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i.loopexit: ; preds = %while_body.i175.i, %next-block.i179.i
%sret_slot.sroa.0.0.i176.i.ph = phi i64 [ 1, %while_body.i175.i ], [ 0, %next-block.i179.i ]
br label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i
_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i: ; preds = %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i.loopexit, %then-block-839-.i172.i, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i
%sret_slot.sroa.0.0.i176.i = phi i64 [ 0, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit191.i ], [ 0, %then-block-839-.i172.i ], [ %sret_slot.sroa.0.0.i176.i.ph, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i.loopexit ]
%184 = add i64 %sret_slot.sroa.0.0.i176.i, %.lcssa.i.i190.i
%185 = icmp eq i64 %184, 0
br i1 %185, label %join15.i, label %then-block-10490-.i
then-block-10490-.i: ; preds = %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i
%186 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %size.0244.i, i32 0
store i64 %184, i64* %186, align 8
%187 = add i64 %size.0244.i, 1
br label %join15.i
join15.i: ; preds = %then-block-10490-.i, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i, %then-block-10450-.i, %then-block-10445-.i
%size.2.i = phi i64 [ 1, %then-block-10450-.i ], [ 0, %then-block-10445-.i ], [ %187, %then-block-10490-.i ], [ %size.0244.i, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit180.i ]
%188 = add i32 %i.0245.i, %42
%189 = icmp ult i32 %188, %2
%190 = load i8* %bp.3.i, align 1
%191 = zext i8 %190 to i64
%192 = getelementptr inbounds i8* %bp.3.i, i64 1
br i1 %189, label %while_body.i, label %while_exit.i.loopexit
while_body22.i: ; preds = %while_body22.i, %while_body22.i.preheader.split.split
%j19.0226.i = phi i32 [ %j19.0226.i.unr, %while_body22.i.preheader.split.split ], [ %j19.0.i.3, %while_body22.i ]
%bp.4225.i = phi i8* [ %bp.4225.i.unr, %while_body22.i.preheader.split.split ], [ %218, %while_body22.i ]
%193 = phi i8* [ %.unr, %while_body22.i.preheader.split.split ], [ %212, %while_body22.i ]
%big_base16.0224.i = phi i64 [ %big_base16.0224.i.unr, %while_body22.i.preheader.split.split ], [ %217, %while_body22.i ]
%194 = phi i64 [ %.unr131, %while_body22.i.preheader.split.split ], [ %216, %while_body22.i ]
%195 = mul i64 %194, 10
%196 = load i8* %bp.4225.i, align 1
%197 = zext i8 %196 to i64
%198 = add i64 %197, %195
%199 = mul i64 %big_base16.0224.i, 10
%200 = getelementptr inbounds i8* %193, i64 2
%j19.0.i = add i32 %j19.0226.i, -1
%201 = mul i64 %198, 10
%202 = load i8* %200, align 1
%203 = zext i8 %202 to i64
%204 = add i64 %203, %201
%205 = mul i64 %199, 10
%206 = getelementptr inbounds i8* %bp.4225.i, i64 2
%j19.0.i.1 = add i32 %j19.0.i, -1
%207 = mul i64 %204, 10
%208 = load i8* %206, align 1
%209 = zext i8 %208 to i64
%210 = add i64 %209, %207
%211 = mul i64 %205, 10
%212 = getelementptr inbounds i8* %200, i64 2
%j19.0.i.2 = add i32 %j19.0.i.1, -1
%213 = mul i64 %210, 10
%214 = load i8* %212, align 1
%215 = zext i8 %214 to i64
%216 = add i64 %215, %213
%217 = mul i64 %211, 10
%218 = getelementptr inbounds i8* %206, i64 2
%j19.0.i.3 = add i32 %j19.0.i.2, -1
%219 = icmp eq i32 %j19.0.i.3, 0
br i1 %219, label %join30.i.loopexit.unr-lcssa, label %while_body22.i
while_body28.i: ; preds = %while_body28.i, %while_body28.i.preheader.split.split
%j25.0231.i = phi i32 [ %j25.0231.i.unr, %while_body28.i.preheader.split.split ], [ %j25.0.i.3, %while_body28.i ]
%bp.5230.i = phi i8* [ %bp.5230.i.unr, %while_body28.i.preheader.split.split ], [ %244, %while_body28.i ]
%220 = phi i8* [ %.unr135, %while_body28.i.preheader.split.split ], [ %238, %while_body28.i ]
%big_base16.1229.i = phi i64 [ %big_base16.1229.i.unr, %while_body28.i.preheader.split.split ], [ %245, %while_body28.i ]
%221 = phi i64 [ %.unr136, %while_body28.i.preheader.split.split ], [ %243, %while_body28.i ]
%222 = mul i64 %221, %40
%223 = load i8* %bp.5230.i, align 1
%224 = zext i8 %223 to i64
%225 = add i64 %224, %222
%226 = getelementptr inbounds i8* %220, i64 2
%227 = mul i64 %big_base16.1229.i, %40
%j25.0.i = add i32 %j25.0231.i, -1
%228 = mul i64 %225, %40
%229 = load i8* %226, align 1
%230 = zext i8 %229 to i64
%231 = add i64 %230, %228
%232 = getelementptr inbounds i8* %bp.5230.i, i64 2
%233 = mul i64 %227, %40
%j25.0.i.1 = add i32 %j25.0.i, -1
%234 = mul i64 %231, %40
%235 = load i8* %232, align 1
%236 = zext i8 %235 to i64
%237 = add i64 %236, %234
%238 = getelementptr inbounds i8* %226, i64 2
%239 = mul i64 %233, %40
%j25.0.i.2 = add i32 %j25.0.i.1, -1
%240 = mul i64 %237, %40
%241 = load i8* %238, align 1
%242 = zext i8 %241 to i64
%243 = add i64 %242, %240
%244 = getelementptr inbounds i8* %232, i64 2
%245 = mul i64 %239, %40
%j25.0.i.3 = add i32 %j25.0.i.2, -1
%246 = icmp eq i32 %j25.0.i.3, 0
br i1 %246, label %join30.i.loopexit116.unr-lcssa, label %while_body28.i
join30.i.loopexit.unr-lcssa: ; preds = %while_body22.i
%.lcssa120.ph = phi i64 [ %217, %while_body22.i ]
%.lcssa119.ph = phi i64 [ %216, %while_body22.i ]
br label %join30.i.loopexit
join30.i.loopexit: ; preds = %while_body22.i.preheader.split, %join30.i.loopexit.unr-lcssa
%.lcssa120 = phi i64 [ %.lcssa120.unr, %while_body22.i.preheader.split ], [ %.lcssa120.ph, %join30.i.loopexit.unr-lcssa ]
%.lcssa119 = phi i64 [ %.lcssa119.unr, %while_body22.i.preheader.split ], [ %.lcssa119.ph, %join30.i.loopexit.unr-lcssa ]
br label %join30.i
join30.i.loopexit116.unr-lcssa: ; preds = %while_body28.i
%.lcssa122.ph = phi i64 [ %245, %while_body28.i ]
%.lcssa121.ph = phi i64 [ %243, %while_body28.i ]
br label %join30.i.loopexit116
join30.i.loopexit116: ; preds = %while_body28.i.preheader.split, %join30.i.loopexit116.unr-lcssa
%.lcssa122 = phi i64 [ %.lcssa122.unr, %while_body28.i.preheader.split ], [ %.lcssa122.ph, %join30.i.loopexit116.unr-lcssa ]
%.lcssa121 = phi i64 [ %.lcssa121.unr, %while_body28.i.preheader.split ], [ %.lcssa121.ph, %join30.i.loopexit116.unr-lcssa ]
br label %join30.i
join30.i: ; preds = %join30.i.loopexit116, %join30.i.loopexit, %while_cond21.preheader.i, %while_cond27.preheader.i
%247 = phi i64 [ %.lcssa220.i, %while_cond21.preheader.i ], [ %.lcssa220.i, %while_cond27.preheader.i ], [ %.lcssa119, %join30.i.loopexit ], [ %.lcssa121, %join30.i.loopexit116 ]
%big_base16.2.i = phi i64 [ %40, %while_cond21.preheader.i ], [ %40, %while_cond27.preheader.i ], [ %.lcssa120, %join30.i.loopexit ], [ %.lcssa122, %join30.i.loopexit116 ]
%248 = icmp eq i64 %size.0.lcssa.i, 0
br i1 %248, label %then-block-10640-.i, label %else-block32.i
then-block-10640-.i: ; preds = %join30.i
%249 = icmp eq i64 %247, 0
br i1 %249, label %clean_custom_, label %then-block-10645-.i
then-block-10645-.i: ; preds = %then-block-10640-.i
%250 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
store i64 %247, i64* %250, align 8
br label %clean_custom_
else-block32.i: ; preds = %join30.i
%251 = trunc i64 %size.0.lcssa.i to i32
%xl.sroa.0.0..sroa_idx35.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%xl.sroa.0.0.copyload36.i.i.i = load i64* %xl.sroa.0.0..sroa_idx35.i.i.i, align 8
%252 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36.i.i.i, i64 %big_base16.2.i) #20, !noalias !494, !srcloc !19
%253 = extractvalue { i64, i64 } %252, 0
%254 = extractvalue { i64, i64 } %252, 1
store i64 %254, i64* %xl.sroa.0.0..sroa_idx35.i.i.i, align 8
%255 = add i32 %251, -1
%256 = icmp eq i32 %255, 0
br i1 %256, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %else-block32.i
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i.preheader, %next-block.i.i.i
%257 = phi i32 [ %268, %next-block.i.i.i ], [ %255, %next-block.i.i.i.preheader ]
%258 = phi i64 [ %267, %next-block.i.i.i ], [ %253, %next-block.i.i.i.preheader ]
%wp.039.i.i.i = phi %"ll::limb::Limb"* [ %259, %next-block.i.i.i ], [ %0, %next-block.i.i.i.preheader ]
%259 = getelementptr inbounds %"ll::limb::Limb"* %wp.039.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %259, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%260 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %big_base16.2.i) #20, !noalias !494, !srcloc !19
%261 = extractvalue { i64, i64 } %260, 0
%262 = extractvalue { i64, i64 } %260, 1
%263 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %262, i64 %258) #20
%264 = extractvalue { i64, i1 } %263, 0
%265 = extractvalue { i64, i1 } %263, 1
%266 = zext i1 %265 to i64
%267 = add i64 %266, %261
store i64 %264, i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%268 = add i32 %257, -1
%269 = icmp eq i32 %268, 0
br i1 %269, label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i.loopexit, label %next-block.i.i.i
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i.loopexit: ; preds = %next-block.i.i.i
%.lcssa118 = phi i64 [ %267, %next-block.i.i.i ]
br label %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i
_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i.loopexit, %else-block32.i
%.lcssa.i.i.i = phi i64 [ %253, %else-block32.i ], [ %.lcssa118, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i.loopexit ]
%270 = icmp sgt i32 %251, 0
br i1 %270, label %then-block-839-.i.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i
then-block-839-.i.i: ; preds = %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i
%271 = load i64* %xl.sroa.0.0..sroa_idx35.i.i.i, align 8
%272 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %271, i64 %247) #20
%273 = extractvalue { i64, i1 } %272, 0
%274 = extractvalue { i64, i1 } %272, 1
store i64 %273, i64* %xl.sroa.0.0..sroa_idx35.i.i.i, align 8
br i1 %274, label %while_body.lr.ph.i.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i
while_body.lr.ph.i.i: ; preds = %then-block-839-.i.i
%sext.i = shl i64 %size.0.lcssa.i, 32
%275 = ashr exact i64 %sext.i, 32
br label %while_body.i.i
while_body.i.i: ; preds = %next-block.i.i, %while_body.lr.ph.i.i
%indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %next-block.i.i ], [ 1, %while_body.lr.ph.i.i ]
%276 = icmp slt i64 %indvars.iv.i.i, %275
br i1 %276, label %next-block.i.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i.loopexit
next-block.i.i: ; preds = %while_body.i.i
%277 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.i.i, i32 0
%278 = load i64* %277, align 8
%279 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %278, i64 1) #20
%280 = extractvalue { i64, i1 } %279, 0
%281 = extractvalue { i64, i1 } %279, 1
store i64 %280, i64* %277, align 8
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
br i1 %281, label %while_body.i.i, label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i.loopexit
_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i.loopexit: ; preds = %while_body.i.i, %next-block.i.i
%sret_slot.sroa.0.0.i.i.ph = phi i64 [ 1, %while_body.i.i ], [ 0, %next-block.i.i ]
br label %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i
_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i: ; preds = %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i.loopexit, %then-block-839-.i.i, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i
%sret_slot.sroa.0.0.i.i = phi i64 [ 0, %_ZN2ll3mul5mul_120h6ba43b8fab0b0f6eNtaE.exit.i ], [ 0, %then-block-839-.i.i ], [ %sret_slot.sroa.0.0.i.i.ph, %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i.loopexit ]
%282 = add i64 %sret_slot.sroa.0.0.i.i, %.lcssa.i.i.i
%283 = icmp eq i64 %282, 0
br i1 %283, label %clean_custom_, label %then-block-10687-.i
then-block-10687-.i: ; preds = %_ZN2ll6addsub5add_120ha77132d265068cbdknaE.exit.i
%284 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %size.0.lcssa.i, i32 0
store i64 %282, i64* %284, align 8
%285 = add i64 %size.0.lcssa.i, 1
br label %clean_custom_
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23Limb.Mul$LT$BaseInt$GT$3mul20h003e0e0fa1dd2b49b6cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = mul i64 %1, %0
ret i64 %2
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i8 @_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%4 = load i64* %3, align 8, !alias.scope !501, !noalias !504
%5 = load i64* %2, align 8, !alias.scope !504, !noalias !501
%6 = icmp ult i64 %4, %5
br i1 %6, label %_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE.exit, label %else-block.i
else-block.i: ; preds = %entry-block
%7 = icmp ugt i64 %4, %5
%..i = zext i1 %7 to i8
br label %_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE.exit
_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE.exit: ; preds = %entry-block, %else-block.i
%sret_slot.0.i = phi i8 [ -1, %entry-block ], [ %..i, %else-block.i ]
ret i8 %sret_slot.0.i
}
; Function Attrs: inlinehint nounwind readnone uwtable
define void @_ZN2ll4limb19Limb...std..cmp..Eq27assert_receiver_is_total_eq20h8920cb36a39cbeb6CYcE(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #14 {
entry-block:
ret void
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define i64 @_ZN2ll4limb10Limb.Clone5clone20hdf85b9c1e0fdd4233YcE(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%sret_slot.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%sret_slot.sroa.0.0.copyload = load i64* %sret_slot.sroa.0.0..sroa_idx, align 8
ret i64 %sret_slot.sroa.0.0.copyload
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb4Limb9high_part20h84b2ae900cc1e60atZcE(i64) unnamed_addr #5 {
entry-block:
%1 = lshr i64 %0, 32
ret i64 %1
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb4Limb8low_part20hc5919d38e544adeeGZcE(i64) unnamed_addr #5 {
entry-block:
%1 = and i64 %0, 4294967295
ret i64 %1
}
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) unnamed_addr #12
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.usub.with.overflow.i64(i64, i64) unnamed_addr #12
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @_ZN2ll4limb4Limb6mul_lo20h9e06ff373010d6f1R0cE(i64, i64) unnamed_addr #5 {
entry-block:
%2 = mul i64 %1, %0
ret i64 %2
}
; Function Attrs: alwaysinline nounwind uwtable
define i64 @_ZN2ll4limb4Limb6mul_hi20h16cc5c1601e07dde80cE(i64, i64) unnamed_addr #2 {
entry-block:
%2 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %0, i64 %1) #20, !noalias !506, !srcloc !19
%3 = extractvalue { i64, i64 } %2, 0
ret i64 %3
}
; Function Attrs: nounwind uwtable
define void @_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64) unnamed_addr #0 {
entry-block:
%3 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %1, i64 %2) #20, !noalias !511, !srcloc !19
%4 = extractvalue { i64, i64 } %3, 0
%5 = extractvalue { i64, i64 } %3, 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %4, i64* %high.sroa.0.0..sroa_idx.i, align 8, !alias.scope !511
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %5, i64* %low.sroa.0.0..sroa_idx.i, align 8, !alias.scope !511
ret void
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb3div20h34088ac58b3f6132PldE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64) unnamed_addr #2 {
entry-block:
%4 = icmp ult i64 %1, %3
tail call void @llvm.assume(i1 %4)
%5 = icmp slt i64 %3, 0
tail call void @llvm.assume(i1 %5)
%6 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %1, i64 %2, i64 %3) #20, !noalias !514, !srcloc !146
%7 = extractvalue { i64, i64 } %6, 0
%8 = extractvalue { i64, i64 } %6, 1
%q.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %8, i64* %q.sroa.0.0..sroa_idx.i, align 8, !alias.scope !514
%r.sroa.0.0..sroa_idx.i = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %7, i64* %r.sroa.0.0..sroa_idx.i, align 8, !alias.scope !514
ret void
}
; Function Attrs: nounwind readnone
declare i64 @llvm.ctlz.i64(i64, i1) unnamed_addr #12
; Function Attrs: nounwind readnone
declare i64 @llvm.cttz.i64(i64, i1) unnamed_addr #12
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23BaseInt.Add$LT$Limb$GT$3add20h88e8464fd6d81809m4cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = add i64 %1, %0
ret i64 %2
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define i64 @"_ZN2ll4limb23BaseInt.Sub$LT$Limb$GT$3sub20hc3fe401c334d8425u5cE"(i64, i64) unnamed_addr #5 {
entry-block:
%2 = sub i64 %0, %1
ret i64 %2
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2ne20hb3d48c9141d3a57cVddE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp ne i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define i16 @"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$11partial_cmp20hf74118d512b49711gedE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8, !alias.scope !517, !noalias !522
%5 = load i64* %3, align 8, !alias.scope !528, !noalias !529
%6 = icmp ule i64 %4, %5
%7 = icmp ult i64 %4, %5
br i1 %7, label %match_case.i, label %compare_next.i
match_case.i: ; preds = %entry-block
switch i1 %6, label %compare_next.i [
i1 false, label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
i1 true, label %match_case7.i
]
compare_next.i: ; preds = %match_case.i, %entry-block
%..i = select i1 %6, i16 1, i16 257
br label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
match_case7.i: ; preds = %match_case.i
br label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit: ; preds = %match_case.i, %compare_next.i, %match_case7.i
%sret_slot.sroa.0.0.i = phi i16 [ -255, %match_case7.i ], [ %..i, %compare_next.i ], [ 0, %match_case.i ]
ret i16 %sret_slot.sroa.0.0.i
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$2le20h8180fbfdcaff87cdOedE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%4 = load i64* %2, align 8
%5 = load i64* %3, align 8
%6 = icmp ule i64 %4, %5
ret i1 %6
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define i16 @"_ZN2ll4limb30Limb.PartialOrd$LT$BaseInt$GT$11partial_cmp20hdfaf916608623cbeggdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8, !alias.scope !530, !noalias !535
%4 = load i64* %1, align 8, !alias.scope !541, !noalias !542
%5 = icmp ule i64 %3, %4
%6 = icmp ult i64 %3, %4
br i1 %6, label %match_case.i, label %compare_next.i
match_case.i: ; preds = %entry-block
switch i1 %5, label %compare_next.i [
i1 false, label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
i1 true, label %match_case7.i
]
compare_next.i: ; preds = %match_case.i, %entry-block
%..i = select i1 %5, i16 1, i16 257
br label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
match_case7.i: ; preds = %match_case.i
br label %_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit
_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE.exit: ; preds = %match_case.i, %compare_next.i, %match_case7.i
%sret_slot.sroa.0.0.i = phi i16 [ -255, %match_case7.i ], [ %..i, %compare_next.i ], [ 0, %match_case.i ]
ret i16 %sret_slot.sroa.0.0.i
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb30Limb.PartialOrd$LT$BaseInt$GT$2le20h26c17e1caebd361fMgdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp ule i64 %3, %4
ret i1 %5
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define zeroext i1 @"_ZN2ll4limb30Limb.PartialOrd$LT$BaseInt$GT$2ge20hab18db002f800537ihdE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #4 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8
%4 = load i64* %1, align 8
%5 = icmp uge i64 %3, %4
ret i1 %5
}
; Function Attrs: uwtable
define i8 @_ZN2ll4limb15Limb.fmt..Debug3fmt20h995ea7feb2132e1aDhdE(%"ll::limb::Limb"* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = tail call i8 @_ZN3fmt3num14u64.fmt..Debug3fmt20hd5ec6eb7349208feflME(i64* noalias readonly dereferenceable(8) %2, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1)
ret i8 %3
}
declare i8 @_ZN3fmt3num14u64.fmt..Debug3fmt20hd5ec6eb7349208feflME(i64* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64) unnamed_addr #2 {
entry-block:
%4 = tail call { i64, i64 } asm "divq $4", "={rdx},={rax},0,1,r|m,~{dirflag},~{fpsr},~{flags}"(i64 %1, i64 %2, i64 %3) #20, !srcloc !146
%5 = extractvalue { i64, i64 } %4, 0
%6 = extractvalue { i64, i64 } %4, 1
%q.sroa.0.0..sroa_idx = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 0, i32 0
store i64 %6, i64* %q.sroa.0.0..sroa_idx, align 8
%r.sroa.0.0..sroa_idx = getelementptr inbounds { %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 0, i32 1, i32 0
store i64 %5, i64* %r.sroa.0.0..sroa_idx, align 8
ret void
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define zeroext i1 @_ZN2ll7overlap20hc4caf56717ca47302pdE(%"ll::limb::Limb"* readnone, i32, %"ll::limb::Limb"* readnone, i32) unnamed_addr #5 {
entry-block:
%4 = sext i32 %1 to i64
%5 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %4
%6 = icmp ugt %"ll::limb::Limb"* %5, %2
br i1 %6, label %before_rhs, label %join
join: ; preds = %before_rhs, %entry-block
%7 = phi i1 [ false, %entry-block ], [ %10, %before_rhs ]
ret i1 %7
before_rhs: ; preds = %entry-block
%8 = sext i32 %3 to i64
%9 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %8
%10 = icmp ugt %"ll::limb::Limb"* %9, %0
br label %join
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define zeroext i1 @_ZN2ll16same_or_separate20hcbd53b8d01a12670zqdE(%"ll::limb::Limb"* readnone, i32, %"ll::limb::Limb"* readnone, i32) unnamed_addr #5 {
entry-block:
%4 = icmp eq %"ll::limb::Limb"* %0, %2
br i1 %4, label %join, label %before_rhs
join: ; preds = %before_rhs.i, %before_rhs, %entry-block
%5 = phi i1 [ true, %entry-block ], [ true, %before_rhs ], [ %phitmp, %before_rhs.i ]
ret i1 %5
before_rhs: ; preds = %entry-block
%6 = sext i32 %1 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %6
%8 = icmp ugt %"ll::limb::Limb"* %7, %2
br i1 %8, label %before_rhs.i, label %join
before_rhs.i: ; preds = %before_rhs
%9 = sext i32 %3 to i64
%10 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %9
%phitmp = icmp ule %"ll::limb::Limb"* %10, %0
br label %join
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define zeroext i1 @_ZN2ll12same_or_incr20h4e73cf197f1e0a342qdE(%"ll::limb::Limb"* readnone, i32, %"ll::limb::Limb"* readnone, i32) unnamed_addr #5 {
entry-block:
%4 = icmp ugt %"ll::limb::Limb"* %0, %2
br i1 %4, label %before_rhs, label %join
join: ; preds = %before_rhs.i, %before_rhs, %entry-block
%5 = phi i1 [ true, %entry-block ], [ true, %before_rhs ], [ %phitmp, %before_rhs.i ]
ret i1 %5
before_rhs: ; preds = %entry-block
%6 = sext i32 %1 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %6
%8 = icmp ugt %"ll::limb::Limb"* %7, %2
br i1 %8, label %before_rhs.i, label %join
before_rhs.i: ; preds = %before_rhs
%9 = sext i32 %3 to i64
%10 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %9
%phitmp = icmp ule %"ll::limb::Limb"* %10, %0
br label %join
}
; Function Attrs: alwaysinline nounwind readnone uwtable
define zeroext i1 @_ZN2ll12same_or_decr20h28ce248eec863a26vrdE(%"ll::limb::Limb"* readnone, i32, %"ll::limb::Limb"* readnone, i32) unnamed_addr #5 {
entry-block:
%4 = icmp ult %"ll::limb::Limb"* %0, %2
br i1 %4, label %before_rhs, label %join
join: ; preds = %before_rhs.i, %before_rhs, %entry-block
%5 = phi i1 [ true, %entry-block ], [ true, %before_rhs ], [ %phitmp, %before_rhs.i ]
ret i1 %5
before_rhs: ; preds = %entry-block
%6 = sext i32 %1 to i64
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %6
%8 = icmp ugt %"ll::limb::Limb"* %7, %2
br i1 %8, label %before_rhs.i, label %join
before_rhs.i: ; preds = %before_rhs
%9 = sext i32 %3 to i64
%10 = getelementptr inbounds %"ll::limb::Limb"* %2, i64 %9
%phitmp = icmp ule %"ll::limb::Limb"* %10, %0
br label %join
}
; Function Attrs: inlinehint nounwind uwtable
define void @_ZN2ll9copy_decr20hed367eead80e6505atdE(%"ll::limb::Limb"* nocapture readonly, %"ll::limb::Limb"* nocapture, i32) unnamed_addr #3 {
entry-block:
%n.012 = add i32 %2, -1
%3 = icmp sgt i32 %n.012, -1
br i1 %3, label %while_body.lr.ph, label %while_exit
while_body.lr.ph: ; preds = %entry-block
%4 = sext i32 %n.012 to i64
%5 = sub i32 0, %2
%6 = icmp sgt i32 %5, -1
%smax = select i1 %6, i32 %5, i32 -1
%7 = add i32 %smax, %2
%8 = zext i32 %7 to i64
%9 = add nuw nsw i64 %8, 1
%end.idx = add nuw nsw i64 %8, 1
%n.vec = and i64 %9, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%10 = add i32 %2, -1
%11 = sext i32 %10 to i64
%12 = sub i32 0, %2
%13 = icmp sgt i32 %12, -1
%smax16 = select i1 %13, i32 %12, i32 -1
%14 = add i32 %smax16, %2
%15 = zext i32 %14 to i64
%16 = sub nsw i64 %11, %15
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph
%scevgep = getelementptr %"ll::limb::Limb"* %1, i64 %11
%scevgep21 = getelementptr %"ll::limb::Limb"* %0, i64 %16
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep21
%scevgep19 = getelementptr %"ll::limb::Limb"* %0, i64 %11
%scevgep17 = getelementptr %"ll::limb::Limb"* %1, i64 %16
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep19, %scevgep17
%memcheck.conflict = and i1 %bound0, %bound1
%rev.ind.end = sub nsw i64 %4, %n.vec
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end25 = sub i32 %n.012, %cast.crd
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%reverse.idx = sub i64 %4, %index
%17 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %reverse.idx, i32 0
%18 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %reverse.idx, i32 0
%19 = getelementptr i64* %17, i64 -1
%20 = bitcast i64* %19 to <2 x i64>*
%wide.load = load <2 x i64>* %20, align 8
%21 = getelementptr i64* %17, i64 -3
%22 = bitcast i64* %21 to <2 x i64>*
%wide.load33 = load <2 x i64>* %22, align 8
%23 = getelementptr i64* %18, i64 -1
%24 = bitcast i64* %23 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %24, align 8
%25 = getelementptr i64* %18, i64 -3
%26 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load33, <2 x i64>* %26, align 8
%index.next = add i64 %index, 4
%27 = icmp eq i64 %index.next, %n.vec
br i1 %27, label %middle.block.loopexit, label %vector.body, !llvm.loop !543
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph
%resume.val = phi i64 [ %4, %while_body.lr.ph ], [ %4, %vector.memcheck ], [ %rev.ind.end, %middle.block.loopexit ]
%resume.val23 = phi i32 [ %n.012, %while_body.lr.ph ], [ %n.012, %vector.memcheck ], [ %rev.ind.end25, %middle.block.loopexit ]
%new.indc.resume.val = phi i64 [ 0, %while_body.lr.ph ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %while_exit, label %while_body.preheader
while_body.preheader: ; preds = %middle.block
%28 = sub i32 -1, %resume.val23
%29 = icmp sgt i32 %28, -1
%smax37 = select i1 %29, i32 %28, i32 -1
%30 = add i32 %resume.val23, %smax37
%31 = add i32 %30, 2
%32 = add i32 %30, 1
%xtraiter = and i32 %31, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.prol, label %while_body.preheader.split
while_body.prol: ; preds = %while_body.prol, %while_body.preheader
%indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %while_body.prol ], [ %resume.val, %while_body.preheader ]
%n.013.prol = phi i32 [ %n.0.prol, %while_body.prol ], [ %resume.val23, %while_body.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.preheader ], [ %prol.iter.sub, %while_body.prol ]
%33 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.prol, i32 0
%34 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.prol, i32 0
%35 = load i64* %33, align 8
store i64 %35, i64* %34, align 8
%n.0.prol = add nsw i32 %n.013.prol, -1
%36 = icmp sgt i32 %n.013.prol, 0
%indvars.iv.next.prol = add nsw i64 %indvars.iv.prol, -1
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.prol, label %while_body.preheader.split, !llvm.loop !544
while_body.preheader.split: ; preds = %while_body.prol, %while_body.preheader
%indvars.iv.unr = phi i64 [ %resume.val, %while_body.preheader ], [ %indvars.iv.next.prol, %while_body.prol ]
%n.013.unr = phi i32 [ %resume.val23, %while_body.preheader ], [ %n.0.prol, %while_body.prol ]
%37 = icmp ult i32 %32, 3
br i1 %37, label %while_exit.loopexit, label %while_body.preheader.split.split
while_body.preheader.split.split: ; preds = %while_body.preheader.split
br label %while_body
while_exit.loopexit.unr-lcssa: ; preds = %while_body
br label %while_exit.loopexit
while_exit.loopexit: ; preds = %while_body.preheader.split, %while_exit.loopexit.unr-lcssa
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %middle.block, %entry-block
ret void
while_body: ; preds = %while_body, %while_body.preheader.split.split
%indvars.iv = phi i64 [ %indvars.iv.unr, %while_body.preheader.split.split ], [ %indvars.iv.next.3, %while_body ]
%n.013 = phi i32 [ %n.013.unr, %while_body.preheader.split.split ], [ %n.0.3, %while_body ]
%38 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv, i32 0
%39 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv, i32 0
%40 = load i64* %38, align 8
store i64 %40, i64* %39, align 8
%n.0 = add nsw i32 %n.013, -1
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%41 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next, i32 0
%43 = load i64* %41, align 8
store i64 %43, i64* %42, align 8
%n.0.1 = add nsw i32 %n.0, -1
%indvars.iv.next.1 = add nsw i64 %indvars.iv.next, -1
%44 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next.1, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.1, i32 0
%46 = load i64* %44, align 8
store i64 %46, i64* %45, align 8
%n.0.2 = add nsw i32 %n.0.1, -1
%indvars.iv.next.2 = add nsw i64 %indvars.iv.next.1, -1
%47 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next.2, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 %indvars.iv.next.2, i32 0
%49 = load i64* %47, align 8
store i64 %49, i64* %48, align 8
%n.0.3 = add nsw i32 %n.0.2, -1
%50 = icmp sgt i32 %n.0.2, 0
%indvars.iv.next.3 = add nsw i64 %indvars.iv.next.2, -1
br i1 %50, label %while_body, label %while_exit.loopexit.unr-lcssa, !llvm.loop !545
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i32 @_ZN2ll9normalize20hc759c50468c411bdTudE(%"ll::limb::Limb"* nocapture readonly, i32) unnamed_addr #13 {
entry-block:
%2 = icmp sgt i32 %1, 0
br i1 %2, label %join.lr.ph, label %while_exit
join.lr.ph: ; preds = %entry-block
%3 = sext i32 %1 to i64
br label %join
while_cond.while_exit_crit_edge: ; preds = %while_body
%indvars.iv.next.lcssa12 = phi i64 [ %indvars.iv.next, %while_body ]
%4 = trunc i64 %indvars.iv.next.lcssa12 to i32
br label %while_exit
join.while_exit_crit_edge: ; preds = %join
%indvars.iv.lcssa = phi i64 [ %indvars.iv, %join ]
%5 = trunc i64 %indvars.iv.lcssa to i32
br label %while_exit
while_exit: ; preds = %join.while_exit_crit_edge, %while_cond.while_exit_crit_edge, %entry-block
%n.0.lcssa = phi i32 [ %4, %while_cond.while_exit_crit_edge ], [ %5, %join.while_exit_crit_edge ], [ %1, %entry-block ]
ret i32 %n.0.lcssa
while_body: ; preds = %join
%6 = icmp sgt i64 %indvars.iv, 1
br i1 %6, label %join, label %while_cond.while_exit_crit_edge
join: ; preds = %join.lr.ph, %while_body
%indvars.iv = phi i64 [ %3, %join.lr.ph ], [ %indvars.iv.next, %while_body ]
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%7 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 %indvars.iv.next, i32 0
%8 = load i64* %7, align 8, !alias.scope !546, !noalias !549
%9 = icmp eq i64 %8, 0
br i1 %9, label %while_body, label %join.while_exit_crit_edge
}
; Function Attrs: cold noinline noreturn nounwind uwtable
define void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE() unnamed_addr #15 {
entry-block:
tail call void @llvm.trap()
unreachable
}
; Function Attrs: noreturn nounwind
declare void @llvm.trap() unnamed_addr #16
; Function Attrs: cold noinline uwtable
define void @_ZN2ll4dump20hf0398d5dba188e98HydE(%str_slice* noalias nocapture dereferenceable(16), %"ll::limb::Limb"*, i32) unnamed_addr #17 {
entry-block:
%output.i110 = alloca %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>", align 8
%__coerce_target.i111 = alloca { i8*, void (i8*)** }, align 8
%arg.i112 = alloca %"2.core::fmt::Arguments", align 8
%output.i = alloca %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>", align 8
%__coerce_target.i = alloca { i8*, void (i8*)** }, align 8
%arg.i = alloca %"2.core::fmt::Arguments", align 8
%n = alloca i32, align 4
%stdout = alloca %"1.std::io::stdio::Stdout", align 8
%stdout1 = alloca %"1.std::io::stdio::StdoutLock", align 8
%3 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%4 = alloca { i8*, i64 }, align 8
%.sroa.0285 = alloca { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }, align 8
%5 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%6 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%arg9 = alloca { i8*, i64 }, align 8
%.sroa.0 = alloca { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }, align 8
%7 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%8 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%arg23 = alloca { i8*, i64 }, align 8
%9 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%arg25 = alloca { i8*, i64 }, align 8
%10 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%arg28 = alloca { i8*, i64 }, align 8
%11 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%12 = bitcast i32* %n to i8*
call void @llvm.lifetime.start(i64 4, i8* %12)
store i32 %2, i32* %n, align 4
%13 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i8*
call void @llvm.lifetime.start(i64 8, i8* %13)
%14 = tail call i64 @_ZN2io5stdio6stdout20hb4a6bed83cd64382qSgE()
%15 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i64*
store i64 %14, i64* %15, align 8
%16 = bitcast %"1.std::io::stdio::StdoutLock"* %stdout1 to i8*
call void @llvm.lifetime.start(i64 16, i8* %16)
invoke void @_ZN2io5stdio6Stdout4lock20h6230e8c522cbeec45SgE(%"1.std::io::stdio::StdoutLock"* noalias nocapture sret dereferenceable(16) %stdout1, %"1.std::io::stdio::Stdout"* noalias readonly dereferenceable(8) %stdout)
to label %normal-return2 unwind label %unwind_ast_13066_
unwind_ast_13066_: ; preds = %entry-block
%17 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract = extractvalue { i8*, i32 } %17, 0
%.fca.1.extract = extractvalue { i8*, i32 } %17, 1
%18 = getelementptr inbounds %"1.std::io::stdio::Stdout"* %stdout, i64 0, i32 0
%19 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i8**
%20 = load i8** %19, align 8, !alias.scope !551
%magicptr.i.i.i59 = ptrtoint i8* %20 to i64
switch i64 %magicptr.i.i.i59, label %next-block.i.i.i60 [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63
i64 0, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63
]
next-block.i.i.i60: ; preds = %unwind_ast_13066_
%21 = bitcast i8* %20 to i64*
%22 = atomicrmw sub i64* %21, i64 1 release, !noalias !551
%23 = icmp eq i64 %22, 1
br i1 %23, label %next-block1.i.i.i61, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63
next-block1.i.i.i61: ; preds = %next-block.i.i.i60
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow21h17040988076615010400E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* noalias dereferenceable(8) %18)
to label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63 unwind label %unwind_custom_.i.i62
unwind_custom_.i.i62: ; preds = %next-block1.i.i.i61
%24 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %24
_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63: ; preds = %unwind_ast_13066_, %unwind_ast_13066_, %next-block.i.i.i60, %next-block1.i.i.i61
call void @llvm.lifetime.end(i64 8, i8* %13)
%.pre346 = bitcast %str_slice* %0 to i8*
br label %clean_custom_
clean_custom_: ; preds = %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63
%.pre-phi = phi i8* [ %27, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109 ], [ %27, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68 ], [ %.pre346, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63 ]
%.sroa.053.0 = phi i8* [ %.fca.0.extract50, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109 ], [ %.fca.0.extract46, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68 ], [ %.fca.0.extract, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63 ]
%.sroa.5.0 = phi i32 [ %.fca.1.extract52, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109 ], [ %.fca.1.extract48, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68 ], [ %.fca.1.extract, %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit63 ]
call void @llvm.lifetime.end(i64 4, i8* %12)
call void @llvm.lifetime.end(i64 16, i8* %.pre-phi)
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.053.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.5.0, 1
resume { i8*, i32 } %.fca.1.insert
normal-return2: ; preds = %entry-block
%25 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %25)
%26 = bitcast { i8*, i64 }* %4 to i8*
call void @llvm.lifetime.start(i64 16, i8* %26)
%27 = bitcast %str_slice* %0 to i8*
%28 = bitcast { i8*, i64 }* %4 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* %27, i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %3, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1, { i8*, i64 }* noalias nocapture dereferenceable(16) %4)
to label %normal-return5 unwind label %unwind_ast_13066_3
unwind_ast_13066_3: ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i212, %cond.i.i.i.i.i.i.i208, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i, %cond.i.i.i.i.i.i.i, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit87", %normal-return2
%29 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13066_3.body
unwind_ast_13066_3.body: ; preds = %.noexc, %unwind_ast_13066_3
%eh.lpad-body = phi { i8*, i32 } [ %29, %unwind_ast_13066_3 ], [ %88, %.noexc ]
%.fca.0.extract46 = extractvalue { i8*, i32 } %eh.lpad-body, 0
%.fca.1.extract48 = extractvalue { i8*, i32 } %eh.lpad-body, 1
%30 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 2
%31 = load i8* %30, align 1
%32 = icmp eq i8 %31, -44
br i1 %32, label %cond.i.i, label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit
cond.i.i: ; preds = %unwind_ast_13066_3.body
%33 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 0
%34 = load %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"** %33, align 8, !alias.scope !554, !nonnull !557
%35 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 1, i32 0
%36 = load i8* %35, align 8, !range !558, !alias.scope !559
%37 = icmp eq i8 %36, 0
br i1 %37, label %join.i.i.i.i, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i
join.i.i.i.i: ; preds = %cond.i.i
%38 = call zeroext i1 @_ZN2rt6unwind9panicking20hd406c1806cb00459vBwE()
br i1 %38, label %then-block-28942-.i.i.i.i, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i
then-block-28942-.i.i.i.i: ; preds = %join.i.i.i.i
%39 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %34, i64 0, i32 1, i32 0, i32 0, i32 0
store i8 1, i8* %39, align 1, !noalias !559
br label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i
_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i: ; preds = %then-block-28942-.i.i.i.i, %join.i.i.i.i, %cond.i.i
%40 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %34, i64 0, i32 0
%41 = load %"1.std::sys::mutex::ReentrantMutex"** %40, align 8, !noalias !554, !nonnull !557
call void @_ZN3sys5mutex14ReentrantMutex6unlock20h8dbd630e51296830R8tE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40) %41)
br label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit
_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit: ; preds = %unwind_ast_13066_3.body, %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i
call void @llvm.lifetime.end(i64 16, i8* %16)
%42 = getelementptr inbounds %"1.std::io::stdio::Stdout"* %stdout, i64 0, i32 0
%43 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i8**
%44 = load i8** %43, align 8, !alias.scope !562
%magicptr.i.i.i64 = ptrtoint i8* %44 to i64
switch i64 %magicptr.i.i.i64, label %next-block.i.i.i65 [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68
i64 0, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68
]
next-block.i.i.i65: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit
%45 = bitcast i8* %44 to i64*
%46 = atomicrmw sub i64* %45, i64 1 release, !noalias !562
%47 = icmp eq i64 %46, 1
br i1 %47, label %next-block1.i.i.i66, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68
next-block1.i.i.i66: ; preds = %next-block.i.i.i65
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow21h17040988076615010400E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* noalias dereferenceable(8) %42)
to label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68 unwind label %unwind_custom_.i.i67
unwind_custom_.i.i67: ; preds = %next-block1.i.i.i66
%48 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %48
_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit68: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit, %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit, %next-block.i.i.i65, %next-block1.i.i.i66
call void @llvm.lifetime.end(i64 8, i8* %13)
br label %clean_custom_
normal-return5: ; preds = %normal-return2
call void @llvm.lifetime.end(i64 16, i8* %26)
%49 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 0
%50 = load i64* %49, align 8, !range !565
%cond.i = icmp eq i64 %50, 1
br i1 %cond.i, label %enum-iter-variant-1.i, label %normal-return7
enum-iter-variant-1.i: ; preds = %normal-return5
%51 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 2
%52 = bitcast [2 x i64]* %51 to i8*
%53 = load i8* %52, align 8, !range !558
%cond.i.i.i = icmp eq i8 %53, 1
br i1 %cond.i.i.i, label %enum-iter-variant-1.i.i.i, label %normal-return7
enum-iter-variant-1.i.i.i: ; preds = %enum-iter-variant-1.i
%54 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 2, i64 1
%55 = bitcast i64* %54 to %"1.std::io::error::Custom"**
%56 = load %"1.std::io::error::Custom"** %55, align 8
%57 = icmp eq %"1.std::io::error::Custom"* %56, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %57, label %normal-return7, label %cond.i.i.i.i
cond.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i
%58 = getelementptr inbounds %"1.std::io::error::Custom"* %56, i64 0, i32 1, i32 0
%59 = load i8** %58, align 8
%60 = icmp eq i8* %59, inttoptr (i64 2097865012304223517 to i8*)
br i1 %60, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond.i.i.i.i.i.i
cond.i.i.i.i.i.i: ; preds = %cond.i.i.i.i
%61 = getelementptr inbounds %"1.std::io::error::Custom"* %56, i64 0, i32 1, i32 1
%62 = load void (i8*)*** %61, align 8
%63 = load void (i8*)** %62, align 8
call void %63(i8* %59)
%64 = bitcast void (i8*)*** %61 to i64**
%65 = load i64** %64, align 8
%66 = getelementptr inbounds i64* %65, i64 1
%67 = load i64* %66, align 8
%68 = icmp eq i64 %67, 0
br i1 %68, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond2.i.i.i.i.i.i
cond2.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i
%69 = getelementptr inbounds i64* %65, i64 2
%70 = load i64* %69, align 8
%71 = icmp ult i64 %70, 17
br i1 %71, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i
%72 = call i64 @llvm.cttz.i64(i64 %70, i1 false) #20
%73 = trunc i64 %72 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %73, %else-block.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i ]
call void @je_sdallocx(i8* %59, i64 %67, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, %cond.i.i.i.i.i.i, %cond.i.i.i.i
%74 = getelementptr inbounds %"1.std::io::error::Custom"* %56, i64 0, i32 0
call void @je_sdallocx(i8* %74, i64 24, i32 0)
br label %normal-return7
normal-return7: ; preds = %normal-return5, %enum-iter-variant-1.i, %enum-iter-variant-1.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %25)
%.sroa.0285.0..sroa_cast303 = bitcast { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0285 to i8*
call void @llvm.lifetime.start(i64 32, i8* %.sroa.0285.0..sroa_cast303)
%75 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i8*
call void @llvm.lifetime.start(i64 16, i8* %75)
%76 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0
%77 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i32*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num16i32.fmt..Display3fmt20hc5c1915ea86b291dW9LE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %77, align 8, !alias.scope !566, !noalias !569
%78 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i32**
store i32* %n, i32** %78, align 8, !alias.scope !566, !noalias !569
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.0285.0..sroa_cast303, i8* bitcast ({ %str_slice*, i64 }* @_ZN2ll4dump15__STATIC_FMTSTR20h988053cd86d698a8mzdE to i8*), i64 16, i32 8, i1 false)
%.sroa.0285.16..sroa_idx307 = getelementptr inbounds { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0285, i64 0, i32 1
%.sroa.0285.16..sroa_cast308 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %.sroa.0285.16..sroa_idx307 to i8*
call void @llvm.memset.p0i8.i64(i8* %.sroa.0285.16..sroa_cast308, i8 0, i64 16, i32 8, i1 false)
%79 = bitcast %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i to i8*
call void @llvm.lifetime.start(i64 32, i8* %79), !noalias !571
%80 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 0
store %"1.std::io::stdio::StdoutLock"* %stdout1, %"1.std::io::stdio::StdoutLock"** %80, align 8, !noalias !571
%81 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1
%82 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %81 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %82, i8* bitcast ({ i64, {}, [16 x i8] }* @const9023 to i8*), i64 24, i32 8, i1 false), !noalias !576
%83 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"**
store %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"** %83, align 8, !noalias !571
%84 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target.i, i64 0, i32 1
store void (i8*)** bitcast ({ void (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*)*, i64, i64, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %str_slice*)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, i32)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %"2.core::fmt::Arguments"*)* }* @vtable9342 to void (i8*)**), void (i8*)*** %84, align 8, !noalias !571
%85 = bitcast %"2.core::fmt::Arguments"* %arg.i to i8*
call void @llvm.lifetime.start(i64 48, i8* %85), !noalias !571
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %85, i8* %.sroa.0285.0..sroa_cast303, i64 32, i32 8, i1 false)
%.sroa.7293.0..sroa_idx295 = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %76, %"2.core::fmt::ArgumentV1"** %.sroa.7293.0..sroa_idx295, align 8
%.sroa.8298.0..sroa_idx300 = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i, i64 0, i32 2, i32 1
store i64 1, i64* %.sroa.8298.0..sroa_idx300, align 8
%86 = invoke i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target.i, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg.i)
to label %normal-return.i unwind label %unwind_ast_28985_.i, !noalias !576
normal-return.i: ; preds = %normal-return7
call void @llvm.lifetime.end(i64 48, i8* %85), !noalias !571
%87 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to i8*
call void @llvm.lifetime.end(i64 16, i8* %87), !noalias !571
%cond.i69 = icmp eq i8 %86, 0
br i1 %cond.i69, label %join.i, label %join.i.thread
unwind_ast_28985_.i: ; preds = %normal-return7
%88 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%89 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 0
%90 = load i64* %89, align 8, !range !565
%cond.i.i203 = icmp eq i64 %90, 1
br i1 %cond.i.i203, label %enum-iter-variant-1.i.i205, label %.noexc
enum-iter-variant-1.i.i205: ; preds = %unwind_ast_28985_.i
%91 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2
%92 = bitcast [2 x i64]* %91 to i8*
%93 = load i8* %92, align 8, !range !558
%cond.i.i.i.i204 = icmp eq i8 %93, 1
br i1 %cond.i.i.i.i204, label %enum-iter-variant-1.i.i.i.i206, label %.noexc
enum-iter-variant-1.i.i.i.i206: ; preds = %enum-iter-variant-1.i.i205
%94 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2, i64 1
%95 = bitcast i64* %94 to %"1.std::io::error::Custom"**
%96 = load %"1.std::io::error::Custom"** %95, align 8
%97 = icmp eq %"1.std::io::error::Custom"* %96, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %97, label %.noexc, label %cond.i.i.i.i.i207
cond.i.i.i.i.i207: ; preds = %enum-iter-variant-1.i.i.i.i206
%98 = getelementptr inbounds %"1.std::io::error::Custom"* %96, i64 0, i32 1, i32 0
%99 = load i8** %98, align 8
%100 = icmp eq i8* %99, inttoptr (i64 2097865012304223517 to i8*)
br i1 %100, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213, label %cond.i.i.i.i.i.i.i208
cond.i.i.i.i.i.i.i208: ; preds = %cond.i.i.i.i.i207
%101 = getelementptr inbounds %"1.std::io::error::Custom"* %96, i64 0, i32 1, i32 1
%102 = load void (i8*)*** %101, align 8
%103 = load void (i8*)** %102, align 8
invoke void %103(i8* %99)
to label %.noexc214 unwind label %unwind_ast_13066_3
.noexc214: ; preds = %cond.i.i.i.i.i.i.i208
%104 = bitcast void (i8*)*** %101 to i64**
%105 = load i64** %104, align 8
%106 = getelementptr inbounds i64* %105, i64 1
%107 = load i64* %106, align 8
%108 = icmp eq i64 %107, 0
br i1 %108, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213, label %cond2.i.i.i.i.i.i.i209
cond2.i.i.i.i.i.i.i209: ; preds = %.noexc214
%109 = getelementptr inbounds i64* %105, i64 2
%110 = load i64* %109, align 8
%111 = icmp ult i64 %110, 17
br i1 %111, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i212, label %else-block.i.i.i.i.i.i.i.i.i.i.i210
else-block.i.i.i.i.i.i.i.i.i.i.i210: ; preds = %cond2.i.i.i.i.i.i.i209
%112 = call i64 @llvm.cttz.i64(i64 %110, i1 false) #20
%113 = trunc i64 %112 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i212
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i212: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i.i210, %cond2.i.i.i.i.i.i.i209
%sret_slot.0.i.i.i.i.i.i.i.i.i.i.i211 = phi i32 [ %113, %else-block.i.i.i.i.i.i.i.i.i.i.i210 ], [ 0, %cond2.i.i.i.i.i.i.i209 ]
invoke void @je_sdallocx(i8* %99, i64 %107, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i.i211)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213 unwind label %unwind_ast_13066_3
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i212, %.noexc214, %cond.i.i.i.i.i207
%114 = getelementptr inbounds %"1.std::io::error::Custom"* %96, i64 0, i32 0
invoke void @je_sdallocx(i8* %114, i64 24, i32 0)
to label %.noexc unwind label %unwind_ast_13066_3
.noexc: ; preds = %enum-iter-variant-1.i.i.i.i206, %enum-iter-variant-1.i.i205, %unwind_ast_28985_.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i213
call void @llvm.lifetime.end(i64 32, i8* %79), !noalias !571
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0285.0..sroa_cast303)
br label %unwind_ast_13066_3.body
join.i.thread: ; preds = %normal-return.i
%.sroa.0312.0..sroa_idx = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 0
%.sroa.0312.0.copyload = load i64* %.sroa.0312.0..sroa_idx, align 8
%.sroa.5315.0..sroa_idx = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2
%.sroa.5315.0..sroa_cast = bitcast [2 x i64]* %.sroa.5315.0..sroa_idx to i8*
%.sroa.5315.0.copyload = load i8* %.sroa.5315.0..sroa_cast, align 8
%.sroa.6321.0..sroa_idx323 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2, i64 1
%.sroa.6321.0..sroa_cast324 = bitcast i64* %.sroa.6321.0..sroa_idx323 to %"1.std::io::error::Custom"**
%.sroa.6321.0.copyload = load %"1.std::io::error::Custom"** %.sroa.6321.0..sroa_cast324, align 8
call void @llvm.memset.p0i8.i64(i8* %82, i8 29, i64 24, i32 8, i1 false), !noalias !571
br label %normal-return8
join.i: ; preds = %normal-return.i
%.sroa.6321.0.copyload325 = load %"1.std::io::error::Custom"** bitcast (i8* getelementptr inbounds ({ i64, {}, [16 x i8] }* @const9023, i64 0, i32 2, i64 8) to %"1.std::io::error::Custom"**), align 8
%.phi.trans.insert = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 0
%.pre = load i64* %.phi.trans.insert, align 8
%cond.i.i71 = icmp eq i64 %.pre, 1
br i1 %cond.i.i71, label %enum-iter-variant-1.i.i, label %normal-return8
enum-iter-variant-1.i.i: ; preds = %join.i
%115 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2
%116 = bitcast [2 x i64]* %115 to i8*
%117 = load i8* %116, align 8, !range !558
%cond.i.i.i.i72 = icmp eq i8 %117, 1
br i1 %cond.i.i.i.i72, label %enum-iter-variant-1.i.i.i.i, label %normal-return8
enum-iter-variant-1.i.i.i.i: ; preds = %enum-iter-variant-1.i.i
%118 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i, i64 0, i32 1, i32 2, i64 1
%119 = bitcast i64* %118 to %"1.std::io::error::Custom"**
%120 = load %"1.std::io::error::Custom"** %119, align 8
%121 = icmp eq %"1.std::io::error::Custom"* %120, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %121, label %normal-return8, label %cond.i.i.i.i.i
cond.i.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i.i
%122 = getelementptr inbounds %"1.std::io::error::Custom"* %120, i64 0, i32 1, i32 0
%123 = load i8** %122, align 8
%124 = icmp eq i8* %123, inttoptr (i64 2097865012304223517 to i8*)
br i1 %124, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i, label %cond.i.i.i.i.i.i.i
cond.i.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i
%125 = getelementptr inbounds %"1.std::io::error::Custom"* %120, i64 0, i32 1, i32 1
%126 = load void (i8*)*** %125, align 8
%127 = load void (i8*)** %126, align 8
invoke void %127(i8* %123)
to label %.noexc73 unwind label %unwind_ast_13066_3
.noexc73: ; preds = %cond.i.i.i.i.i.i.i
%128 = bitcast void (i8*)*** %125 to i64**
%129 = load i64** %128, align 8
%130 = getelementptr inbounds i64* %129, i64 1
%131 = load i64* %130, align 8
%132 = icmp eq i64 %131, 0
br i1 %132, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i, label %cond2.i.i.i.i.i.i.i
cond2.i.i.i.i.i.i.i: ; preds = %.noexc73
%133 = getelementptr inbounds i64* %129, i64 2
%134 = load i64* %133, align 8
%135 = icmp ult i64 %134, 17
br i1 %135, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i.i
%136 = call i64 @llvm.cttz.i64(i64 %134, i1 false) #20
%137 = trunc i64 %136 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %137, %else-block.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i.i ]
invoke void @je_sdallocx(i8* %123, i64 %131, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i.i)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i unwind label %unwind_ast_13066_3
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i, %.noexc73, %cond.i.i.i.i.i
%138 = getelementptr inbounds %"1.std::io::error::Custom"* %120, i64 0, i32 0
invoke void @je_sdallocx(i8* %138, i64 24, i32 0)
to label %normal-return8 unwind label %unwind_ast_13066_3
normal-return8: ; preds = %join.i.thread, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i, %join.i, %enum-iter-variant-1.i.i, %enum-iter-variant-1.i.i.i.i
%.sroa.0312.0.333350 = phi i64 [ %.sroa.0312.0.copyload, %join.i.thread ], [ 0, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i ], [ 0, %join.i ], [ 0, %enum-iter-variant-1.i.i ], [ 0, %enum-iter-variant-1.i.i.i.i ]
%.sroa.5315.0.copyload334349 = phi i8 [ %.sroa.5315.0.copyload, %join.i.thread ], [ undef, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i ], [ undef, %join.i ], [ undef, %enum-iter-variant-1.i.i ], [ undef, %enum-iter-variant-1.i.i.i.i ]
%.sroa.6321.0.copyload335348 = phi %"1.std::io::error::Custom"* [ %.sroa.6321.0.copyload, %join.i.thread ], [ %.sroa.6321.0.copyload325, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i ], [ %.sroa.6321.0.copyload325, %join.i ], [ %.sroa.6321.0.copyload325, %enum-iter-variant-1.i.i ], [ %.sroa.6321.0.copyload325, %enum-iter-variant-1.i.i.i.i ]
call void @llvm.lifetime.end(i64 32, i8* %79), !noalias !571
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0285.0..sroa_cast303)
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0285.0..sroa_cast303)
%notlhs = icmp ne i64 %.sroa.0312.0.333350, 1
%notrhs = icmp ne i8 %.sroa.5315.0.copyload334349, 1
%or.cond.not = or i1 %notrhs, %notlhs
%139 = icmp eq %"1.std::io::error::Custom"* %.sroa.6321.0.copyload335348, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
%or.cond336 = or i1 %139, %or.cond.not
br i1 %or.cond336, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit87", label %cond.i.i.i.i80
cond.i.i.i.i80: ; preds = %normal-return8
%140 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6321.0.copyload335348, i64 0, i32 1, i32 0
%141 = load i8** %140, align 8
%142 = icmp eq i8* %141, inttoptr (i64 2097865012304223517 to i8*)
br i1 %142, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i86, label %cond.i.i.i.i.i.i81
cond.i.i.i.i.i.i81: ; preds = %cond.i.i.i.i80
%143 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6321.0.copyload335348, i64 0, i32 1, i32 1
%144 = load void (i8*)*** %143, align 8
%145 = load void (i8*)** %144, align 8
call void %145(i8* %141)
%146 = bitcast void (i8*)*** %143 to i64**
%147 = load i64** %146, align 8
%148 = getelementptr inbounds i64* %147, i64 1
%149 = load i64* %148, align 8
%150 = icmp eq i64 %149, 0
br i1 %150, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i86, label %cond2.i.i.i.i.i.i82
cond2.i.i.i.i.i.i82: ; preds = %cond.i.i.i.i.i.i81
%151 = getelementptr inbounds i64* %147, i64 2
%152 = load i64* %151, align 8
%153 = icmp ult i64 %152, 17
br i1 %153, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i85, label %else-block.i.i.i.i.i.i.i.i.i.i83
else-block.i.i.i.i.i.i.i.i.i.i83: ; preds = %cond2.i.i.i.i.i.i82
%154 = call i64 @llvm.cttz.i64(i64 %152, i1 false) #20
%155 = trunc i64 %154 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i85
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i85: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i83, %cond2.i.i.i.i.i.i82
%sret_slot.0.i.i.i.i.i.i.i.i.i.i84 = phi i32 [ %155, %else-block.i.i.i.i.i.i.i.i.i.i83 ], [ 0, %cond2.i.i.i.i.i.i82 ]
call void @je_sdallocx(i8* %141, i64 %149, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i84)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i86
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i86: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i85, %cond.i.i.i.i.i.i81, %cond.i.i.i.i80
%156 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6321.0.copyload335348, i64 0, i32 0
call void @je_sdallocx(i8* %156, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit87"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit87": ; preds = %normal-return8, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i86
call void @llvm.lifetime.end(i64 16, i8* %75)
%157 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %6 to i8*
call void @llvm.lifetime.start(i64 24, i8* %157)
%158 = bitcast { i8*, i64 }* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %158)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %158, i8* bitcast ({ i8*, i64 }* @const9349 to i8*), i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %6, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_13066_3
normal-return10: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit87"
call void @llvm.lifetime.end(i64 16, i8* %158)
%159 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %6, i64 0, i32 0
%160 = load i64* %159, align 8, !range !565
%cond.i88 = icmp eq i64 %160, 1
br i1 %cond.i88, label %enum-iter-variant-1.i90, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99"
enum-iter-variant-1.i90: ; preds = %normal-return10
%161 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %6, i64 0, i32 2
%162 = bitcast [2 x i64]* %161 to i8*
%163 = load i8* %162, align 8, !range !558
%cond.i.i.i89 = icmp eq i8 %163, 1
br i1 %cond.i.i.i89, label %enum-iter-variant-1.i.i.i91, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99"
enum-iter-variant-1.i.i.i91: ; preds = %enum-iter-variant-1.i90
%164 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %6, i64 0, i32 2, i64 1
%165 = bitcast i64* %164 to %"1.std::io::error::Custom"**
%166 = load %"1.std::io::error::Custom"** %165, align 8
%167 = icmp eq %"1.std::io::error::Custom"* %166, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %167, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99", label %cond.i.i.i.i92
cond.i.i.i.i92: ; preds = %enum-iter-variant-1.i.i.i91
%168 = getelementptr inbounds %"1.std::io::error::Custom"* %166, i64 0, i32 1, i32 0
%169 = load i8** %168, align 8
%170 = icmp eq i8* %169, inttoptr (i64 2097865012304223517 to i8*)
br i1 %170, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i98, label %cond.i.i.i.i.i.i93
cond.i.i.i.i.i.i93: ; preds = %cond.i.i.i.i92
%171 = getelementptr inbounds %"1.std::io::error::Custom"* %166, i64 0, i32 1, i32 1
%172 = load void (i8*)*** %171, align 8
%173 = load void (i8*)** %172, align 8
call void %173(i8* %169)
%174 = bitcast void (i8*)*** %171 to i64**
%175 = load i64** %174, align 8
%176 = getelementptr inbounds i64* %175, i64 1
%177 = load i64* %176, align 8
%178 = icmp eq i64 %177, 0
br i1 %178, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i98, label %cond2.i.i.i.i.i.i94
cond2.i.i.i.i.i.i94: ; preds = %cond.i.i.i.i.i.i93
%179 = getelementptr inbounds i64* %175, i64 2
%180 = load i64* %179, align 8
%181 = icmp ult i64 %180, 17
br i1 %181, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i97, label %else-block.i.i.i.i.i.i.i.i.i.i95
else-block.i.i.i.i.i.i.i.i.i.i95: ; preds = %cond2.i.i.i.i.i.i94
%182 = call i64 @llvm.cttz.i64(i64 %180, i1 false) #20
%183 = trunc i64 %182 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i97
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i97: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i95, %cond2.i.i.i.i.i.i94
%sret_slot.0.i.i.i.i.i.i.i.i.i.i96 = phi i32 [ %183, %else-block.i.i.i.i.i.i.i.i.i.i95 ], [ 0, %cond2.i.i.i.i.i.i94 ]
call void @je_sdallocx(i8* %169, i64 %177, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i96)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i98
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i98: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i97, %cond.i.i.i.i.i.i93, %cond.i.i.i.i92
%184 = getelementptr inbounds %"1.std::io::error::Custom"* %166, i64 0, i32 0
call void @je_sdallocx(i8* %184, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99": ; preds = %normal-return10, %enum-iter-variant-1.i90, %enum-iter-variant-1.i.i.i91, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i98
call void @llvm.lifetime.end(i64 24, i8* %157)
%185 = load i32* %n, align 4
%186 = icmp sgt i32 %185, 0
br i1 %186, label %normal-return20.lr.ph, label %while_exit
normal-return20.lr.ph: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99"
%.sroa.0.0..sroa_cast257 = bitcast { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0 to i8*
%187 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %7 to i8*
%188 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 0
%189 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 0, i32 1
%190 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %7 to i64**
%.sroa.0.16..sroa_idx = getelementptr inbounds { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0, i64 0, i32 1
%.sroa.0.16..sroa_cast248 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %.sroa.0.16..sroa_idx to i8*
%191 = bitcast %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110 to i8*
%192 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, i64 0, i32 0
%193 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, i64 0, i32 1
%194 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %193 to i8*
%195 = bitcast { i8*, void (i8*)** }* %__coerce_target.i111 to %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"**
%196 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target.i111, i64 0, i32 1
%197 = bitcast %"2.core::fmt::Arguments"* %arg.i112 to i8*
%.sroa.7.0..sroa_idx250 = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i112, i64 0, i32 2, i32 0
%.sroa.8.0..sroa_idx254 = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i112, i64 0, i32 2, i32 1
%198 = bitcast { i8*, void (i8*)** }* %__coerce_target.i111 to i8*
%199 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, i64 0, i32 1, i32 0
%200 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, i64 0, i32 1, i32 2
%201 = bitcast [2 x i64]* %200 to i8*
%202 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, i64 0, i32 1, i32 2, i64 1
%203 = bitcast i64* %202 to %"1.std::io::error::Custom"**
%204 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %9 to i8*
%205 = bitcast { i8*, i64 }* %arg25 to i8*
%206 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %9, i64 0, i32 0
%207 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %9, i64 0, i32 2
%208 = bitcast [2 x i64]* %207 to i8*
%209 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %9, i64 0, i32 2, i64 1
%210 = bitcast i64* %209 to %"1.std::io::error::Custom"**
%211 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %8 to i8*
%212 = bitcast { i8*, i64 }* %arg23 to i8*
%213 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %8, i64 0, i32 0
%214 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %8, i64 0, i32 2
%215 = bitcast [2 x i64]* %214 to i8*
%216 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %8, i64 0, i32 2, i64 1
%217 = bitcast i64* %216 to %"1.std::io::error::Custom"**
br label %normal-return20
while_exit.loopexit: ; preds = %while_cond.backedge
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit99"
%218 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %10 to i8*
call void @llvm.lifetime.start(i64 24, i8* %218)
%219 = bitcast { i8*, i64 }* %arg28 to i8*
call void @llvm.lifetime.start(i64 16, i8* %219)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %219, i8* bitcast ({ i8*, i64 }* @const9367 to i8*), i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %10, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg28)
to label %normal-return29 unwind label %unwind_ast_13066_16.nonloopexit
unwind_ast_13066_16.loopexit: ; preds = %then-block-13202-, %then-block-13218-, %cond.i.i.i.i.i.i.i128, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i132, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13066_16.body
unwind_ast_13066_16.nonloopexit: ; preds = %while_exit, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185", %cond.i.i.i.i.i.i.i223, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i227, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13066_16.body
unwind_ast_13066_16.body: ; preds = %unwind_ast_13066_16.loopexit, %unwind_ast_13066_16.nonloopexit, %.noexc119
%eh.lpad-body120 = phi { i8*, i32 } [ %241, %.noexc119 ], [ %lpad.loopexit, %unwind_ast_13066_16.loopexit ], [ %lpad.nonloopexit, %unwind_ast_13066_16.nonloopexit ]
%.fca.0.extract50 = extractvalue { i8*, i32 } %eh.lpad-body120, 0
%.fca.1.extract52 = extractvalue { i8*, i32 } %eh.lpad-body120, 1
%220 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 2
%221 = load i8* %220, align 1
%222 = icmp eq i8 %221, -44
br i1 %222, label %cond.i.i100, label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104
cond.i.i100: ; preds = %unwind_ast_13066_16.body
%223 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 0
%224 = load %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"** %223, align 8, !alias.scope !577, !nonnull !557
%225 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 1, i32 0
%226 = load i8* %225, align 8, !range !558, !alias.scope !580
%227 = icmp eq i8 %226, 0
br i1 %227, label %join.i.i.i.i101, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i103
join.i.i.i.i101: ; preds = %cond.i.i100
%228 = call zeroext i1 @_ZN2rt6unwind9panicking20hd406c1806cb00459vBwE()
br i1 %228, label %then-block-28942-.i.i.i.i102, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i103
then-block-28942-.i.i.i.i102: ; preds = %join.i.i.i.i101
%229 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %224, i64 0, i32 1, i32 0, i32 0, i32 0
store i8 1, i8* %229, align 1, !noalias !580
br label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i103
_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i103: ; preds = %then-block-28942-.i.i.i.i102, %join.i.i.i.i101, %cond.i.i100
%230 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %224, i64 0, i32 0
%231 = load %"1.std::sys::mutex::ReentrantMutex"** %230, align 8, !noalias !577, !nonnull !557
call void @_ZN3sys5mutex14ReentrantMutex6unlock20h8dbd630e51296830R8tE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40) %231)
br label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104
_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104: ; preds = %unwind_ast_13066_16.body, %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i103
call void @llvm.lifetime.end(i64 16, i8* %16)
%232 = getelementptr inbounds %"1.std::io::stdio::Stdout"* %stdout, i64 0, i32 0
%233 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i8**
%234 = load i8** %233, align 8, !alias.scope !583
%magicptr.i.i.i105 = ptrtoint i8* %234 to i64
switch i64 %magicptr.i.i.i105, label %next-block.i.i.i106 [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109
i64 0, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109
]
next-block.i.i.i106: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104
%235 = bitcast i8* %234 to i64*
%236 = atomicrmw sub i64* %235, i64 1 release, !noalias !583
%237 = icmp eq i64 %236, 1
br i1 %237, label %next-block1.i.i.i107, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109
next-block1.i.i.i107: ; preds = %next-block.i.i.i106
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow21h17040988076615010400E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* noalias dereferenceable(8) %232)
to label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109 unwind label %unwind_custom_.i.i108
unwind_custom_.i.i108: ; preds = %next-block1.i.i.i107
%238 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %238
_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit109: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104, %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit104, %next-block.i.i.i106, %next-block1.i.i.i107
call void @llvm.lifetime.end(i64 8, i8* %13)
br label %clean_custom_
normal-return20: ; preds = %normal-return20.lr.ph, %while_cond.backedge
%p.0344 = phi %"ll::limb::Limb"* [ %1, %normal-return20.lr.ph ], [ %301, %while_cond.backedge ]
%i.0343 = phi i32 [ 0, %normal-return20.lr.ph ], [ %326, %while_cond.backedge ]
call void @llvm.lifetime.start(i64 32, i8* %.sroa.0.0..sroa_cast257)
call void @llvm.lifetime.start(i64 16, i8* %187)
%239 = getelementptr inbounds %"ll::limb::Limb"* %p.0344, i64 0, i32 0
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num17u64.fmt..UpperHex3fmt20h68270651c4a1219d4jME to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %189, align 8, !alias.scope !586, !noalias !589
store i64* %239, i64** %190, align 8, !alias.scope !586, !noalias !589
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.0.0..sroa_cast257, i8* bitcast ({ %str_slice*, i64 }* @_ZN2ll4dump15__STATIC_FMTSTR20h988053cd86d698a86zdE to i8*), i64 16, i32 8, i1 false)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.0.16..sroa_cast248, i8* bitcast ({ %"2.core::fmt::rt::v1::Argument"*, i64 }* @_ZN2ll4dump16__STATIC_FMTARGS20h1e581147c76c83c4zAdE to i8*), i64 16, i32 8, i1 false)
call void @llvm.lifetime.start(i64 32, i8* %191), !noalias !591
store %"1.std::io::stdio::StdoutLock"* %stdout1, %"1.std::io::stdio::StdoutLock"** %192, align 8, !noalias !591
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %194, i8* bitcast ({ i64, {}, [16 x i8] }* @const9023 to i8*), i64 24, i32 8, i1 false), !noalias !596
store %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %output.i110, %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"** %195, align 8, !noalias !591
store void (i8*)** bitcast ({ void (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*)*, i64, i64, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %str_slice*)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, i32)*, i8 (%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"*, %"2.core::fmt::Arguments"*)* }* @vtable9342 to void (i8*)**), void (i8*)*** %196, align 8, !noalias !591
call void @llvm.lifetime.start(i64 48, i8* %197), !noalias !591
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %197, i8* %.sroa.0.0..sroa_cast257, i64 32, i32 8, i1 false)
store %"2.core::fmt::ArgumentV1"* %188, %"2.core::fmt::ArgumentV1"** %.sroa.7.0..sroa_idx250, align 8
store i64 1, i64* %.sroa.8.0..sroa_idx254, align 8
%240 = invoke i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target.i111, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg.i112)
to label %normal-return.i114 unwind label %unwind_ast_28985_.i115, !noalias !596
normal-return.i114: ; preds = %normal-return20
call void @llvm.lifetime.end(i64 48, i8* %197), !noalias !591
call void @llvm.lifetime.end(i64 16, i8* %198), !noalias !591
%cond.i113 = icmp eq i8 %240, 0
br i1 %cond.i113, label %join.i118, label %join.i118.thread
unwind_ast_28985_.i115: ; preds = %normal-return20
%241 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%242 = load i64* %199, align 8, !range !565
%cond.i.i218 = icmp eq i64 %242, 1
%243 = load i8* %201, align 8
%cond.i.i.i.i219 = icmp eq i8 %243, 1
%or.cond = and i1 %cond.i.i218, %cond.i.i.i.i219
br i1 %or.cond, label %enum-iter-variant-1.i.i.i.i221, label %.noexc119
enum-iter-variant-1.i.i.i.i221: ; preds = %unwind_ast_28985_.i115
%244 = load %"1.std::io::error::Custom"** %203, align 8
%245 = icmp eq %"1.std::io::error::Custom"* %244, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %245, label %.noexc119, label %cond.i.i.i.i.i222
cond.i.i.i.i.i222: ; preds = %enum-iter-variant-1.i.i.i.i221
%246 = getelementptr inbounds %"1.std::io::error::Custom"* %244, i64 0, i32 1, i32 0
%247 = load i8** %246, align 8
%248 = icmp eq i8* %247, inttoptr (i64 2097865012304223517 to i8*)
br i1 %248, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228, label %cond.i.i.i.i.i.i.i223
cond.i.i.i.i.i.i.i223: ; preds = %cond.i.i.i.i.i222
%249 = getelementptr inbounds %"1.std::io::error::Custom"* %244, i64 0, i32 1, i32 1
%250 = load void (i8*)*** %249, align 8
%251 = load void (i8*)** %250, align 8
invoke void %251(i8* %247)
to label %.noexc229 unwind label %unwind_ast_13066_16.nonloopexit
.noexc229: ; preds = %cond.i.i.i.i.i.i.i223
%252 = bitcast void (i8*)*** %249 to i64**
%253 = load i64** %252, align 8
%254 = getelementptr inbounds i64* %253, i64 1
%255 = load i64* %254, align 8
%256 = icmp eq i64 %255, 0
br i1 %256, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228, label %cond2.i.i.i.i.i.i.i224
cond2.i.i.i.i.i.i.i224: ; preds = %.noexc229
%257 = getelementptr inbounds i64* %253, i64 2
%258 = load i64* %257, align 8
%259 = icmp ult i64 %258, 17
br i1 %259, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i227, label %else-block.i.i.i.i.i.i.i.i.i.i.i225
else-block.i.i.i.i.i.i.i.i.i.i.i225: ; preds = %cond2.i.i.i.i.i.i.i224
%260 = call i64 @llvm.cttz.i64(i64 %258, i1 false) #20
%261 = trunc i64 %260 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i227
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i227: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i.i225, %cond2.i.i.i.i.i.i.i224
%sret_slot.0.i.i.i.i.i.i.i.i.i.i.i226 = phi i32 [ %261, %else-block.i.i.i.i.i.i.i.i.i.i.i225 ], [ 0, %cond2.i.i.i.i.i.i.i224 ]
invoke void @je_sdallocx(i8* %247, i64 %255, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i.i226)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228 unwind label %unwind_ast_13066_16.nonloopexit
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i227, %.noexc229, %cond.i.i.i.i.i222
%262 = getelementptr inbounds %"1.std::io::error::Custom"* %244, i64 0, i32 0
invoke void @je_sdallocx(i8* %262, i64 24, i32 0)
to label %.noexc119 unwind label %unwind_ast_13066_16.nonloopexit
.noexc119: ; preds = %enum-iter-variant-1.i.i.i.i221, %unwind_ast_28985_.i115, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i228
call void @llvm.lifetime.end(i64 32, i8* %191), !noalias !591
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0.0..sroa_cast257)
br label %unwind_ast_13066_16.body
join.i118.thread: ; preds = %normal-return.i114
%.sroa.0266.0.copyload = load i64* %199, align 8
%.sroa.5.0.copyload = load i8* %201, align 8
%.sroa.6273.0.copyload = load %"1.std::io::error::Custom"** %203, align 8
call void @llvm.memset.p0i8.i64(i8* %194, i8 29, i64 24, i32 8, i1 false), !noalias !591
br label %normal-return21
join.i118: ; preds = %normal-return.i114
%.sroa.6273.0.copyload277 = load %"1.std::io::error::Custom"** bitcast (i8* getelementptr inbounds ({ i64, {}, [16 x i8] }* @const9023, i64 0, i32 2, i64 8) to %"1.std::io::error::Custom"**), align 8
%.pre345 = load i64* %199, align 8
%cond.i.i123 = icmp eq i64 %.pre345, 1
%263 = load i8* %201, align 8
%cond.i.i.i.i124 = icmp eq i8 %263, 1
%or.cond355 = and i1 %cond.i.i123, %cond.i.i.i.i124
br i1 %or.cond355, label %enum-iter-variant-1.i.i.i.i126, label %normal-return21
enum-iter-variant-1.i.i.i.i126: ; preds = %join.i118
%264 = load %"1.std::io::error::Custom"** %203, align 8
%265 = icmp eq %"1.std::io::error::Custom"* %264, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %265, label %normal-return21, label %cond.i.i.i.i.i127
cond.i.i.i.i.i127: ; preds = %enum-iter-variant-1.i.i.i.i126
%266 = getelementptr inbounds %"1.std::io::error::Custom"* %264, i64 0, i32 1, i32 0
%267 = load i8** %266, align 8
%268 = icmp eq i8* %267, inttoptr (i64 2097865012304223517 to i8*)
br i1 %268, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133, label %cond.i.i.i.i.i.i.i128
cond.i.i.i.i.i.i.i128: ; preds = %cond.i.i.i.i.i127
%269 = getelementptr inbounds %"1.std::io::error::Custom"* %264, i64 0, i32 1, i32 1
%270 = load void (i8*)*** %269, align 8
%271 = load void (i8*)** %270, align 8
invoke void %271(i8* %267)
to label %.noexc134 unwind label %unwind_ast_13066_16.loopexit
.noexc134: ; preds = %cond.i.i.i.i.i.i.i128
%272 = bitcast void (i8*)*** %269 to i64**
%273 = load i64** %272, align 8
%274 = getelementptr inbounds i64* %273, i64 1
%275 = load i64* %274, align 8
%276 = icmp eq i64 %275, 0
br i1 %276, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133, label %cond2.i.i.i.i.i.i.i129
cond2.i.i.i.i.i.i.i129: ; preds = %.noexc134
%277 = getelementptr inbounds i64* %273, i64 2
%278 = load i64* %277, align 8
%279 = icmp ult i64 %278, 17
br i1 %279, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i132, label %else-block.i.i.i.i.i.i.i.i.i.i.i130
else-block.i.i.i.i.i.i.i.i.i.i.i130: ; preds = %cond2.i.i.i.i.i.i.i129
%280 = call i64 @llvm.cttz.i64(i64 %278, i1 false) #20
%281 = trunc i64 %280 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i132
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i132: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i.i130, %cond2.i.i.i.i.i.i.i129
%sret_slot.0.i.i.i.i.i.i.i.i.i.i.i131 = phi i32 [ %281, %else-block.i.i.i.i.i.i.i.i.i.i.i130 ], [ 0, %cond2.i.i.i.i.i.i.i129 ]
invoke void @je_sdallocx(i8* %267, i64 %275, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i.i131)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133 unwind label %unwind_ast_13066_16.loopexit
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i132, %.noexc134, %cond.i.i.i.i.i127
%282 = getelementptr inbounds %"1.std::io::error::Custom"* %264, i64 0, i32 0
invoke void @je_sdallocx(i8* %282, i64 24, i32 0)
to label %normal-return21 unwind label %unwind_ast_13066_16.loopexit
normal-return21: ; preds = %join.i118.thread, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133, %join.i118, %enum-iter-variant-1.i.i.i.i126
%.sroa.0266.0.330354 = phi i64 [ %.sroa.0266.0.copyload, %join.i118.thread ], [ 0, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133 ], [ 0, %join.i118 ], [ 0, %enum-iter-variant-1.i.i.i.i126 ]
%.sroa.5.0.copyload331353 = phi i8 [ %.sroa.5.0.copyload, %join.i118.thread ], [ undef, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133 ], [ undef, %join.i118 ], [ undef, %enum-iter-variant-1.i.i.i.i126 ]
%.sroa.6273.0.copyload332352 = phi %"1.std::io::error::Custom"* [ %.sroa.6273.0.copyload, %join.i118.thread ], [ %.sroa.6273.0.copyload277, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i133 ], [ %.sroa.6273.0.copyload277, %join.i118 ], [ %.sroa.6273.0.copyload277, %enum-iter-variant-1.i.i.i.i126 ]
call void @llvm.lifetime.end(i64 32, i8* %191), !noalias !591
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0.0..sroa_cast257)
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0.0..sroa_cast257)
%notlhs339 = icmp ne i64 %.sroa.0266.0.330354, 1
%notrhs340 = icmp ne i8 %.sroa.5.0.copyload331353, 1
%or.cond337.not = or i1 %notrhs340, %notlhs339
%283 = icmp eq %"1.std::io::error::Custom"* %.sroa.6273.0.copyload332352, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
%or.cond338 = or i1 %283, %or.cond337.not
br i1 %or.cond338, label %normal-return22, label %cond.i.i.i.i142
cond.i.i.i.i142: ; preds = %normal-return21
%284 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6273.0.copyload332352, i64 0, i32 1, i32 0
%285 = load i8** %284, align 8
%286 = icmp eq i8* %285, inttoptr (i64 2097865012304223517 to i8*)
br i1 %286, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i148, label %cond.i.i.i.i.i.i143
cond.i.i.i.i.i.i143: ; preds = %cond.i.i.i.i142
%287 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6273.0.copyload332352, i64 0, i32 1, i32 1
%288 = load void (i8*)*** %287, align 8
%289 = load void (i8*)** %288, align 8
call void %289(i8* %285)
%290 = bitcast void (i8*)*** %287 to i64**
%291 = load i64** %290, align 8
%292 = getelementptr inbounds i64* %291, i64 1
%293 = load i64* %292, align 8
%294 = icmp eq i64 %293, 0
br i1 %294, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i148, label %cond2.i.i.i.i.i.i144
cond2.i.i.i.i.i.i144: ; preds = %cond.i.i.i.i.i.i143
%295 = getelementptr inbounds i64* %291, i64 2
%296 = load i64* %295, align 8
%297 = icmp ult i64 %296, 17
br i1 %297, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i147, label %else-block.i.i.i.i.i.i.i.i.i.i145
else-block.i.i.i.i.i.i.i.i.i.i145: ; preds = %cond2.i.i.i.i.i.i144
%298 = call i64 @llvm.cttz.i64(i64 %296, i1 false) #20
%299 = trunc i64 %298 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i147
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i147: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i145, %cond2.i.i.i.i.i.i144
%sret_slot.0.i.i.i.i.i.i.i.i.i.i146 = phi i32 [ %299, %else-block.i.i.i.i.i.i.i.i.i.i145 ], [ 0, %cond2.i.i.i.i.i.i144 ]
call void @je_sdallocx(i8* %285, i64 %293, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i146)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i148
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i148: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i147, %cond.i.i.i.i.i.i143, %cond.i.i.i.i142
%300 = getelementptr inbounds %"1.std::io::error::Custom"* %.sroa.6273.0.copyload332352, i64 0, i32 0
call void @je_sdallocx(i8* %300, i64 24, i32 0)
br label %normal-return22
normal-return22: ; preds = %normal-return21, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i148
call void @llvm.lifetime.end(i64 16, i8* %187)
%301 = getelementptr inbounds %"ll::limb::Limb"* %p.0344, i64 1
%302 = load i32* %n, align 4
%303 = add i32 %302, -1
store i32 %303, i32* %n, align 4
%304 = icmp eq i32 %303, 0
br i1 %304, label %next-block, label %then-block-13202-
then-block-13202-: ; preds = %normal-return22
call void @llvm.lifetime.start(i64 24, i8* %211)
call void @llvm.lifetime.start(i64 16, i8* %212)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %212, i8* bitcast ({ i8*, i64 }* @const9362 to i8*), i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %8, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg23)
to label %normal-return24 unwind label %unwind_ast_13066_16.loopexit
normal-return24: ; preds = %then-block-13202-
call void @llvm.lifetime.end(i64 16, i8* %212)
%305 = load i64* %213, align 8, !range !565
%cond.i150 = icmp eq i64 %305, 1
%306 = load i8* %215, align 8
%cond.i.i.i151 = icmp eq i8 %306, 1
%or.cond356 = and i1 %cond.i150, %cond.i.i.i151
br i1 %or.cond356, label %enum-iter-variant-1.i.i.i153, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit161"
enum-iter-variant-1.i.i.i153: ; preds = %normal-return24
%307 = load %"1.std::io::error::Custom"** %217, align 8
%308 = icmp eq %"1.std::io::error::Custom"* %307, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %308, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit161", label %cond.i.i.i.i154
cond.i.i.i.i154: ; preds = %enum-iter-variant-1.i.i.i153
%309 = getelementptr inbounds %"1.std::io::error::Custom"* %307, i64 0, i32 1, i32 0
%310 = load i8** %309, align 8
%311 = icmp eq i8* %310, inttoptr (i64 2097865012304223517 to i8*)
br i1 %311, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i160, label %cond.i.i.i.i.i.i155
cond.i.i.i.i.i.i155: ; preds = %cond.i.i.i.i154
%312 = getelementptr inbounds %"1.std::io::error::Custom"* %307, i64 0, i32 1, i32 1
%313 = load void (i8*)*** %312, align 8
%314 = load void (i8*)** %313, align 8
call void %314(i8* %310)
%315 = bitcast void (i8*)*** %312 to i64**
%316 = load i64** %315, align 8
%317 = getelementptr inbounds i64* %316, i64 1
%318 = load i64* %317, align 8
%319 = icmp eq i64 %318, 0
br i1 %319, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i160, label %cond2.i.i.i.i.i.i156
cond2.i.i.i.i.i.i156: ; preds = %cond.i.i.i.i.i.i155
%320 = getelementptr inbounds i64* %316, i64 2
%321 = load i64* %320, align 8
%322 = icmp ult i64 %321, 17
br i1 %322, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i159, label %else-block.i.i.i.i.i.i.i.i.i.i157
else-block.i.i.i.i.i.i.i.i.i.i157: ; preds = %cond2.i.i.i.i.i.i156
%323 = call i64 @llvm.cttz.i64(i64 %321, i1 false) #20
%324 = trunc i64 %323 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i159
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i159: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i157, %cond2.i.i.i.i.i.i156
%sret_slot.0.i.i.i.i.i.i.i.i.i.i158 = phi i32 [ %324, %else-block.i.i.i.i.i.i.i.i.i.i157 ], [ 0, %cond2.i.i.i.i.i.i156 ]
call void @je_sdallocx(i8* %310, i64 %318, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i158)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i160
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i160: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i159, %cond.i.i.i.i.i.i155, %cond.i.i.i.i154
%325 = getelementptr inbounds %"1.std::io::error::Custom"* %307, i64 0, i32 0
call void @je_sdallocx(i8* %325, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit161"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit161": ; preds = %normal-return24, %enum-iter-variant-1.i.i.i153, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i160
call void @llvm.lifetime.end(i64 24, i8* %211)
br label %next-block
next-block: ; preds = %normal-return22, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit161"
%326 = add i32 %i.0343, 1
%327 = and i32 %326, 7
%328 = icmp eq i32 %327, 0
br i1 %328, label %then-block-13218-, label %while_cond.backedge
while_cond.backedge: ; preds = %next-block, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit173"
%329 = load i32* %n, align 4
%330 = icmp sgt i32 %329, 0
br i1 %330, label %normal-return20, label %while_exit.loopexit
then-block-13218-: ; preds = %next-block
call void @llvm.lifetime.start(i64 24, i8* %204)
call void @llvm.lifetime.start(i64 16, i8* %205)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %205, i8* bitcast ({ i8*, i64 }* @const9365 to i8*), i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %9, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg25)
to label %normal-return26 unwind label %unwind_ast_13066_16.loopexit
normal-return26: ; preds = %then-block-13218-
call void @llvm.lifetime.end(i64 16, i8* %205)
%331 = load i64* %206, align 8, !range !565
%cond.i162 = icmp eq i64 %331, 1
%332 = load i8* %208, align 8
%cond.i.i.i163 = icmp eq i8 %332, 1
%or.cond357 = and i1 %cond.i162, %cond.i.i.i163
br i1 %or.cond357, label %enum-iter-variant-1.i.i.i165, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit173"
enum-iter-variant-1.i.i.i165: ; preds = %normal-return26
%333 = load %"1.std::io::error::Custom"** %210, align 8
%334 = icmp eq %"1.std::io::error::Custom"* %333, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %334, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit173", label %cond.i.i.i.i166
cond.i.i.i.i166: ; preds = %enum-iter-variant-1.i.i.i165
%335 = getelementptr inbounds %"1.std::io::error::Custom"* %333, i64 0, i32 1, i32 0
%336 = load i8** %335, align 8
%337 = icmp eq i8* %336, inttoptr (i64 2097865012304223517 to i8*)
br i1 %337, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i172, label %cond.i.i.i.i.i.i167
cond.i.i.i.i.i.i167: ; preds = %cond.i.i.i.i166
%338 = getelementptr inbounds %"1.std::io::error::Custom"* %333, i64 0, i32 1, i32 1
%339 = load void (i8*)*** %338, align 8
%340 = load void (i8*)** %339, align 8
call void %340(i8* %336)
%341 = bitcast void (i8*)*** %338 to i64**
%342 = load i64** %341, align 8
%343 = getelementptr inbounds i64* %342, i64 1
%344 = load i64* %343, align 8
%345 = icmp eq i64 %344, 0
br i1 %345, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i172, label %cond2.i.i.i.i.i.i168
cond2.i.i.i.i.i.i168: ; preds = %cond.i.i.i.i.i.i167
%346 = getelementptr inbounds i64* %342, i64 2
%347 = load i64* %346, align 8
%348 = icmp ult i64 %347, 17
br i1 %348, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i171, label %else-block.i.i.i.i.i.i.i.i.i.i169
else-block.i.i.i.i.i.i.i.i.i.i169: ; preds = %cond2.i.i.i.i.i.i168
%349 = call i64 @llvm.cttz.i64(i64 %347, i1 false) #20
%350 = trunc i64 %349 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i171
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i171: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i169, %cond2.i.i.i.i.i.i168
%sret_slot.0.i.i.i.i.i.i.i.i.i.i170 = phi i32 [ %350, %else-block.i.i.i.i.i.i.i.i.i.i169 ], [ 0, %cond2.i.i.i.i.i.i168 ]
call void @je_sdallocx(i8* %336, i64 %344, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i170)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i172
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i172: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i171, %cond.i.i.i.i.i.i167, %cond.i.i.i.i166
%351 = getelementptr inbounds %"1.std::io::error::Custom"* %333, i64 0, i32 0
call void @je_sdallocx(i8* %351, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit173"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit173": ; preds = %normal-return26, %enum-iter-variant-1.i.i.i165, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i172
call void @llvm.lifetime.end(i64 24, i8* %204)
br label %while_cond.backedge
normal-return29: ; preds = %while_exit
call void @llvm.lifetime.end(i64 16, i8* %219)
%352 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %10, i64 0, i32 0
%353 = load i64* %352, align 8, !range !565
%cond.i174 = icmp eq i64 %353, 1
br i1 %cond.i174, label %enum-iter-variant-1.i176, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185"
enum-iter-variant-1.i176: ; preds = %normal-return29
%354 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %10, i64 0, i32 2
%355 = bitcast [2 x i64]* %354 to i8*
%356 = load i8* %355, align 8, !range !558
%cond.i.i.i175 = icmp eq i8 %356, 1
br i1 %cond.i.i.i175, label %enum-iter-variant-1.i.i.i177, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185"
enum-iter-variant-1.i.i.i177: ; preds = %enum-iter-variant-1.i176
%357 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %10, i64 0, i32 2, i64 1
%358 = bitcast i64* %357 to %"1.std::io::error::Custom"**
%359 = load %"1.std::io::error::Custom"** %358, align 8
%360 = icmp eq %"1.std::io::error::Custom"* %359, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %360, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185", label %cond.i.i.i.i178
cond.i.i.i.i178: ; preds = %enum-iter-variant-1.i.i.i177
%361 = getelementptr inbounds %"1.std::io::error::Custom"* %359, i64 0, i32 1, i32 0
%362 = load i8** %361, align 8
%363 = icmp eq i8* %362, inttoptr (i64 2097865012304223517 to i8*)
br i1 %363, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i184, label %cond.i.i.i.i.i.i179
cond.i.i.i.i.i.i179: ; preds = %cond.i.i.i.i178
%364 = getelementptr inbounds %"1.std::io::error::Custom"* %359, i64 0, i32 1, i32 1
%365 = load void (i8*)*** %364, align 8
%366 = load void (i8*)** %365, align 8
call void %366(i8* %362)
%367 = bitcast void (i8*)*** %364 to i64**
%368 = load i64** %367, align 8
%369 = getelementptr inbounds i64* %368, i64 1
%370 = load i64* %369, align 8
%371 = icmp eq i64 %370, 0
br i1 %371, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i184, label %cond2.i.i.i.i.i.i180
cond2.i.i.i.i.i.i180: ; preds = %cond.i.i.i.i.i.i179
%372 = getelementptr inbounds i64* %368, i64 2
%373 = load i64* %372, align 8
%374 = icmp ult i64 %373, 17
br i1 %374, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i183, label %else-block.i.i.i.i.i.i.i.i.i.i181
else-block.i.i.i.i.i.i.i.i.i.i181: ; preds = %cond2.i.i.i.i.i.i180
%375 = call i64 @llvm.cttz.i64(i64 %373, i1 false) #20
%376 = trunc i64 %375 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i183
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i183: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i181, %cond2.i.i.i.i.i.i180
%sret_slot.0.i.i.i.i.i.i.i.i.i.i182 = phi i32 [ %376, %else-block.i.i.i.i.i.i.i.i.i.i181 ], [ 0, %cond2.i.i.i.i.i.i180 ]
call void @je_sdallocx(i8* %362, i64 %370, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i182)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i184
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i184: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i183, %cond.i.i.i.i.i.i179, %cond.i.i.i.i178
%377 = getelementptr inbounds %"1.std::io::error::Custom"* %359, i64 0, i32 0
call void @je_sdallocx(i8* %377, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185": ; preds = %normal-return29, %enum-iter-variant-1.i176, %enum-iter-variant-1.i.i.i177, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i184
call void @llvm.lifetime.end(i64 24, i8* %218)
%378 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %11 to i8*
call void @llvm.lifetime.start(i64 24, i8* %378)
invoke void @"_ZN2io5stdio30StdoutLock$LT$$u27$a$GT$.Write5flush20h3fad0900fcde2984TUgE"(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %11, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %stdout1)
to label %normal-return30 unwind label %unwind_ast_13066_16.nonloopexit
normal-return30: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit185"
%379 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %11, i64 0, i32 0
%380 = load i64* %379, align 8, !range !565
%cond.i186 = icmp eq i64 %380, 1
br i1 %cond.i186, label %enum-iter-variant-1.i188, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197"
enum-iter-variant-1.i188: ; preds = %normal-return30
%381 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %11, i64 0, i32 2
%382 = bitcast [2 x i64]* %381 to i8*
%383 = load i8* %382, align 8, !range !558
%cond.i.i.i187 = icmp eq i8 %383, 1
br i1 %cond.i.i.i187, label %enum-iter-variant-1.i.i.i189, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197"
enum-iter-variant-1.i.i.i189: ; preds = %enum-iter-variant-1.i188
%384 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %11, i64 0, i32 2, i64 1
%385 = bitcast i64* %384 to %"1.std::io::error::Custom"**
%386 = load %"1.std::io::error::Custom"** %385, align 8
%387 = icmp eq %"1.std::io::error::Custom"* %386, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %387, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197", label %cond.i.i.i.i190
cond.i.i.i.i190: ; preds = %enum-iter-variant-1.i.i.i189
%388 = getelementptr inbounds %"1.std::io::error::Custom"* %386, i64 0, i32 1, i32 0
%389 = load i8** %388, align 8
%390 = icmp eq i8* %389, inttoptr (i64 2097865012304223517 to i8*)
br i1 %390, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i196, label %cond.i.i.i.i.i.i191
cond.i.i.i.i.i.i191: ; preds = %cond.i.i.i.i190
%391 = getelementptr inbounds %"1.std::io::error::Custom"* %386, i64 0, i32 1, i32 1
%392 = load void (i8*)*** %391, align 8
%393 = load void (i8*)** %392, align 8
call void %393(i8* %389)
%394 = bitcast void (i8*)*** %391 to i64**
%395 = load i64** %394, align 8
%396 = getelementptr inbounds i64* %395, i64 1
%397 = load i64* %396, align 8
%398 = icmp eq i64 %397, 0
br i1 %398, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i196, label %cond2.i.i.i.i.i.i192
cond2.i.i.i.i.i.i192: ; preds = %cond.i.i.i.i.i.i191
%399 = getelementptr inbounds i64* %395, i64 2
%400 = load i64* %399, align 8
%401 = icmp ult i64 %400, 17
br i1 %401, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i195, label %else-block.i.i.i.i.i.i.i.i.i.i193
else-block.i.i.i.i.i.i.i.i.i.i193: ; preds = %cond2.i.i.i.i.i.i192
%402 = call i64 @llvm.cttz.i64(i64 %400, i1 false) #20
%403 = trunc i64 %402 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i195
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i195: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i193, %cond2.i.i.i.i.i.i192
%sret_slot.0.i.i.i.i.i.i.i.i.i.i194 = phi i32 [ %403, %else-block.i.i.i.i.i.i.i.i.i.i193 ], [ 0, %cond2.i.i.i.i.i.i192 ]
call void @je_sdallocx(i8* %389, i64 %397, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i194)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i196
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i196: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i195, %cond.i.i.i.i.i.i191, %cond.i.i.i.i190
%404 = getelementptr inbounds %"1.std::io::error::Custom"* %386, i64 0, i32 0
call void @je_sdallocx(i8* %404, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197": ; preds = %normal-return30, %enum-iter-variant-1.i188, %enum-iter-variant-1.i.i.i189, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i196
call void @llvm.lifetime.end(i64 24, i8* %378)
%405 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 2
%406 = load i8* %405, align 1
%407 = icmp eq i8 %406, -44
br i1 %407, label %cond.i.i198, label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202
cond.i.i198: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197"
%408 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 0
%409 = load %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"** %408, align 8, !alias.scope !597, !nonnull !557
%410 = getelementptr inbounds %"1.std::io::stdio::StdoutLock"* %stdout1, i64 0, i32 0, i32 1, i32 0
%411 = load i8* %410, align 8, !range !558, !alias.scope !600
%412 = icmp eq i8 %411, 0
br i1 %412, label %join.i.i.i.i199, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i201
join.i.i.i.i199: ; preds = %cond.i.i198
%413 = call zeroext i1 @_ZN2rt6unwind9panicking20hd406c1806cb00459vBwE()
br i1 %413, label %then-block-28942-.i.i.i.i200, label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i201
then-block-28942-.i.i.i.i200: ; preds = %join.i.i.i.i199
%414 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %409, i64 0, i32 1, i32 0, i32 0, i32 0
store i8 1, i8* %414, align 1, !noalias !600
br label %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i201
_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i201: ; preds = %then-block-28942-.i.i.i.i200, %join.i.i.i.i199, %cond.i.i198
%415 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %409, i64 0, i32 0
%416 = load %"1.std::sys::mutex::ReentrantMutex"** %415, align 8, !noalias !597, !nonnull !557
call void @_ZN3sys5mutex14ReentrantMutex6unlock20h8dbd630e51296830R8tE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40) %416)
br label %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202
_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit197", %_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE.exit.i.i.i201
call void @llvm.lifetime.end(i64 16, i8* %16)
%417 = getelementptr inbounds %"1.std::io::stdio::Stdout"* %stdout, i64 0, i32 0
%418 = bitcast %"1.std::io::stdio::Stdout"* %stdout to i8**
%419 = load i8** %418, align 8, !alias.scope !603
%magicptr.i.i.i = ptrtoint i8* %419 to i64
switch i64 %magicptr.i.i.i, label %next-block.i.i.i [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit
i64 0, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit
]
next-block.i.i.i: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202
%420 = bitcast i8* %419 to i64*
%421 = atomicrmw sub i64* %420, i64 1 release, !noalias !603
%422 = icmp eq i64 %421, 1
br i1 %422, label %next-block1.i.i.i, label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit
next-block1.i.i.i: ; preds = %next-block.i.i.i
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow21h17040988076615010400E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* noalias dereferenceable(8) %417)
to label %_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit unwind label %unwind_custom_.i.i
unwind_custom_.i.i: ; preds = %next-block1.i.i.i
%423 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %423
_ZN22std..io..stdio..Stdout9drop.891117h6e84571dd0926d0cE.exit: ; preds = %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202, %_ZN26std..io..stdio..StdoutLock9drop.922517h4e44ffd483697787E.exit202, %next-block.i.i.i, %next-block1.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %13)
call void @llvm.lifetime.end(i64 4, i8* %12)
call void @llvm.lifetime.end(i64 16, i8* %27)
ret void
}
declare i64 @_ZN2io5stdio6stdout20hb4a6bed83cd64382qSgE() unnamed_addr #7
declare void @_ZN2io5stdio6Stdout4lock20h6230e8c522cbeec45SgE(%"1.std::io::stdio::StdoutLock"* noalias nocapture sret dereferenceable(16), %"1.std::io::stdio::Stdout"* noalias readonly dereferenceable(8)) unnamed_addr #7
; Function Attrs: noinline uwtable
define internal fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow21h17040988076615010400E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #18 {
entry-block:
%1 = getelementptr inbounds %"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* %0, i64 0, i32 0, i32 0
%2 = load %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"** %1, align 8
%3 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* %2, i64 0, i32 2
%4 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* %2, i64 0, i32 2, i32 3
%5 = load i8* %4, align 1
%6 = icmp eq i8 %5, -44
br i1 %6, label %cond.i, label %"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.896617hc2163436f0649e06E.exit"
cond.i: ; preds = %entry-block
%7 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %3, i64 0, i32 0
%8 = load %"1.std::sys::mutex::ReentrantMutex"** %7, align 8, !alias.scope !606, !nonnull !557
invoke void @_ZN3sys5mutex14ReentrantMutex7destroy20h758c87a2a9bf37eatauE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40) %8)
to label %normal-return.i unwind label %unwind_custom_.i
normal-return.i: ; preds = %cond.i
tail call fastcc void @"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.897017hc2163436f0649e06E"(%"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %3)
br label %"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.896617hc2163436f0649e06E.exit"
unwind_custom_.i: ; preds = %cond.i
%9 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call fastcc void @"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.897017hc2163436f0649e06E"(%"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %3)
resume { i8*, i32 } %9
"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.896617hc2163436f0649e06E.exit": ; preds = %entry-block, %normal-return.i
%10 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* %2, i64 0, i32 1, i32 0, i32 0
%11 = atomicrmw sub i64* %10, i64 1 release
%12 = icmp eq i64 %11, 1
br i1 %12, label %then-block-27016-, label %next-block
then-block-27016-: ; preds = %"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.896617hc2163436f0649e06E.exit"
fence acquire
%13 = bitcast %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>>"* %2 to i8*
tail call void @je_sdallocx(i8* %13, i64 88, i32 0)
br label %next-block
next-block: ; preds = %"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.896617hc2163436f0649e06E.exit", %then-block-27016-
ret void
}
declare void @_ZN3sys5mutex14ReentrantMutex7destroy20h758c87a2a9bf37eatauE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40)) unnamed_addr #7
define internal fastcc void @"_ZN137std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$$GT$9drop.897017hc2163436f0649e06E"(%"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"*) unnamed_addr #7 {
entry-block:
%1 = alloca %"2.core::result::Result<usize, std::io::error::Error>", align 8
%__fat_ptr.i.i.i.i.i.i = alloca { i8*, i64 }, align 8
%2 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%const.i.i.i.i.i.i = alloca %str_slice, align 8
%3 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 0
%4 = load %"1.std::sys::mutex::ReentrantMutex"** %3, align 8
%5 = icmp eq %"1.std::sys::mutex::ReentrantMutex"* %4, inttoptr (i64 2097865012304223517 to %"1.std::sys::mutex::ReentrantMutex"*)
br i1 %5, label %"_ZN42Box$LT$std..sys..mutex..ReentrantMutex$GT$9drop.897317h2635371239400507E.exit", label %cond.i
cond.i: ; preds = %entry-block
%6 = bitcast %"1.std::sys::mutex::ReentrantMutex"* %4 to i8*
tail call void @je_sdallocx(i8* %6, i64 40, i32 0)
br label %"_ZN42Box$LT$std..sys..mutex..ReentrantMutex$GT$9drop.897317h2635371239400507E.exit"
"_ZN42Box$LT$std..sys..mutex..ReentrantMutex$GT$9drop.897317h2635371239400507E.exit": ; preds = %entry-block, %cond.i
%7 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1
%8 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 2
%9 = load i8* %8, align 1
%10 = icmp eq i8 %9, -44
br i1 %10, label %cond.i.i.i.i, label %"_ZN89core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$9drop.899417h3332342a8ca0acf3E.exit"
cond.i.i.i.i: ; preds = %"_ZN42Box$LT$std..sys..mutex..ReentrantMutex$GT$9drop.897317h2635371239400507E.exit"
%11 = getelementptr inbounds %"2.core::cell::UnsafeCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>"* %7, i64 0, i32 0, i32 0, i32 0
%12 = getelementptr inbounds %"2.core::cell::UnsafeCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>"* %7, i64 0, i32 0, i32 0, i32 0, i32 0
%13 = load i8* %12, align 1, !range !558, !alias.scope !609
%cond.i.i.i.i.i.i = icmp eq i8 %13, 1
br i1 %cond.i.i.i.i.i.i, label %then-block-27205-.i.i.i.i.i, label %normal-return.i.i.i.i
then-block-27205-.i.i.i.i.i: ; preds = %cond.i.i.i.i
%14 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 1
%15 = load i64* %14, align 8, !alias.scope !614, !noalias !619
%ret.sroa.17195.0.copyload198.i.i.i.i.i.i = load %"1.std::io::error::Custom"** bitcast (i8* getelementptr inbounds ({ i64, {}, [16 x i8] }* @const9023, i64 0, i32 2, i64 8) to %"1.std::io::error::Custom"**), align 8, !noalias !621
%16 = icmp eq i64 %15, 0
br i1 %16, label %next-block.i.i.i.i.i.i, label %normal-return.lr.ph.i.i.i.i.i.i
normal-return.lr.ph.i.i.i.i.i.i: ; preds = %then-block-27205-.i.i.i.i.i
%17 = bitcast %"2.core::result::Result<usize, std::io::error::Error>"* %1 to i8*
%18 = getelementptr inbounds %"2.core::option::Option<std::io::stdio::StdoutRaw>"* %11, i64 1, i32 0
%19 = bitcast i8* %18 to %"1.std::io::stdio::StdoutRaw"*
%20 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0
%21 = bitcast { i8*, i64 }* %__fat_ptr.i.i.i.i.i.i to i8*
%overloaded_index_elt.sroa.0.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds { i8*, i64 }* %__fat_ptr.i.i.i.i.i.i, i64 0, i32 0
%overloaded_index_elt.sroa.3.0..sroa_idx171.i.i.i.i.i.i = getelementptr inbounds { i8*, i64 }* %__fat_ptr.i.i.i.i.i.i, i64 0, i32 1
%22 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %1, i64 0, i32 0
%23 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %1, i64 0, i32 2, i64 0
%24 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %1, i64 0, i32 2
%25 = bitcast [2 x i64]* %24 to i8*
%26 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %1, i64 0, i32 2, i64 1
%27 = bitcast i64* %26 to %"1.std::io::error::Custom"**
%28 = bitcast [2 x i64]* %24 to %"1.std::io::error::Error"*
call void @llvm.lifetime.start(i64 24, i8* %17), !noalias !622
br label %normal-return2.i.i.i.i.i.i
while_exit.i.i.i.i.i.i.loopexit: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i"
%written.1266.i.i.i.i.i.i.lcssa = phi i64 [ %written.1266.i.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i" ]
br label %while_exit.i.i.i.i.i.i
while_exit.i.i.i.i.i.i: ; preds = %while_exit.i.i.i.i.i.i.loopexit, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i"
%written.0237.i.i.i.i.i.i = phi i64 [ %written.0248.i.i24.i10.i.i.i38, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i" ], [ %written.1266.i.i.i.i.i.i.lcssa, %while_exit.i.i.i.i.i.i.loopexit ]
%ret.sroa.17195.0.copyload226.i.i.i.i.i.i = phi %"1.std::io::error::Custom"* [ %ret.sroa.17195.0.copyload227.i29.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i" ], [ %ret.sroa.17195.0.copyload198.i.i.i.i.i.i, %while_exit.i.i.i.i.i.i.loopexit ]
%ret.sroa.12.0.copyload224.i.i.i.i.i.i = phi i8 [ %ret.sroa.12.0.copyload225.i30.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i" ], [ undef, %while_exit.i.i.i.i.i.i.loopexit ]
%ret.sroa.0.0.222.i.i.i.i.i.i = phi i64 [ 1, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i" ], [ 0, %while_exit.i.i.i.i.i.i.loopexit ]
%29 = icmp eq i64 %written.0237.i.i.i.i.i.i, 0
br i1 %29, label %next-block.i.i.i.i.i.i, label %normal-return22.i.i.i.i.i.i
match_else.i.i.i.i.i.i.i: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.i.i.i.i"
invoke void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @"_ZN6option15Option$LT$T$GT$6unwrap14_MSG_FILE_LINE20h6d1c158578d50c6aMVEE")
to label %.noexc.i.i.i.i.i.i unwind label %unwind_ast_27235_.nonloopexit.i.i.i.i.i.i, !noalias !619
.noexc.i.i.i.i.i.i: ; preds = %match_else.i.i.i.i.i.i.i
unreachable
unwind_ast_27235_.loopexit.i.i.i.i.i.i: ; preds = %normal-return2.i.i.i.i.i.i
%lpad.loopexit.i.i.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_27235_.i.i.i.i.i.i
unwind_ast_27235_.nonloopexit.i.i.i.i.i.i: ; preds = %then-block-27473-.i.i.i.i.i.i.i.i.i, %match_else.i.i.i.i.i.i.i
%lpad.nonloopexit.i.i.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_27235_.i.i.i.i.i.i
unwind_ast_27235_.i.i.i.i.i.i: ; preds = %unwind_ast_27235_.nonloopexit.i.i.i.i.i.i, %unwind_ast_27235_.loopexit.i.i.i.i.i.i
%lpad.phi.i.i.i.i.i.i = phi { i8*, i32 } [ %lpad.loopexit.i.i.i.i.i.i, %unwind_ast_27235_.loopexit.i.i.i.i.i.i ], [ %lpad.nonloopexit.i.i.i.i.i.i, %unwind_ast_27235_.nonloopexit.i.i.i.i.i.i ]
%.fca.0.extract.i.i.i.i.i.i = extractvalue { i8*, i32 } %lpad.phi.i.i.i.i.i.i, 0
%.fca.1.extract.i.i.i.i.i.i = extractvalue { i8*, i32 } %lpad.phi.i.i.i.i.i.i, 1
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit94.i.i.i.i.i.i"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit94.i.i.i.i.i.i": ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i", %unwind_ast_27235_.i.i.i.i.i.i
%.sroa.055.0.i.i.i.i.i.i = phi i8* [ %.fca.0.extract.i.i.i.i.i.i, %unwind_ast_27235_.i.i.i.i.i.i ], [ %.fca.0.extract52.i.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i" ]
%.sroa.456.0.i.i.i.i.i.i = phi i32 [ %.fca.1.extract.i.i.i.i.i.i, %unwind_ast_27235_.i.i.i.i.i.i ], [ %.fca.1.extract54.i.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i" ]
%.fca.0.insert.i.i.i.i.i.i = insertvalue { i8*, i32 } undef, i8* %.sroa.055.0.i.i.i.i.i.i, 0
%.fca.1.insert.i.i.i.i.i.i = insertvalue { i8*, i32 } %.fca.0.insert.i.i.i.i.i.i, i32 %.sroa.456.0.i.i.i.i.i.i, 1
br label %unwind_custom_.body.i.i.i.i
then-block-27473-.i.i.i.i.i.i.i.i.i: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i"
invoke void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @"_ZN5slice54_$u5b$T$u5d$.ops..Index$LT$ops..Range$LT$usize$GT$$GT$5index14_MSG_FILE_LINE20h6d1c158578d50c6aYHGE")
to label %.noexc95.i.i.i.i.i.i unwind label %unwind_ast_27235_.nonloopexit.i.i.i.i.i.i, !noalias !619
.noexc95.i.i.i.i.i.i: ; preds = %then-block-27473-.i.i.i.i.i.i.i.i.i
unreachable
normal-return2.i.i.i.i.i.i: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i", %normal-return.lr.ph.i.i.i.i.i.i
%written.0248.i.i24.i10.i.i.i = phi i64 [ 0, %normal-return.lr.ph.i.i.i.i.i.i ], [ %written.1266.i.i.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i" ]
%30 = phi i64 [ %15, %normal-return.lr.ph.i.i.i.i.i.i ], [ %.pre.i.i.i.i, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i" ]
%31 = load i8** %20, align 8, !alias.scope !623, !noalias !628, !nonnull !557
%32 = getelementptr inbounds i8* %31, i64 %written.0248.i.i24.i10.i.i.i
%33 = sub i64 %30, %written.0248.i.i24.i10.i.i.i
call void @llvm.lifetime.start(i64 16, i8* %21), !noalias !622
store i8* %32, i8** %overloaded_index_elt.sroa.0.0..sroa_idx.i.i.i.i.i.i, align 8, !noalias !622
store i64 %33, i64* %overloaded_index_elt.sroa.3.0..sroa_idx171.i.i.i.i.i.i, align 8, !noalias !622
invoke void @_ZN2io5stdio15StdoutRaw.Write5write20hcc464eae5d0b6546HNgE(%"2.core::result::Result<usize, std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %1, %"1.std::io::stdio::StdoutRaw"* noalias %19, { i8*, i64 }* noalias nocapture dereferenceable(16) %__fat_ptr.i.i.i.i.i.i)
to label %normal-return3.i.i.i.i.i.i unwind label %unwind_ast_27235_.loopexit.i.i.i.i.i.i, !noalias !619
normal-return3.i.i.i.i.i.i: ; preds = %normal-return2.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 16, i8* %21), !noalias !622
%34 = load i64* %22, align 8, !range !565, !noalias !622
%cond25.i.i.i.i.i.i = icmp eq i64 %34, 0
br i1 %cond25.i.i.i.i.i.i, label %match_case.i.i.i.i.i.i, label %match_else.i.i.i.i.i.i
match_else.i.i.i.i.i.i: ; preds = %normal-return3.i.i.i.i.i.i
%35 = invoke i8 @_ZN2io5error5Error4kind20h100fd7139c19c511vpgE(%"1.std::io::error::Error"* noalias readonly dereferenceable(16) %28)
to label %normal-return11.i.i.i.i.i.i unwind label %unwind_ast_27257_.loopexit.i.i.i.i.i.i, !noalias !619
match_case.i.i.i.i.i.i: ; preds = %normal-return3.i.i.i.i.i.i
%36 = load i64* %23, align 8, !noalias !622
%cond26.i.i.i.i.i.i = icmp eq i64 %36, 0
br i1 %cond26.i.i.i.i.i.i, label %match_case9.i.i.i.i.i.i, label %join.thread.i.i.i.i.i.i
join.thread.i.i.i.i.i.i: ; preds = %match_case.i.i.i.i.i.i
%37 = add i64 %36, %written.0248.i.i24.i10.i.i.i
br label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i"
match_case9.i.i.i.i.i.i: ; preds = %match_case.i.i.i.i.i.i
%written.0248.i.i24.i10.i.i.i.lcssa34 = phi i64 [ %written.0248.i.i24.i10.i.i.i, %match_case.i.i.i.i.i.i ]
%38 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %38), !noalias !622
%39 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %2, i64 0, i32 2
%40 = bitcast [2 x i64]* %39 to %"1.std::io::error::Error"*
%41 = bitcast %str_slice* %const.i.i.i.i.i.i to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %41, i8* bitcast (%str_slice* @const9142 to i8*), i64 16, i32 8, i1 false), !noalias !619
invoke fastcc void @_ZN2io5error5Error3new20h1138840364300435787E(%"1.std::io::error::Error"* noalias nocapture sret dereferenceable(16) %40, %str_slice* noalias nocapture dereferenceable(16) %const.i.i.i.i.i.i)
to label %clean_ast_27257_13.i.i.i.i.i.i unwind label %unwind_ast_27257_.nonloopexit.i.i.i.i.i.i, !noalias !619
unwind_ast_27257_.loopexit.i.i.i.i.i.i: ; preds = %match_else.i.i.i.i.i.i
%lpad.loopexit228.i.i.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_27257_.i.i.i.i.i.i
unwind_ast_27257_.nonloopexit.i.i.i.i.i.i: ; preds = %match_case9.i.i.i.i.i.i
%lpad.nonloopexit229.i.i.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_27257_.i.i.i.i.i.i
unwind_ast_27257_.i.i.i.i.i.i: ; preds = %unwind_ast_27257_.nonloopexit.i.i.i.i.i.i, %unwind_ast_27257_.loopexit.i.i.i.i.i.i
%lpad.phi230.i.i.i.i.i.i = phi { i8*, i32 } [ %lpad.loopexit228.i.i.i.i.i.i, %unwind_ast_27257_.loopexit.i.i.i.i.i.i ], [ %lpad.nonloopexit229.i.i.i.i.i.i, %unwind_ast_27257_.nonloopexit.i.i.i.i.i.i ]
%.fca.0.extract52.i.i.i.i.i.i = extractvalue { i8*, i32 } %lpad.phi230.i.i.i.i.i.i, 0
%.fca.1.extract54.i.i.i.i.i.i = extractvalue { i8*, i32 } %lpad.phi230.i.i.i.i.i.i, 1
%42 = load i64* %22, align 8, !range !565, !noalias !622
%cond.i96.i.i.i.i.i.i = icmp eq i64 %42, 1
%43 = load i8* %25, align 8, !noalias !622
%cond.i.i.i97.i.i.i.i.i.i = icmp eq i8 %43, 1
%or.cond.i.i.i.i.i.i = and i1 %cond.i96.i.i.i.i.i.i, %cond.i.i.i97.i.i.i.i.i.i
br i1 %or.cond.i.i.i.i.i.i, label %enum-iter-variant-1.i.i.i99.i.i.i.i.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i"
enum-iter-variant-1.i.i.i99.i.i.i.i.i.i: ; preds = %unwind_ast_27257_.i.i.i.i.i.i
%44 = load %"1.std::io::error::Custom"** %27, align 8, !noalias !622
%45 = icmp eq %"1.std::io::error::Custom"* %44, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %45, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i", label %cond.i.i.i.i100.i.i.i.i.i.i
cond.i.i.i.i100.i.i.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i99.i.i.i.i.i.i
%46 = getelementptr inbounds %"1.std::io::error::Custom"* %44, i64 0, i32 1, i32 0
%47 = load i8** %46, align 8, !noalias !619
%48 = icmp eq i8* %47, inttoptr (i64 2097865012304223517 to i8*)
br i1 %48, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i, label %cond.i.i.i.i.i.i101.i.i.i.i.i.i
cond.i.i.i.i.i.i101.i.i.i.i.i.i: ; preds = %cond.i.i.i.i100.i.i.i.i.i.i
%49 = getelementptr inbounds %"1.std::io::error::Custom"* %44, i64 0, i32 1, i32 1
%50 = load void (i8*)*** %49, align 8, !noalias !619
%51 = load void (i8*)** %50, align 8, !noalias !619
invoke void %51(i8* %47)
to label %.noexc.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
.noexc.i.i.i.i: ; preds = %cond.i.i.i.i.i.i101.i.i.i.i.i.i
%52 = bitcast void (i8*)*** %49 to i64**
%53 = load i64** %52, align 8, !noalias !619
%54 = getelementptr inbounds i64* %53, i64 1
%55 = load i64* %54, align 8, !noalias !619
%56 = icmp eq i64 %55, 0
br i1 %56, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i, label %cond2.i.i.i.i.i.i102.i.i.i.i.i.i
cond2.i.i.i.i.i.i102.i.i.i.i.i.i: ; preds = %.noexc.i.i.i.i
%57 = getelementptr inbounds i64* %53, i64 2
%58 = load i64* %57, align 8, !noalias !619
%59 = icmp ult i64 %58, 17
br i1 %59, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i105.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i103.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i103.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i102.i.i.i.i.i.i
%60 = call i64 @llvm.cttz.i64(i64 %58, i1 false) #20
%61 = trunc i64 %60 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i105.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i105.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i103.i.i.i.i.i.i, %cond2.i.i.i.i.i.i102.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i104.i.i.i.i.i.i = phi i32 [ %61, %else-block.i.i.i.i.i.i.i.i.i.i103.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i102.i.i.i.i.i.i ]
invoke void @je_sdallocx(i8* %47, i64 %55, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i104.i.i.i.i.i.i)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i105.i.i.i.i.i.i, %.noexc.i.i.i.i, %cond.i.i.i.i100.i.i.i.i.i.i
%62 = getelementptr inbounds %"1.std::io::error::Custom"* %44, i64 0, i32 0
invoke void @je_sdallocx(i8* %62, i64 24, i32 0)
to label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i" unwind label %unwind_custom_.nonloopexit.i.i.i.i
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.i.i.i.i.i.i": ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i99.i.i.i.i.i.i, %unwind_ast_27257_.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %17), !noalias !622
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit94.i.i.i.i.i.i"
normal-return11.i.i.i.i.i.i: ; preds = %match_else.i.i.i.i.i.i
%cond73.i.i.i.i.i.i.i = icmp eq i8 %35, 15
br i1 %cond73.i.i.i.i.i.i.i, label %join.i.i.i.i.i.i, label %clean_ast_27257_13.i.thread.i.i.i.i.i
clean_ast_27257_13.i.thread.i.i.i.i.i: ; preds = %normal-return11.i.i.i.i.i.i
%written.0248.i.i24.i10.i.i.i.lcssa32 = phi i64 [ %written.0248.i.i24.i10.i.i.i, %normal-return11.i.i.i.i.i.i ]
%.sroa.4.sroa.0.0.copyload.i.i.i.i.i.i = load i8* %25, align 8, !noalias !622
%.sroa.4.sroa.5.0.copyload.i.i.i.i.i.i = load %"1.std::io::error::Custom"** %27, align 8, !noalias !622
call void @llvm.memset.p0i8.i64(i8* %25, i8 29, i64 16, i32 8, i1 false), !noalias !622
br label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i"
clean_ast_27257_13.i.i.i.i.i.i: ; preds = %match_case9.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 16, i8* %41), !noalias !622
%63 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %2, i64 0, i32 0
store i64 1, i64* %63, align 8, !noalias !622
%ret.sroa.12.0..sroa_cast182.i.i.i.i.i.i = bitcast [2 x i64]* %39 to i8*
%ret.sroa.12.0.copyload183.i.i.i.i.i.i = load i8* %ret.sroa.12.0..sroa_cast182.i.i.i.i.i.i, align 8, !noalias !622
%ret.sroa.17195.0..sroa_idx201.i.i.i.i.i.i = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %2, i64 0, i32 2, i64 1
%ret.sroa.17195.0..sroa_cast202.i.i.i.i.i.i = bitcast i64* %ret.sroa.17195.0..sroa_idx201.i.i.i.i.i.i to %"1.std::io::error::Custom"**
%ret.sroa.17195.0.copyload203.i.i.i.i.i.i = load %"1.std::io::error::Custom"** %ret.sroa.17195.0..sroa_cast202.i.i.i.i.i.i, align 8, !noalias !622
call void @llvm.lifetime.end(i64 24, i8* %38), !noalias !622
%.pre26.i.i.i.i.i = load i8* %25, align 8, !noalias !622
%phitmp.i.i.i.i.i = icmp eq i8 %.pre26.i.i.i.i.i, 1
%64 = load i64* %22, align 8, !range !565, !noalias !622
%cond.i132.i.i.i.i.i.i = icmp eq i64 %64, 1
%or.cond267.i.i.i.i.i.i = and i1 %phitmp.i.i.i.i.i, %cond.i132.i.i.i.i.i.i
br i1 %or.cond267.i.i.i.i.i.i, label %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i"
enum-iter-variant-1.i.i.i135.i.i.i.i.i.i: ; preds = %clean_ast_27257_13.i.i.i.i.i.i
%65 = load %"1.std::io::error::Custom"** %27, align 8, !noalias !622
%66 = icmp eq %"1.std::io::error::Custom"* %65, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %66, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i", label %cond.i.i.i.i136.i.i.i.i.i.i
cond.i.i.i.i136.i.i.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i
%67 = getelementptr inbounds %"1.std::io::error::Custom"* %65, i64 0, i32 1, i32 0
%68 = load i8** %67, align 8, !noalias !619
%69 = icmp eq i8* %68, inttoptr (i64 2097865012304223517 to i8*)
br i1 %69, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i, label %cond.i.i.i.i.i.i137.i.i.i.i.i.i
cond.i.i.i.i.i.i137.i.i.i.i.i.i: ; preds = %cond.i.i.i.i136.i.i.i.i.i.i
%70 = getelementptr inbounds %"1.std::io::error::Custom"* %65, i64 0, i32 1, i32 1
%71 = load void (i8*)*** %70, align 8, !noalias !619
%72 = load void (i8*)** %71, align 8, !noalias !619
invoke void %72(i8* %68)
to label %.noexc5.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
.noexc5.i.i.i.i: ; preds = %cond.i.i.i.i.i.i137.i.i.i.i.i.i
%73 = bitcast void (i8*)*** %70 to i64**
%74 = load i64** %73, align 8, !noalias !619
%75 = getelementptr inbounds i64* %74, i64 1
%76 = load i64* %75, align 8, !noalias !619
%77 = icmp eq i64 %76, 0
br i1 %77, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i, label %cond2.i.i.i.i.i.i138.i.i.i.i.i.i
cond2.i.i.i.i.i.i138.i.i.i.i.i.i: ; preds = %.noexc5.i.i.i.i
%78 = getelementptr inbounds i64* %74, i64 2
%79 = load i64* %78, align 8, !noalias !619
%80 = icmp ult i64 %79, 17
br i1 %80, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i141.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i139.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i139.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i138.i.i.i.i.i.i
%81 = call i64 @llvm.cttz.i64(i64 %79, i1 false) #20
%82 = trunc i64 %81 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i141.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i141.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i139.i.i.i.i.i.i, %cond2.i.i.i.i.i.i138.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i140.i.i.i.i.i.i = phi i32 [ %82, %else-block.i.i.i.i.i.i.i.i.i.i139.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i138.i.i.i.i.i.i ]
invoke void @je_sdallocx(i8* %68, i64 %76, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i140.i.i.i.i.i.i)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i141.i.i.i.i.i.i, %.noexc5.i.i.i.i, %cond.i.i.i.i136.i.i.i.i.i.i
%83 = getelementptr inbounds %"1.std::io::error::Custom"* %65, i64 0, i32 0
invoke void @je_sdallocx(i8* %83, i64 24, i32 0)
to label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i" unwind label %unwind_custom_.nonloopexit.i.i.i.i
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit143.i.i.i.i.i.i": ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i, %clean_ast_27257_13.i.i.i.i.i.i, %clean_ast_27257_13.i.thread.i.i.i.i.i
%written.0248.i.i24.i10.i.i.i38 = phi i64 [ %written.0248.i.i24.i10.i.i.i.lcssa32, %clean_ast_27257_13.i.thread.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i.lcssa34, %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i.lcssa34, %clean_ast_27257_13.i.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i.lcssa34, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i ]
%ret.sroa.12.0.copyload225.i30.i.i.i.i.i = phi i8 [ %.sroa.4.sroa.0.0.copyload.i.i.i.i.i.i, %clean_ast_27257_13.i.thread.i.i.i.i.i ], [ %ret.sroa.12.0.copyload183.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i ], [ %ret.sroa.12.0.copyload183.i.i.i.i.i.i, %clean_ast_27257_13.i.i.i.i.i.i ], [ %ret.sroa.12.0.copyload183.i.i.i.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i ]
%ret.sroa.17195.0.copyload227.i29.i.i.i.i.i = phi %"1.std::io::error::Custom"* [ %.sroa.4.sroa.5.0.copyload.i.i.i.i.i.i, %clean_ast_27257_13.i.thread.i.i.i.i.i ], [ %ret.sroa.17195.0.copyload203.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i135.i.i.i.i.i.i ], [ %ret.sroa.17195.0.copyload203.i.i.i.i.i.i, %clean_ast_27257_13.i.i.i.i.i.i ], [ %ret.sroa.17195.0.copyload203.i.i.i.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i ]
call void @llvm.lifetime.end(i64 24, i8* %17), !noalias !622
br label %while_exit.i.i.i.i.i.i
join.i.i.i.i.i.i: ; preds = %normal-return11.i.i.i.i.i.i
%.pre.i.i.i.i.i.i = load i64* %22, align 8, !noalias !622
%cond.i144.i.i.i.i.i.i = icmp eq i64 %.pre.i.i.i.i.i.i, 1
%84 = load i8* %25, align 8, !noalias !622
%cond.i.i.i145.i.i.i.i.i.i = icmp eq i8 %84, 1
%or.cond268.i.i.i.i.i.i = and i1 %cond.i144.i.i.i.i.i.i, %cond.i.i.i145.i.i.i.i.i.i
br i1 %or.cond268.i.i.i.i.i.i, label %enum-iter-variant-1.i.i.i147.i.i.i.i.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i"
enum-iter-variant-1.i.i.i147.i.i.i.i.i.i: ; preds = %join.i.i.i.i.i.i
%85 = load %"1.std::io::error::Custom"** %27, align 8, !noalias !622
%86 = icmp eq %"1.std::io::error::Custom"* %85, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %86, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i", label %cond.i.i.i.i148.i.i.i.i.i.i
cond.i.i.i.i148.i.i.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i147.i.i.i.i.i.i
%87 = getelementptr inbounds %"1.std::io::error::Custom"* %85, i64 0, i32 1, i32 0
%88 = load i8** %87, align 8, !noalias !619
%89 = icmp eq i8* %88, inttoptr (i64 2097865012304223517 to i8*)
br i1 %89, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i, label %cond.i.i.i.i.i.i149.i.i.i.i.i.i
cond.i.i.i.i.i.i149.i.i.i.i.i.i: ; preds = %cond.i.i.i.i148.i.i.i.i.i.i
%90 = getelementptr inbounds %"1.std::io::error::Custom"* %85, i64 0, i32 1, i32 1
%91 = load void (i8*)*** %90, align 8, !noalias !619
%92 = load void (i8*)** %91, align 8, !noalias !619
invoke void %92(i8* %88)
to label %.noexc8.i.i.i.i unwind label %unwind_custom_.loopexit.i.i.i.i
.noexc8.i.i.i.i: ; preds = %cond.i.i.i.i.i.i149.i.i.i.i.i.i
%93 = bitcast void (i8*)*** %90 to i64**
%94 = load i64** %93, align 8, !noalias !619
%95 = getelementptr inbounds i64* %94, i64 1
%96 = load i64* %95, align 8, !noalias !619
%97 = icmp eq i64 %96, 0
br i1 %97, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i, label %cond2.i.i.i.i.i.i150.i.i.i.i.i.i
cond2.i.i.i.i.i.i150.i.i.i.i.i.i: ; preds = %.noexc8.i.i.i.i
%98 = getelementptr inbounds i64* %94, i64 2
%99 = load i64* %98, align 8, !noalias !619
%100 = icmp ult i64 %99, 17
br i1 %100, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i153.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i151.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i151.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i150.i.i.i.i.i.i
%101 = call i64 @llvm.cttz.i64(i64 %99, i1 false) #20
%102 = trunc i64 %101 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i153.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i153.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i151.i.i.i.i.i.i, %cond2.i.i.i.i.i.i150.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i152.i.i.i.i.i.i = phi i32 [ %102, %else-block.i.i.i.i.i.i.i.i.i.i151.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i150.i.i.i.i.i.i ]
invoke void @je_sdallocx(i8* %88, i64 %96, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i152.i.i.i.i.i.i)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i unwind label %unwind_custom_.loopexit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i153.i.i.i.i.i.i, %.noexc8.i.i.i.i, %cond.i.i.i.i148.i.i.i.i.i.i
%103 = getelementptr inbounds %"1.std::io::error::Custom"* %85, i64 0, i32 0
invoke void @je_sdallocx(i8* %103, i64 24, i32 0)
to label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i" unwind label %unwind_custom_.loopexit.i.i.i.i
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i": ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i, %enum-iter-variant-1.i.i.i147.i.i.i.i.i.i, %join.i.i.i.i.i.i, %join.thread.i.i.i.i.i.i
%written.1266.i.i.i.i.i.i = phi i64 [ %37, %join.thread.i.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i, %join.i.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i, %enum-iter-variant-1.i.i.i147.i.i.i.i.i.i ], [ %written.0248.i.i24.i10.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i ]
call void @llvm.lifetime.end(i64 24, i8* %17), !noalias !622
%104 = icmp ugt i64 %15, %written.1266.i.i.i.i.i.i
br i1 %104, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.i.i.i.i", label %while_exit.i.i.i.i.i.i.loopexit
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.i.i.i.i": ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.i.i.i.i.i"
%.pre.i.i.i.i.i = load i8* %12, align 1, !alias.scope !631, !noalias !619
call void @llvm.lifetime.start(i64 24, i8* %17), !noalias !622
%not.cond.i82.i.i.i.i.i.i = icmp eq i8 %.pre.i.i.i.i.i, 1
br i1 %not.cond.i82.i.i.i.i.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i", label %match_else.i.i.i.i.i.i.i
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.normal-return1.i.i_crit_edge.i.i.i.i": ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit155.i.normal-return.i_crit_edge.i.i.i.i.i"
%.pre.i.i.i.i = load i64* %14, align 8, !alias.scope !623, !noalias !628
%105 = icmp ult i64 %.pre.i.i.i.i, %written.1266.i.i.i.i.i.i
br i1 %105, label %then-block-27473-.i.i.i.i.i.i.i.i.i, label %normal-return2.i.i.i.i.i.i
normal-return22.i.i.i.i.i.i: ; preds = %while_exit.i.i.i.i.i.i
%106 = load i8** %20, align 8, !alias.scope !634, !noalias !637, !nonnull !557
%107 = getelementptr inbounds i8* %106, i64 %written.0237.i.i.i.i.i.i
%108 = sub i64 %15, %written.0237.i.i.i.i.i.i
call void @llvm.memmove.p0i8.p0i8.i64(i8* %106, i8* %107, i64 %108, i32 1, i1 false), !noalias !619
br label %next-block.i.i.i.i.i.i
next-block.i.i.i.i.i.i: ; preds = %normal-return22.i.i.i.i.i.i, %while_exit.i.i.i.i.i.i, %then-block-27205-.i.i.i.i.i
%ret.sroa.0.0.222263.i.i.i.i.i.i = phi i64 [ %ret.sroa.0.0.222.i.i.i.i.i.i, %normal-return22.i.i.i.i.i.i ], [ %ret.sroa.0.0.222.i.i.i.i.i.i, %while_exit.i.i.i.i.i.i ], [ 0, %then-block-27205-.i.i.i.i.i ]
%ret.sroa.12.0.copyload224261.i.i.i.i.i.i = phi i8 [ %ret.sroa.12.0.copyload224.i.i.i.i.i.i, %normal-return22.i.i.i.i.i.i ], [ %ret.sroa.12.0.copyload224.i.i.i.i.i.i, %while_exit.i.i.i.i.i.i ], [ undef, %then-block-27205-.i.i.i.i.i ]
%ret.sroa.17195.0.copyload226259.i.i.i.i.i.i = phi %"1.std::io::error::Custom"* [ %ret.sroa.17195.0.copyload226.i.i.i.i.i.i, %normal-return22.i.i.i.i.i.i ], [ %ret.sroa.17195.0.copyload226.i.i.i.i.i.i, %while_exit.i.i.i.i.i.i ], [ %ret.sroa.17195.0.copyload198.i.i.i.i.i.i, %then-block-27205-.i.i.i.i.i ]
%.pre-phi.i.i.i.i.i.i = phi i64 [ %108, %normal-return22.i.i.i.i.i.i ], [ %15, %while_exit.i.i.i.i.i.i ], [ 0, %then-block-27205-.i.i.i.i.i ]
%109 = load i64* %14, align 8, !alias.scope !639, !noalias !619
%110 = icmp ugt i64 %109, %.pre-phi.i.i.i.i.i.i
br i1 %110, label %while_body.lr.ph.i.i.i.i.i.i.i, label %"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E.exit.i.i.i.i.i"
while_body.lr.ph.i.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i
store i64 %.pre-phi.i.i.i.i.i.i, i64* %14, align 8, !alias.scope !639, !noalias !619
br label %"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E.exit.i.i.i.i.i"
"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E.exit.i.i.i.i.i": ; preds = %while_body.lr.ph.i.i.i.i.i.i.i, %next-block.i.i.i.i.i.i
%notlhs.i.i.i.i.i = icmp ne i64 %ret.sroa.0.0.222263.i.i.i.i.i.i, 1
%notrhs.i.i.i.i.i = icmp ne i8 %ret.sroa.12.0.copyload224261.i.i.i.i.i.i, 1
%or.cond.not.i.i.i.i.i = or i1 %notlhs.i.i.i.i.i, %notrhs.i.i.i.i.i
%111 = icmp eq %"1.std::io::error::Custom"* %ret.sroa.17195.0.copyload226259.i.i.i.i.i.i, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
%or.cond11.i.i.i.i.i = or i1 %or.cond.not.i.i.i.i.i, %111
br i1 %or.cond11.i.i.i.i.i, label %normal-return.i.i.i.i, label %cond.i.i.i.i.i.i.i.i.i
cond.i.i.i.i.i.i.i.i.i: ; preds = %"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E.exit.i.i.i.i.i"
%112 = getelementptr inbounds %"1.std::io::error::Custom"* %ret.sroa.17195.0.copyload226259.i.i.i.i.i.i, i64 0, i32 1, i32 0
%113 = load i8** %112, align 8
%114 = icmp eq i8* %113, inttoptr (i64 2097865012304223517 to i8*)
br i1 %114, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i, label %cond.i.i.i.i.i.i.i.i.i.i.i
cond.i.i.i.i.i.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i.i.i.i
%115 = getelementptr inbounds %"1.std::io::error::Custom"* %ret.sroa.17195.0.copyload226259.i.i.i.i.i.i, i64 0, i32 1, i32 1
%116 = load void (i8*)*** %115, align 8
%117 = load void (i8*)** %116, align 8
invoke void %117(i8* %113)
to label %.noexc11.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
.noexc11.i.i.i.i: ; preds = %cond.i.i.i.i.i.i.i.i.i.i.i
%118 = bitcast void (i8*)*** %115 to i64**
%119 = load i64** %118, align 8
%120 = getelementptr inbounds i64* %119, i64 1
%121 = load i64* %120, align 8
%122 = icmp eq i64 %121, 0
br i1 %122, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i, label %cond2.i.i.i.i.i.i.i.i.i.i.i
cond2.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.noexc11.i.i.i.i
%123 = getelementptr inbounds i64* %119, i64 2
%124 = load i64* %123, align 8
%125 = icmp ult i64 %124, 17
br i1 %125, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i.i.i.i.i.i
%126 = call i64 @llvm.cttz.i64(i64 %124, i1 false) #20
%127 = trunc i64 %126 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i = phi i32 [ %127, %else-block.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i.i.i.i.i.i ]
invoke void @je_sdallocx(i8* %113, i64 %121, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i)
to label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i.i.i.i.i, %.noexc11.i.i.i.i, %cond.i.i.i.i.i.i.i.i.i
%128 = getelementptr inbounds %"1.std::io::error::Custom"* %ret.sroa.17195.0.copyload226259.i.i.i.i.i.i, i64 0, i32 0
invoke void @je_sdallocx(i8* %128, i64 24, i32 0)
to label %normal-return.i.i.i.i unwind label %unwind_custom_.nonloopexit.i.i.i.i
normal-return.i.i.i.i: ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i, %"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E.exit.i.i.i.i.i", %cond.i.i.i.i
%129 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 2
%130 = load i64* %129, align 8, !alias.scope !642
switch i64 %130, label %then-block-28382-.i.i.i.i.i.i.i [
i64 2097865012304223517, label %"_ZN89core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$9drop.899417h3332342a8ca0acf3E.exit"
i64 0, label %"_ZN89core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$9drop.899417h3332342a8ca0acf3E.exit"
]
then-block-28382-.i.i.i.i.i.i.i: ; preds = %normal-return.i.i.i.i
%131 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0
%132 = load i8** %131, align 8, !alias.scope !642
call void @je_sdallocx(i8* %132, i64 %130, i32 0)
br label %"_ZN89core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$9drop.899417h3332342a8ca0acf3E.exit"
unwind_custom_.loopexit.i.i.i.i: ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i154.i.i.i.i.i.i, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i153.i.i.i.i.i.i, %cond.i.i.i.i.i.i149.i.i.i.i.i.i
%lpad.loopexit.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_custom_.body.i.i.i.i
unwind_custom_.nonloopexit.i.i.i.i: ; preds = %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i.i.i.i.i.i, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i.i.i.i.i.i, %cond.i.i.i.i.i.i.i.i.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i142.i.i.i.i.i.i, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i141.i.i.i.i.i.i, %cond.i.i.i.i.i.i137.i.i.i.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i106.i.i.i.i.i.i, %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i105.i.i.i.i.i.i, %cond.i.i.i.i.i.i101.i.i.i.i.i.i
%lpad.nonloopexit.i.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_custom_.body.i.i.i.i
unwind_custom_.body.i.i.i.i: ; preds = %unwind_custom_.nonloopexit.i.i.i.i, %unwind_custom_.loopexit.i.i.i.i, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit94.i.i.i.i.i.i"
%eh.lpad-body.i.i.i.i = phi { i8*, i32 } [ %.fca.1.insert.i.i.i.i.i.i, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit94.i.i.i.i.i.i" ], [ %lpad.loopexit.i.i.i.i, %unwind_custom_.loopexit.i.i.i.i ], [ %lpad.nonloopexit.i.i.i.i, %unwind_custom_.nonloopexit.i.i.i.i ]
%133 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 2
%134 = load i64* %133, align 8, !alias.scope !645
switch i64 %134, label %then-block-28382-.i.i.i14.i.i.i.i [
i64 2097865012304223517, label %"_ZN61std..io..buffered..BufWriter$LT$std..io..stdio..StdoutRaw$GT$9drop.917317h4465ca80bea1bcbaE.exit15.i.i.i.i"
i64 0, label %"_ZN61std..io..buffered..BufWriter$LT$std..io..stdio..StdoutRaw$GT$9drop.917317h4465ca80bea1bcbaE.exit15.i.i.i.i"
]
then-block-28382-.i.i.i14.i.i.i.i: ; preds = %unwind_custom_.body.i.i.i.i
%135 = getelementptr inbounds %"1.std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::buffered::LineWriter<std::io::stdio::StdoutRaw>>>"* %0, i64 0, i32 2, i32 1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0
%136 = load i8** %135, align 8, !alias.scope !645
call void @je_sdallocx(i8* %136, i64 %134, i32 0)
br label %"_ZN61std..io..buffered..BufWriter$LT$std..io..stdio..StdoutRaw$GT$9drop.917317h4465ca80bea1bcbaE.exit15.i.i.i.i"
"_ZN61std..io..buffered..BufWriter$LT$std..io..stdio..StdoutRaw$GT$9drop.917317h4465ca80bea1bcbaE.exit15.i.i.i.i": ; preds = %then-block-28382-.i.i.i14.i.i.i.i, %unwind_custom_.body.i.i.i.i, %unwind_custom_.body.i.i.i.i
resume { i8*, i32 } %eh.lpad-body.i.i.i.i
"_ZN89core..cell..RefCell$LT$std..io..buffered..LineWriter$LT$std..io..stdio..StdoutRaw$GT$$GT$9drop.899417h3332342a8ca0acf3E.exit": ; preds = %"_ZN42Box$LT$std..sys..mutex..ReentrantMutex$GT$9drop.897317h2635371239400507E.exit", %normal-return.i.i.i.i, %normal-return.i.i.i.i, %then-block-28382-.i.i.i.i.i.i.i
ret void
}
declare void @je_sdallocx(i8*, i64, i32) unnamed_addr #7
declare void @_ZN2io5stdio15StdoutRaw.Write5write20hcc464eae5d0b6546HNgE(%"2.core::result::Result<usize, std::io::error::Error>"* noalias nocapture sret dereferenceable(24), %"1.std::io::stdio::StdoutRaw"* noalias, { i8*, i64 }* noalias nocapture dereferenceable(16)) unnamed_addr #7
declare i8 @_ZN2io5error5Error4kind20h100fd7139c19c511vpgE(%"1.std::io::error::Error"* noalias readonly dereferenceable(16)) unnamed_addr #7
; Function Attrs: uwtable
define internal fastcc void @_ZN2io5error5Error3new20h1138840364300435787E(%"1.std::io::error::Error"* noalias nocapture sret dereferenceable(16), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%arg.i = alloca %str_slice, align 8
%.sroa.6 = alloca [7 x i8], align 1
%2 = alloca { i8*, void (i8*)** }, align 8
%3 = getelementptr inbounds %"1.std::io::error::Error"* %0, i64 0, i32 0, i32 2
%.sroa.6.0..sroa_idx17 = getelementptr inbounds [7 x i8]* %.sroa.6, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.6.0..sroa_idx17)
%4 = bitcast { i8*, void (i8*)** }* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %4)
%5 = bitcast %str_slice* %1 to i8*
%6 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %6), !noalias !648
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %5, i64 16, i32 8, i1 false)
call void @"_ZN5error101Box$LT$Error$u2b$$u20$Send$u20$$u2b$$u20$Sync$u20$$u2b$$u20$$u27$a$GT$.From$LT$$RF$$u27$b$u20$str$GT$4from20h02e7e94c772d0d618daE"({ i8*, void (i8*)** }* noalias nocapture sret dereferenceable(16) %2, %str_slice* noalias nocapture dereferenceable(16) %arg.i), !noalias !652
call void @llvm.lifetime.end(i64 16, i8* %6), !noalias !648
%7 = getelementptr inbounds { i8*, void (i8*)** }* %2, i64 0, i32 0
%8 = load i8** %7, align 8
%9 = getelementptr inbounds { i8*, void (i8*)** }* %2, i64 0, i32 1
%10 = load void (i8*)*** %9, align 8
%11 = invoke i8* @je_mallocx(i64 24, i32 0)
to label %.noexc.i unwind label %unwind_custom_.i, !noalias !653
.noexc.i: ; preds = %entry-block
%12 = icmp eq i8* %11, null
br i1 %12, label %then-block-27855-.i.i, label %"_ZN5boxed12Box$LT$T$GT$3new21h17823068725172580697E.exit"
then-block-27855-.i.i: ; preds = %.noexc.i
invoke void @_ZN3oom20hca3a2a8b171e2cday6aE()
to label %.noexc3.i unwind label %unwind_custom_.i, !noalias !653
.noexc3.i: ; preds = %then-block-27855-.i.i
unreachable
unwind_custom_.i: ; preds = %then-block-27855-.i.i, %entry-block
%13 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%14 = icmp eq i8* %8, inttoptr (i64 2097865012304223517 to i8*)
br i1 %14, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit9.i, label %cond.i.i4.i
cond.i.i4.i: ; preds = %unwind_custom_.i
%15 = load void (i8*)** %10, align 8, !noalias !653
tail call void %15(i8* %8), !noalias !653
%16 = getelementptr inbounds void (i8*)** %10, i64 1
%17 = bitcast void (i8*)** %16 to i64*
%18 = load i64* %17, align 8, !noalias !653
%19 = icmp eq i64 %18, 0
br i1 %19, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit9.i, label %cond2.i.i5.i
cond2.i.i5.i: ; preds = %cond.i.i4.i
%20 = getelementptr inbounds void (i8*)** %10, i64 2
%21 = bitcast void (i8*)** %20 to i64*
%22 = load i64* %21, align 8, !noalias !653
%23 = icmp ult i64 %22, 17
br i1 %23, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i8.i, label %else-block.i.i.i.i.i.i6.i
else-block.i.i.i.i.i.i6.i: ; preds = %cond2.i.i5.i
%24 = tail call i64 @llvm.cttz.i64(i64 %22, i1 false) #20
%25 = trunc i64 %24 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i8.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i8.i: ; preds = %else-block.i.i.i.i.i.i6.i, %cond2.i.i5.i
%sret_slot.0.i.i.i.i.i.i7.i = phi i32 [ %25, %else-block.i.i.i.i.i.i6.i ], [ 0, %cond2.i.i5.i ]
tail call void @je_sdallocx(i8* %8, i64 %18, i32 %sret_slot.0.i.i.i.i.i.i7.i), !noalias !653
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit9.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit9.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i8.i, %cond.i.i4.i, %unwind_custom_.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.6.0..sroa_idx17)
resume { i8*, i32 } %13
"_ZN5boxed12Box$LT$T$GT$3new21h17823068725172580697E.exit": ; preds = %.noexc.i
store i8 14, i8* %11, align 8
%.sroa.6.0..sroa_raw_idx = getelementptr inbounds i8* %11, i64 1
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.6.0..sroa_raw_idx, i8* %.sroa.6.0..sroa_idx17, i64 7, i32 1, i1 false)
%.sroa.67.0..sroa_idx = getelementptr inbounds i8* %11, i64 8
%.sroa.67.0..sroa_cast10 = bitcast i8* %.sroa.67.0..sroa_idx to i8**
store i8* %8, i8** %.sroa.67.0..sroa_cast10, align 8
%.sroa.8.0..sroa_idx = getelementptr inbounds i8* %11, i64 16
%.sroa.8.0..sroa_cast14 = bitcast i8* %.sroa.8.0..sroa_idx to void (i8*)***
store void (i8*)** %10, void (i8*)*** %.sroa.8.0..sroa_cast14, align 8
call void @llvm.lifetime.end(i64 7, i8* %.sroa.6.0..sroa_idx17)
%26 = bitcast [1 x i64]* %3 to i8**
store i8* %11, i8** %26, align 8
call void @llvm.lifetime.end(i64 7, i8* %.sroa.6.0..sroa_idx17)
%27 = getelementptr inbounds %"1.std::io::error::Error"* %0, i64 0, i32 0, i32 0
store i8 1, i8* %27, align 8
tail call void @llvm.lifetime.end(i64 16, i8* %5)
ret void
}
; Function Attrs: cold noinline noreturn
declare void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48), { %str_slice, i32 }* noalias readonly dereferenceable(24)) unnamed_addr #9
declare i8 @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE(i64* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
declare noalias i8* @je_mallocx(i64, i32) unnamed_addr #7
; Function Attrs: cold noinline noreturn
declare void @_ZN3oom20hca3a2a8b171e2cday6aE() unnamed_addr #9
declare void @"_ZN5error101Box$LT$Error$u2b$$u20$Send$u20$$u2b$$u20$Sync$u20$$u2b$$u20$$u27$a$GT$.From$LT$$RF$$u27$b$u20$str$GT$4from20h02e7e94c772d0d618daE"({ i8*, void (i8*)** }* noalias nocapture sret dereferenceable(16), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #7
; Function Attrs: nounwind
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) unnamed_addr #1
; Function Attrs: uwtable
define internal fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24), %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16), { i8*, i64 }* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%3 = alloca %"2.core::result::Result<usize, std::io::error::Error>", align 8
%arg1 = alloca { i8*, i64 }, align 8
%const = alloca %str_slice, align 8
%4 = bitcast { i8*, i64 }* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds { i8*, i64 }* %2, i64 0, i32 0
%arg.sroa.4.0..sroa_idx67 = getelementptr inbounds { i8*, i64 }* %2, i64 0, i32 1
%arg.sroa.4.0.copyload84 = load i64* %arg.sroa.4.0..sroa_idx67, align 8
%5 = icmp eq i64 %arg.sroa.4.0.copyload84, 0
br i1 %5, label %while_exit, label %while_body.lr.ph
while_body.lr.ph: ; preds = %entry-block
%6 = bitcast %"2.core::result::Result<usize, std::io::error::Error>"* %3 to i8*
%7 = bitcast { i8*, i64 }* %arg1 to i8*
%8 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %3, i64 0, i32 0
%9 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %3, i64 0, i32 2, i64 0
%10 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %3, i64 0, i32 2
%11 = bitcast [2 x i64]* %10 to i8*
%12 = getelementptr inbounds %"2.core::result::Result<usize, std::io::error::Error>"* %3, i64 0, i32 2, i64 1
%13 = bitcast i64* %12 to %"1.std::io::error::Custom"**
%14 = bitcast [2 x i64]* %10 to %"1.std::io::error::Error"*
br label %while_body.outer
while_body.outer: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit", %while_body.lr.ph
%arg12.sroa.5.0.copyload.ph = phi i64 [ %90, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit" ], [ %arg.sroa.4.0.copyload84, %while_body.lr.ph ]
br label %while_body
while_exit.loopexit: ; preds = %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit"
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
%15 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* bitcast ({ i64, {}, [16 x i8] }* @const9023 to i8*), i64 24, i32 8, i1 false)
br label %clean_custom_10
while_body: ; preds = %while_body.outer, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.thread"
call void @llvm.lifetime.start(i64 24, i8* %6)
call void @llvm.lifetime.start(i64 16, i8* %7)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %4, i64 16, i32 8, i1 false)
call void @"_ZN2io5stdio30StdoutLock$LT$$u27$a$GT$.Write5write20ha9359db1417b5467tUgE"(%"2.core::result::Result<usize, std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %3, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %1, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg1)
call void @llvm.lifetime.end(i64 16, i8* %7)
%16 = load i64* %8, align 8, !range !565
%cond15 = icmp eq i64 %16, 0
br i1 %cond15, label %match_case, label %match_else
match_else: ; preds = %while_body
%17 = invoke i8 @_ZN2io5error5Error4kind20h100fd7139c19c511vpgE(%"1.std::io::error::Error"* noalias readonly dereferenceable(16) %14)
to label %normal-return8 unwind label %unwind_ast_28794_.loopexit
match_case: ; preds = %while_body
%18 = load i64* %9, align 8
%cond16 = icmp eq i64 %18, 0
br i1 %cond16, label %match_case7, label %match_else6
match_else6: ; preds = %match_case
%19 = icmp ult i64 %arg12.sroa.5.0.copyload.ph, %18
br i1 %19, label %then-block-27473-.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit"
then-block-27473-.i.i: ; preds = %match_else6
invoke void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @"_ZN5slice54_$u5b$T$u5d$.ops..Index$LT$ops..Range$LT$usize$GT$$GT$5index14_MSG_FILE_LINE20h6d1c158578d50c6aYHGE")
to label %.noexc unwind label %unwind_ast_28794_.nonloopexit
.noexc: ; preds = %then-block-27473-.i.i
unreachable
match_case7: ; preds = %match_case
%20 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %0, i64 0, i32 2
%21 = bitcast [2 x i64]* %20 to %"1.std::io::error::Error"*
%22 = bitcast %str_slice* %const to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %22, i8* bitcast (%str_slice* @const9210 to i8*), i64 16, i32 8, i1 false)
invoke fastcc void @_ZN2io5error5Error3new20h1138840364300435787E(%"1.std::io::error::Error"* noalias nocapture sret dereferenceable(16) %21, %str_slice* noalias nocapture dereferenceable(16) %const)
to label %normal-return9 unwind label %unwind_ast_28794_.nonloopexit
unwind_ast_28794_.loopexit: ; preds = %match_else
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_28794_
unwind_ast_28794_.nonloopexit: ; preds = %match_case7, %then-block-27473-.i.i
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_28794_
unwind_ast_28794_: ; preds = %unwind_ast_28794_.nonloopexit, %unwind_ast_28794_.loopexit
%lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %unwind_ast_28794_.loopexit ], [ %lpad.nonloopexit, %unwind_ast_28794_.nonloopexit ]
%23 = load i64* %8, align 8, !range !565
%cond.i30 = icmp eq i64 %23, 1
%24 = load i8* %11, align 8
%cond.i.i.i31 = icmp eq i8 %24, 1
%or.cond = and i1 %cond.i30, %cond.i.i.i31
br i1 %or.cond, label %enum-iter-variant-1.i.i.i33, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit41"
enum-iter-variant-1.i.i.i33: ; preds = %unwind_ast_28794_
%25 = load %"1.std::io::error::Custom"** %13, align 8
%26 = icmp eq %"1.std::io::error::Custom"* %25, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %26, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit41", label %cond.i.i.i.i34
cond.i.i.i.i34: ; preds = %enum-iter-variant-1.i.i.i33
%27 = getelementptr inbounds %"1.std::io::error::Custom"* %25, i64 0, i32 1, i32 0
%28 = load i8** %27, align 8
%29 = icmp eq i8* %28, inttoptr (i64 2097865012304223517 to i8*)
br i1 %29, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i40, label %cond.i.i.i.i.i.i35
cond.i.i.i.i.i.i35: ; preds = %cond.i.i.i.i34
%30 = getelementptr inbounds %"1.std::io::error::Custom"* %25, i64 0, i32 1, i32 1
%31 = load void (i8*)*** %30, align 8
%32 = load void (i8*)** %31, align 8
call void %32(i8* %28)
%33 = bitcast void (i8*)*** %30 to i64**
%34 = load i64** %33, align 8
%35 = getelementptr inbounds i64* %34, i64 1
%36 = load i64* %35, align 8
%37 = icmp eq i64 %36, 0
br i1 %37, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i40, label %cond2.i.i.i.i.i.i36
cond2.i.i.i.i.i.i36: ; preds = %cond.i.i.i.i.i.i35
%38 = getelementptr inbounds i64* %34, i64 2
%39 = load i64* %38, align 8
%40 = icmp ult i64 %39, 17
br i1 %40, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i39, label %else-block.i.i.i.i.i.i.i.i.i.i37
else-block.i.i.i.i.i.i.i.i.i.i37: ; preds = %cond2.i.i.i.i.i.i36
%41 = call i64 @llvm.cttz.i64(i64 %39, i1 false) #20
%42 = trunc i64 %41 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i39
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i39: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i37, %cond2.i.i.i.i.i.i36
%sret_slot.0.i.i.i.i.i.i.i.i.i.i38 = phi i32 [ %42, %else-block.i.i.i.i.i.i.i.i.i.i37 ], [ 0, %cond2.i.i.i.i.i.i36 ]
call void @je_sdallocx(i8* %28, i64 %36, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i38)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i40
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i40: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i39, %cond.i.i.i.i.i.i35, %cond.i.i.i.i34
%43 = getelementptr inbounds %"1.std::io::error::Custom"* %25, i64 0, i32 0
call void @je_sdallocx(i8* %43, i64 24, i32 0)
br label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit41"
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit41": ; preds = %unwind_ast_28794_, %enum-iter-variant-1.i.i.i33, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i40
call void @llvm.lifetime.end(i64 24, i8* %6)
call void @llvm.lifetime.end(i64 16, i8* %4)
resume { i8*, i32 } %lpad.phi
normal-return8: ; preds = %match_else
%cond73.i = icmp eq i8 %17, 15
br i1 %cond73.i, label %join, label %_ZN21std..io..error..Error9drop.904717h53ef7641f4d577efE.exit
_ZN21std..io..error..Error9drop.904717h53ef7641f4d577efE.exit: ; preds = %normal-return8
%44 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %0, i64 0, i32 2
%45 = bitcast [2 x i64]* %44 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %45, i8* %11, i64 16, i32 8, i1 false)
%46 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %0, i64 0, i32 0
store i64 1, i64* %46, align 8
call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 16, i32 8, i1 false)
br label %clean_ast_28794_11
normal-return9: ; preds = %match_case7
call void @llvm.lifetime.end(i64 16, i8* %22)
%47 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %0, i64 0, i32 0
store i64 1, i64* %47, align 8
br label %clean_ast_28794_11
clean_custom_10: ; preds = %while_exit, %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit54"
call void @llvm.lifetime.end(i64 16, i8* %4)
ret void
clean_ast_28794_11: ; preds = %_ZN21std..io..error..Error9drop.904717h53ef7641f4d577efE.exit, %normal-return9
%48 = load i64* %8, align 8, !range !565
%cond.i43 = icmp eq i64 %48, 1
%49 = load i8* %11, align 8
%cond.i.i.i44 = icmp eq i8 %49, 1
%or.cond89 = and i1 %cond.i43, %cond.i.i.i44
br i1 %or.cond89, label %enum-iter-variant-1.i.i.i46, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit54"
enum-iter-variant-1.i.i.i46: ; preds = %clean_ast_28794_11
%50 = load %"1.std::io::error::Custom"** %13, align 8
%51 = icmp eq %"1.std::io::error::Custom"* %50, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %51, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit54", label %cond.i.i.i.i47
cond.i.i.i.i47: ; preds = %enum-iter-variant-1.i.i.i46
%52 = getelementptr inbounds %"1.std::io::error::Custom"* %50, i64 0, i32 1, i32 0
%53 = load i8** %52, align 8
%54 = icmp eq i8* %53, inttoptr (i64 2097865012304223517 to i8*)
br i1 %54, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i53, label %cond.i.i.i.i.i.i48
cond.i.i.i.i.i.i48: ; preds = %cond.i.i.i.i47
%55 = getelementptr inbounds %"1.std::io::error::Custom"* %50, i64 0, i32 1, i32 1
%56 = load void (i8*)*** %55, align 8
%57 = load void (i8*)** %56, align 8
call void %57(i8* %53)
%58 = bitcast void (i8*)*** %55 to i64**
%59 = load i64** %58, align 8
%60 = getelementptr inbounds i64* %59, i64 1
%61 = load i64* %60, align 8
%62 = icmp eq i64 %61, 0
br i1 %62, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i53, label %cond2.i.i.i.i.i.i49
cond2.i.i.i.i.i.i49: ; preds = %cond.i.i.i.i.i.i48
%63 = getelementptr inbounds i64* %59, i64 2
%64 = load i64* %63, align 8
%65 = icmp ult i64 %64, 17
br i1 %65, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i52, label %else-block.i.i.i.i.i.i.i.i.i.i50
else-block.i.i.i.i.i.i.i.i.i.i50: ; preds = %cond2.i.i.i.i.i.i49
%66 = call i64 @llvm.cttz.i64(i64 %64, i1 false) #20
%67 = trunc i64 %66 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i52
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i52: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i50, %cond2.i.i.i.i.i.i49
%sret_slot.0.i.i.i.i.i.i.i.i.i.i51 = phi i32 [ %67, %else-block.i.i.i.i.i.i.i.i.i.i50 ], [ 0, %cond2.i.i.i.i.i.i49 ]
call void @je_sdallocx(i8* %53, i64 %61, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i51)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i53
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i53: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i52, %cond.i.i.i.i.i.i48, %cond.i.i.i.i47
%68 = getelementptr inbounds %"1.std::io::error::Custom"* %50, i64 0, i32 0
call void @je_sdallocx(i8* %68, i64 24, i32 0)
br label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit54"
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit54": ; preds = %clean_ast_28794_11, %enum-iter-variant-1.i.i.i46, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i53
call void @llvm.lifetime.end(i64 24, i8* %6)
br label %clean_custom_10
join: ; preds = %normal-return8
%.pre = load i64* %8, align 8
%cond.i = icmp eq i64 %.pre, 1
%69 = load i8* %11, align 8
%cond.i.i.i = icmp eq i8 %69, 1
%or.cond90 = and i1 %cond.i, %cond.i.i.i
br i1 %or.cond90, label %enum-iter-variant-1.i.i.i, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.thread"
enum-iter-variant-1.i.i.i: ; preds = %join
%70 = load %"1.std::io::error::Custom"** %13, align 8
%71 = icmp eq %"1.std::io::error::Custom"* %70, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %71, label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.thread", label %cond.i.i.i.i
cond.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i
%72 = getelementptr inbounds %"1.std::io::error::Custom"* %70, i64 0, i32 1, i32 0
%73 = load i8** %72, align 8
%74 = icmp eq i8* %73, inttoptr (i64 2097865012304223517 to i8*)
br i1 %74, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond.i.i.i.i.i.i
cond.i.i.i.i.i.i: ; preds = %cond.i.i.i.i
%75 = getelementptr inbounds %"1.std::io::error::Custom"* %70, i64 0, i32 1, i32 1
%76 = load void (i8*)*** %75, align 8
%77 = load void (i8*)** %76, align 8
call void %77(i8* %73)
%78 = bitcast void (i8*)*** %75 to i64**
%79 = load i64** %78, align 8
%80 = getelementptr inbounds i64* %79, i64 1
%81 = load i64* %80, align 8
%82 = icmp eq i64 %81, 0
br i1 %82, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond2.i.i.i.i.i.i
cond2.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i
%83 = getelementptr inbounds i64* %79, i64 2
%84 = load i64* %83, align 8
%85 = icmp ult i64 %84, 17
br i1 %85, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i
%86 = call i64 @llvm.cttz.i64(i64 %84, i1 false) #20
%87 = trunc i64 %86 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %87, %else-block.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i ]
call void @je_sdallocx(i8* %73, i64 %81, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, %cond.i.i.i.i.i.i, %cond.i.i.i.i
%88 = getelementptr inbounds %"1.std::io::error::Custom"* %70, i64 0, i32 0
call void @je_sdallocx(i8* %88, i64 24, i32 0)
br label %"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.thread"
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit.thread": ; preds = %join, %enum-iter-variant-1.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %6)
br label %while_body
"_ZN62core..result..Result$LT$usize$C$$u20$std..io..error..Error$GT$9drop.908917ha7ab5ad2bf959338E.exit": ; preds = %match_else6
%arg12.sroa.0.0.copyload = load i8** %arg.sroa.0.0..sroa_idx, align 8
%89 = getelementptr inbounds i8* %arg12.sroa.0.0.copyload, i64 %18
%90 = sub i64 %arg12.sroa.5.0.copyload.ph, %18
store i8* %89, i8** %arg.sroa.0.0..sroa_idx, align 8
store i64 %90, i64* %arg.sroa.4.0..sroa_idx67, align 8
call void @llvm.lifetime.end(i64 24, i8* %6)
%91 = icmp eq i64 %arg12.sroa.5.0.copyload.ph, %18
br i1 %91, label %while_exit.loopexit, label %while_body.outer
}
declare void @"_ZN2io5stdio30StdoutLock$LT$$u27$a$GT$.Write5write20ha9359db1417b5467tUgE"(%"2.core::result::Result<usize, std::io::error::Error>"* noalias nocapture sret dereferenceable(24), %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16), { i8*, i64 }* noalias nocapture dereferenceable(16)) unnamed_addr #7
declare zeroext i1 @_ZN2rt6unwind9panicking20hd406c1806cb00459vBwE() unnamed_addr #7
declare void @_ZN3sys5mutex14ReentrantMutex6unlock20h8dbd630e51296830R8tE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40)) unnamed_addr #7
declare i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #7
define internal void @"_ZN68std..io..Write..write_fmt..Adaptor$LT$std..io..stdio..StdoutLock$GT$9drop.926017h87e28e60a8bd9b1eE"(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* nocapture readonly) unnamed_addr #7 {
entry-block:
%1 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 0
%2 = load i64* %1, align 8, !range !565
%cond.i = icmp eq i64 %2, 1
br i1 %cond.i, label %enum-iter-variant-1.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i: ; preds = %entry-block
%3 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 2
%4 = bitcast [2 x i64]* %3 to i8*
%5 = load i8* %4, align 1, !range !558
%cond.i.i.i = icmp eq i8 %5, 1
br i1 %cond.i.i.i, label %enum-iter-variant-1.i.i.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i.i.i: ; preds = %enum-iter-variant-1.i
%6 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 2, i64 1
%7 = bitcast i64* %6 to %"1.std::io::error::Custom"**
%8 = load %"1.std::io::error::Custom"** %7, align 8
%9 = icmp eq %"1.std::io::error::Custom"* %8, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %9, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", label %cond.i.i.i.i
cond.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i
%10 = getelementptr inbounds %"1.std::io::error::Custom"* %8, i64 0, i32 1, i32 0
%11 = load i8** %10, align 8
%12 = icmp eq i8* %11, inttoptr (i64 2097865012304223517 to i8*)
br i1 %12, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond.i.i.i.i.i.i
cond.i.i.i.i.i.i: ; preds = %cond.i.i.i.i
%13 = getelementptr inbounds %"1.std::io::error::Custom"* %8, i64 0, i32 1, i32 1
%14 = load void (i8*)*** %13, align 8
%15 = load void (i8*)** %14, align 8
tail call void %15(i8* %11)
%16 = bitcast void (i8*)*** %13 to i64**
%17 = load i64** %16, align 8
%18 = getelementptr inbounds i64* %17, i64 1
%19 = load i64* %18, align 8
%20 = icmp eq i64 %19, 0
br i1 %20, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond2.i.i.i.i.i.i
cond2.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i
%21 = getelementptr inbounds i64* %17, i64 2
%22 = load i64* %21, align 8
%23 = icmp ult i64 %22, 17
br i1 %23, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i
%24 = tail call i64 @llvm.cttz.i64(i64 %22, i1 false) #20
%25 = trunc i64 %24 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %25, %else-block.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i ]
tail call void @je_sdallocx(i8* %11, i64 %19, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, %cond.i.i.i.i.i.i, %cond.i.i.i.i
%26 = getelementptr inbounds %"1.std::io::error::Custom"* %8, i64 0, i32 0
tail call void @je_sdallocx(i8* %26, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit": ; preds = %entry-block, %enum-iter-variant-1.i, %enum-iter-variant-1.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
ret void
}
; Function Attrs: uwtable
define internal i8 @"_ZN2io5Write9write_fmt41Adaptor$LT$$u27$a$C$$u20$T$GT$.fmt..Write9write_str20h3780506604220011635E"(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias nocapture dereferenceable(32), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%2 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%3 = alloca { i8*, i64 }, align 8
%.sroa.4 = alloca [2 x i64], align 8
%4 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%5 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 0
%6 = load %"1.std::io::stdio::StdoutLock"** %5, align 8, !nonnull !557
%7 = bitcast { i8*, i64 }* %3 to i8*
call void @llvm.lifetime.start(i64 16, i8* %7)
%8 = bitcast %str_slice* %1 to i8*
%9 = bitcast { i8*, i64 }* %3 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* %8, i64 16, i32 8, i1 false)
call fastcc void @_ZN2io5Write9write_all19h142830376185911687E(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %2, %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16) %6, { i8*, i64 }* noalias nocapture dereferenceable(16) %3)
call void @llvm.lifetime.end(i64 16, i8* %7)
%10 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %2, i64 0, i32 0
%11 = load i64* %10, align 8, !range !565
%cond = icmp eq i64 %11, 0
br i1 %cond, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", label %match_else
match_else: ; preds = %entry-block
%12 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %2, i64 0, i32 2
%.sroa.4.0..sroa_cast6 = bitcast [2 x i64]* %.sroa.4 to i8*
call void @llvm.lifetime.start(i64 16, i8* %.sroa.4.0..sroa_cast6)
%.sroa.4.8..sroa_idx = bitcast [2 x i64]* %12 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.4.0..sroa_cast6, i8* %.sroa.4.8..sroa_idx, i64 16, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.4.8..sroa_idx, i8 29, i64 16, i32 8, i1 false)
%13 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 0
%14 = load i64* %13, align 8, !range !565
%cond.i12 = icmp eq i64 %14, 1
%15 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 2
%16 = bitcast [2 x i64]* %15 to i8*
%17 = load i8* %16, align 1
%cond.i.i.i13 = icmp eq i8 %17, 1
%or.cond = and i1 %cond.i12, %cond.i.i.i13
br i1 %or.cond, label %enum-iter-variant-1.i.i.i15, label %join
enum-iter-variant-1.i.i.i15: ; preds = %match_else
%18 = getelementptr inbounds %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0, i64 0, i32 1, i32 2, i64 1
%19 = bitcast i64* %18 to %"1.std::io::error::Custom"**
%20 = load %"1.std::io::error::Custom"** %19, align 8
%21 = icmp eq %"1.std::io::error::Custom"* %20, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %21, label %join, label %cond.i.i.i.i16
cond.i.i.i.i16: ; preds = %enum-iter-variant-1.i.i.i15
%22 = getelementptr inbounds %"1.std::io::error::Custom"* %20, i64 0, i32 1, i32 0
%23 = load i8** %22, align 8
%24 = icmp eq i8* %23, inttoptr (i64 2097865012304223517 to i8*)
br i1 %24, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i22, label %cond.i.i.i.i.i.i17
cond.i.i.i.i.i.i17: ; preds = %cond.i.i.i.i16
%25 = getelementptr inbounds %"1.std::io::error::Custom"* %20, i64 0, i32 1, i32 1
%26 = load void (i8*)*** %25, align 8
%27 = load void (i8*)** %26, align 8
tail call void %27(i8* %23)
%28 = bitcast void (i8*)*** %25 to i64**
%29 = load i64** %28, align 8
%30 = getelementptr inbounds i64* %29, i64 1
%31 = load i64* %30, align 8
%32 = icmp eq i64 %31, 0
br i1 %32, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i22, label %cond2.i.i.i.i.i.i18
cond2.i.i.i.i.i.i18: ; preds = %cond.i.i.i.i.i.i17
%33 = getelementptr inbounds i64* %29, i64 2
%34 = load i64* %33, align 8
%35 = icmp ult i64 %34, 17
br i1 %35, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i21, label %else-block.i.i.i.i.i.i.i.i.i.i19
else-block.i.i.i.i.i.i.i.i.i.i19: ; preds = %cond2.i.i.i.i.i.i18
%36 = tail call i64 @llvm.cttz.i64(i64 %34, i1 false) #20
%37 = trunc i64 %36 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i21
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i21: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i19, %cond2.i.i.i.i.i.i18
%sret_slot.0.i.i.i.i.i.i.i.i.i.i20 = phi i32 [ %37, %else-block.i.i.i.i.i.i.i.i.i.i19 ], [ 0, %cond2.i.i.i.i.i.i18 ]
tail call void @je_sdallocx(i8* %23, i64 %31, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i20)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i22
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i22: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i21, %cond.i.i.i.i.i.i17, %cond.i.i.i.i16
%38 = getelementptr inbounds %"1.std::io::error::Custom"* %20, i64 0, i32 0
tail call void @je_sdallocx(i8* %38, i64 24, i32 0)
br label %join
join: ; preds = %match_else, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i22, %enum-iter-variant-1.i.i.i15
store i64 1, i64* %13, align 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %.sroa.4.0..sroa_cast6, i64 16, i32 8, i1 false)
call void @llvm.lifetime.end(i64 16, i8* %.sroa.4.0..sroa_cast6)
call void @llvm.memset.p0i8.i64(i8* %.sroa.4.8..sroa_idx, i8 29, i64 16, i32 8, i1 false)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit": ; preds = %join, %entry-block
%sret_slot.sroa.0.029 = phi i8 [ 0, %entry-block ], [ 1, %join ]
call void @llvm.lifetime.end(i64 24, i8* %4)
tail call void @llvm.lifetime.end(i64 16, i8* %8)
ret i8 %sret_slot.sroa.0.029
}
; Function Attrs: uwtable
define internal i8 @_ZN3fmt5Write10write_char21h10170236358955437752E(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias nocapture dereferenceable(32), i32) unnamed_addr #6 {
entry-block:
%utf_8 = alloca i32, align 4
%tmpcast = bitcast i32* %utf_8 to [4 x i8]*
%2 = alloca %str_slice, align 8
%3 = bitcast i32* %utf_8 to i8*
call void @llvm.lifetime.start(i64 4, i8* %3)
store i32 0, i32* %utf_8, align 4
%4 = icmp ult i32 %1, 128
br i1 %4, label %next.i.i, label %else-block.i.i
next.i.i: ; preds = %entry-block
%5 = trunc i32 %1 to i8
store i8 %5, i8* %3, align 4, !noalias !656
br label %"_ZN6option15Option$LT$T$GT$9unwrap_or21h14872513401380885711E.exit"
else-block.i.i: ; preds = %entry-block
%6 = icmp ult i32 %1, 2048
br i1 %6, label %next6.i.i, label %else-block8.i.i
next6.i.i: ; preds = %else-block.i.i
%7 = lshr i32 %1, 6
%.tr58.i.i = trunc i32 %7 to i8
%8 = and i8 %.tr58.i.i, 31
%9 = or i8 %8, -64
store i8 %9, i8* %3, align 4, !noalias !656
%.tr59.i.i = trunc i32 %1 to i8
%10 = and i8 %.tr59.i.i, 63
%11 = or i8 %10, -128
%12 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %11, i8* %12, align 1, !noalias !656
br label %"_ZN6option15Option$LT$T$GT$9unwrap_or21h14872513401380885711E.exit"
else-block8.i.i: ; preds = %else-block.i.i
%13 = icmp ult i32 %1, 65536
br i1 %13, label %next16.i.i, label %next26.i.i
next16.i.i: ; preds = %else-block8.i.i
%14 = lshr i32 %1, 12
%.tr55.i.i = trunc i32 %14 to i8
%15 = and i8 %.tr55.i.i, 15
%16 = or i8 %15, -32
store i8 %16, i8* %3, align 4, !noalias !656
%17 = lshr i32 %1, 6
%.tr56.i.i = trunc i32 %17 to i8
%18 = and i8 %.tr56.i.i, 63
%19 = or i8 %18, -128
%20 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %19, i8* %20, align 1, !noalias !656
%.tr57.i.i = trunc i32 %1 to i8
%21 = and i8 %.tr57.i.i, 63
%22 = or i8 %21, -128
%23 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %22, i8* %23, align 2, !noalias !656
br label %"_ZN6option15Option$LT$T$GT$9unwrap_or21h14872513401380885711E.exit"
next26.i.i: ; preds = %else-block8.i.i
%24 = lshr i32 %1, 18
%.tr.i.i = trunc i32 %24 to i8
%25 = and i8 %.tr.i.i, 7
%26 = or i8 %25, -16
store i8 %26, i8* %3, align 4, !noalias !656
%27 = lshr i32 %1, 12
%.tr52.i.i = trunc i32 %27 to i8
%28 = and i8 %.tr52.i.i, 63
%29 = or i8 %28, -128
%30 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %29, i8* %30, align 1, !noalias !656
%31 = lshr i32 %1, 6
%.tr53.i.i = trunc i32 %31 to i8
%32 = and i8 %.tr53.i.i, 63
%33 = or i8 %32, -128
%34 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %33, i8* %34, align 2, !noalias !656
%.tr54.i.i = trunc i32 %1 to i8
%35 = and i8 %.tr54.i.i, 63
%36 = or i8 %35, -128
%37 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 3
store i8 %36, i8* %37, align 1, !noalias !656
br label %"_ZN6option15Option$LT$T$GT$9unwrap_or21h14872513401380885711E.exit"
"_ZN6option15Option$LT$T$GT$9unwrap_or21h14872513401380885711E.exit": ; preds = %next.i.i, %next6.i.i, %next16.i.i, %next26.i.i
%.sroa.9.0.copyload31 = phi i64 [ 1, %next.i.i ], [ 2, %next6.i.i ], [ 3, %next16.i.i ], [ 4, %next26.i.i ]
%38 = bitcast %str_slice* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %38)
%39 = bitcast %str_slice* %2 to i32**
store i32* %utf_8, i32** %39, align 8
%__fat_ptr.sroa.4.0..sroa_idx12 = getelementptr inbounds %str_slice* %2, i64 0, i32 1
store i64 %.sroa.9.0.copyload31, i64* %__fat_ptr.sroa.4.0..sroa_idx12, align 8
%40 = call i8 @"_ZN2io5Write9write_fmt41Adaptor$LT$$u27$a$C$$u20$T$GT$.fmt..Write9write_str20h3780506604220011635E"(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias dereferenceable(32) %0, %str_slice* noalias nocapture dereferenceable(16) %2)
call void @llvm.lifetime.end(i64 16, i8* %38)
call void @llvm.lifetime.end(i64 4, i8* %3)
ret i8 %40
}
; Function Attrs: uwtable
define internal i8 @_ZN3fmt5Write9write_fmt20h5062359944577624900E(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias dereferenceable(32), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #6 {
entry-block:
%addr_of = alloca %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>", align 8
%__coerce_target = alloca { i8*, void (i8*)** }, align 8
%arg = alloca %"2.core::fmt::Arguments", align 8
%2 = ptrtoint %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %0 to i64
%3 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of to i8*
call void @llvm.lifetime.start(i64 8, i8* %3)
%4 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of to i64*
store i64 %2, i64* %4, align 8
%5 = bitcast { i8*, void (i8*)** }* %__coerce_target to %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"**
store %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of, %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"** %5, align 8
%6 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target, i64 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %"2.core::fmt::Arguments"*)* }* @vtable9341, i64 0, i32 0), void (i8*)*** %6, align 8
%7 = bitcast %"2.core::fmt::Arguments"* %arg to i8*
call void @llvm.lifetime.start(i64 48, i8* %7)
%8 = bitcast %"2.core::fmt::Arguments"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 48, i32 8, i1 false)
%9 = call i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg)
call void @llvm.lifetime.end(i64 48, i8* %7)
%10 = bitcast { i8*, void (i8*)** }* %__coerce_target to i8*
call void @llvm.lifetime.end(i64 16, i8* %10)
call void @llvm.lifetime.end(i64 8, i8* %3)
call void @llvm.lifetime.end(i64 48, i8* %8)
ret i8 %9
}
; Function Attrs: nounwind readnone
define internal void @_ZN2i89drop.933817h33975eb8c0aff282E(i8* nocapture) unnamed_addr #12 {
entry-block:
ret void
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str20h5673162548361446408E"(%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* noalias nocapture readonly dereferenceable(8), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%arg = alloca %str_slice, align 8
%2 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %0, i64 0, i32 0
%3 = load %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"** %2, align 8, !nonnull !557
%4 = bitcast %str_slice* %arg to i8*
call void @llvm.lifetime.start(i64 16, i8* %4)
%5 = bitcast %str_slice* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %5, i64 16, i32 8, i1 false)
%6 = call i8 @"_ZN2io5Write9write_fmt41Adaptor$LT$$u27$a$C$$u20$T$GT$.fmt..Write9write_str20h3780506604220011635E"(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias dereferenceable(32) %3, %str_slice* noalias nocapture dereferenceable(16) %arg)
call void @llvm.lifetime.end(i64 16, i8* %4)
tail call void @llvm.lifetime.end(i64 16, i8* %5)
ret i8 %6
}
; Function Attrs: uwtable
define internal i8 @_ZN3fmt5Write10write_char20h5036093722373872960E(%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* noalias nocapture readonly dereferenceable(8), i32) unnamed_addr #6 {
entry-block:
%arg.i = alloca %str_slice, align 8
%utf_8 = alloca i32, align 4
%tmpcast = bitcast i32* %utf_8 to [4 x i8]*
%2 = bitcast i32* %utf_8 to i8*
call void @llvm.lifetime.start(i64 4, i8* %2)
store i32 0, i32* %utf_8, align 4
%3 = icmp ult i32 %1, 128
br i1 %3, label %next.i.i, label %else-block.i.i
next.i.i: ; preds = %entry-block
%4 = trunc i32 %1 to i8
store i8 %4, i8* %2, align 4, !noalias !663
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
else-block.i.i: ; preds = %entry-block
%5 = icmp ult i32 %1, 2048
br i1 %5, label %next6.i.i, label %else-block8.i.i
next6.i.i: ; preds = %else-block.i.i
%6 = lshr i32 %1, 6
%.tr58.i.i = trunc i32 %6 to i8
%7 = and i8 %.tr58.i.i, 31
%8 = or i8 %7, -64
store i8 %8, i8* %2, align 4, !noalias !663
%.tr59.i.i = trunc i32 %1 to i8
%9 = and i8 %.tr59.i.i, 63
%10 = or i8 %9, -128
%11 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %10, i8* %11, align 1, !noalias !663
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
else-block8.i.i: ; preds = %else-block.i.i
%12 = icmp ult i32 %1, 65536
br i1 %12, label %next16.i.i, label %next26.i.i
next16.i.i: ; preds = %else-block8.i.i
%13 = lshr i32 %1, 12
%.tr55.i.i = trunc i32 %13 to i8
%14 = and i8 %.tr55.i.i, 15
%15 = or i8 %14, -32
store i8 %15, i8* %2, align 4, !noalias !663
%16 = lshr i32 %1, 6
%.tr56.i.i = trunc i32 %16 to i8
%17 = and i8 %.tr56.i.i, 63
%18 = or i8 %17, -128
%19 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %18, i8* %19, align 1, !noalias !663
%.tr57.i.i = trunc i32 %1 to i8
%20 = and i8 %.tr57.i.i, 63
%21 = or i8 %20, -128
%22 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %21, i8* %22, align 2, !noalias !663
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
next26.i.i: ; preds = %else-block8.i.i
%23 = lshr i32 %1, 18
%.tr.i.i = trunc i32 %23 to i8
%24 = and i8 %.tr.i.i, 7
%25 = or i8 %24, -16
store i8 %25, i8* %2, align 4, !noalias !663
%26 = lshr i32 %1, 12
%.tr52.i.i = trunc i32 %26 to i8
%27 = and i8 %.tr52.i.i, 63
%28 = or i8 %27, -128
%29 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %28, i8* %29, align 1, !noalias !663
%30 = lshr i32 %1, 6
%.tr53.i.i = trunc i32 %30 to i8
%31 = and i8 %.tr53.i.i, 63
%32 = or i8 %31, -128
%33 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %32, i8* %33, align 2, !noalias !663
%.tr54.i.i = trunc i32 %1 to i8
%34 = and i8 %.tr54.i.i, 63
%35 = or i8 %34, -128
%36 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 3
store i8 %35, i8* %36, align 1, !noalias !663
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit": ; preds = %next26.i.i, %next16.i.i, %next6.i.i, %next.i.i
%.sroa.9.0.copyload37 = phi i64 [ 1, %next.i.i ], [ 2, %next6.i.i ], [ 3, %next16.i.i ], [ 4, %next26.i.i ]
%37 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %0, i64 0, i32 0
%38 = load %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"** %37, align 8, !alias.scope !670, !noalias !673, !nonnull !557
%39 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %39), !noalias !675
%40 = bitcast %str_slice* %arg.i to i32**
store i32* %utf_8, i32** %40, align 8
%.sroa.5.0..sroa_idx19 = getelementptr inbounds %str_slice* %arg.i, i64 0, i32 1
store i64 %.sroa.9.0.copyload37, i64* %.sroa.5.0..sroa_idx19, align 8
%41 = call i8 @"_ZN2io5Write9write_fmt41Adaptor$LT$$u27$a$C$$u20$T$GT$.fmt..Write9write_str20h3780506604220011635E"(%"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* noalias dereferenceable(32) %38, %str_slice* noalias nocapture dereferenceable(16) %arg.i), !noalias !675
call void @llvm.lifetime.end(i64 16, i8* %39), !noalias !675
call void @llvm.lifetime.end(i64 4, i8* %2)
ret i8 %41
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_fmt20h3641120424659247560E"(%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* noalias nocapture readonly dereferenceable(8), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #6 {
entry-block:
%addr_of.i = alloca %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>", align 8
%__coerce_target.i = alloca { i8*, void (i8*)** }, align 8
%arg.i = alloca %"2.core::fmt::Arguments", align 8
%2 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %0, i64 0, i32 0
%3 = load %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"** %2, align 8, !nonnull !557
%4 = bitcast %"2.core::fmt::Arguments"* %1 to i8*
%5 = ptrtoint %"1.std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>"* %3 to i64
%6 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %6), !noalias !676
%7 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of.i to i64*
store i64 %5, i64* %7, align 8, !noalias !676
%8 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"**
store %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"* %addr_of.i, %"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"** %8, align 8, !noalias !676
%9 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target.i, i64 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<std::io::Write::write_fmt::Adaptor<std::io::stdio::StdoutLock>>"*, %"2.core::fmt::Arguments"*)* }* @vtable9341, i64 0, i32 0), void (i8*)*** %9, align 8, !noalias !676
%10 = bitcast %"2.core::fmt::Arguments"* %arg.i to i8*
call void @llvm.lifetime.start(i64 48, i8* %10), !noalias !676
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %4, i64 48, i32 8, i1 false)
%11 = call i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target.i, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg.i), !noalias !680
call void @llvm.lifetime.end(i64 48, i8* %10), !noalias !676
%12 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to i8*
call void @llvm.lifetime.end(i64 16, i8* %12), !noalias !676
call void @llvm.lifetime.end(i64 8, i8* %6), !noalias !676
call void @llvm.lifetime.end(i64 48, i8* %4)
ret i8 %11
}
declare i8 @_ZN3fmt3num16i32.fmt..Display3fmt20hc5c1915ea86b291dW9LE(i32* noalias readonly dereferenceable(4), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
declare i8 @_ZN3fmt3num17u64.fmt..UpperHex3fmt20h68270651c4a1219d4jME(i64* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
declare void @"_ZN2io5stdio30StdoutLock$LT$$u27$a$GT$.Write5flush20h3fad0900fcde2984TUgE"(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24), %"1.std::io::stdio::StdoutLock"* noalias dereferenceable(16)) unnamed_addr #7
; Function Attrs: uwtable
define internal fastcc noalias i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64) unnamed_addr #6 {
entry-block:
%size.i.i = alloca i64, align 8
%1 = alloca %"2.core::fmt::Arguments", align 8
%2 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%size = alloca i64, align 8
%3 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%autoref = alloca %"1.std::io::stdio::Stderr", align 8
%4 = alloca %"2.core::fmt::Arguments", align 8
%5 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%6 = bitcast i64* %size to i8*
call void @llvm.lifetime.start(i64 8, i8* %6)
store i64 %0, i64* %size, align 8
%7 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %7)
store i64 %0, i64* %size.i.i, align 8
%8 = icmp eq i64 %0, 0
br i1 %8, label %then-block-27908-.i.i, label %next-block.i.i
then-block-27908-.i.i: ; preds = %entry-block
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE)
unreachable
next-block.i.i: ; preds = %entry-block
%9 = icmp slt i64 %0, 0
br i1 %9, label %then-block-27941-.i.i, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
then-block-27941-.i.i: ; preds = %next-block.i.i
%10 = bitcast %"2.core::fmt::Arguments"* %1 to i8*
call void @llvm.lifetime.start(i64 48, i8* %10)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false)
%11 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %11)
%12 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %2, i64 0, i64 0
%13 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %2, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %13, align 8, !alias.scope !681, !noalias !684
%14 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %2 to i64**
store i64* %size.i.i, i64** %14, align 8, !alias.scope !681, !noalias !684
%15 = getelementptr inbounds %"2.core::fmt::Arguments"* %1, i64 0, i32 1
%16 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %15 to i8*
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !686, !noalias !689
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %1, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %12, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8
%__coerce_target.sroa.4.0..sroa_idx22.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %1, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i, align 8
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %1, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit: ; preds = %next-block.i.i
call void @llvm.lifetime.end(i64 8, i8* %7)
%17 = tail call i8* @je_mallocx(i64 %0, i32 0)
%18 = icmp eq i8* %17, null
br i1 %18, label %normal-return1, label %next-block
clean_ast_13246_: ; preds = %next-block1.i.i.i26, %next-block.i.i.i25, %unwind_ast_13261_2, %unwind_ast_13261_2
call void @llvm.lifetime.end(i64 8, i8* %21)
call void @llvm.lifetime.end(i64 8, i8* %6)
resume { i8*, i32 } %30
normal-return1: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
%19 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %19)
%20 = tail call i64 @_ZN2io5stdio6stderr20hf44c96cbbf043b5fpVgE()
%21 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8*
call void @llvm.lifetime.start(i64 8, i8* %21)
%22 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i64*
store i64 %20, i64* %22, align 8
%23 = bitcast %"2.core::fmt::Arguments"* %4 to i8*
call void @llvm.lifetime.start(i64 48, i8* %23)
%24 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%25 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0
%26 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %26, align 8, !alias.scope !692, !noalias !695
%27 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i64**
store i64* %size, i64** %27, align 8, !alias.scope !692, !noalias !695
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast ({ %str_slice*, i64 }* @_ZN3mem14allocate_bytes15__STATIC_FMTSTR20h988053cd86d698a8eCdE to i8*), i64 16, i32 8, i1 false) #20, !alias.scope !697, !noalias !701
%28 = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 1
%29 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %28 to i8*
call void @llvm.memset.p0i8.i64(i8* %29, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !703, !noalias !704
%__coerce_target.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %25, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx, align 8
%__coerce_target.sroa.4.0..sroa_idx30 = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx30, align 8
invoke void @_ZN2io5stdio12Stderr.Write9write_fmt20h7ffd42faa28ca7755WgE(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %3, %"1.std::io::stdio::Stderr"* noalias dereferenceable(8) %autoref, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %4)
to label %normal-return4 unwind label %unwind_ast_13261_2
unwind_ast_13261_2: ; preds = %normal-return1
%30 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 16, i8* %24)
%31 = getelementptr inbounds %"1.std::io::stdio::Stderr"* %autoref, i64 0, i32 0
%32 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8**
%33 = load i8** %32, align 8, !alias.scope !705
%magicptr.i.i.i24 = ptrtoint i8* %33 to i64
switch i64 %magicptr.i.i.i24, label %next-block.i.i.i25 [
i64 2097865012304223517, label %clean_ast_13246_
i64 0, label %clean_ast_13246_
]
next-block.i.i.i25: ; preds = %unwind_ast_13261_2
%34 = bitcast i8* %33 to i64*
%35 = atomicrmw sub i64* %34, i64 1 release, !noalias !705
%36 = icmp eq i64 %35, 1
br i1 %36, label %next-block1.i.i.i26, label %clean_ast_13246_
next-block1.i.i.i26: ; preds = %next-block.i.i.i25
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow20h3751068703770020953E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* noalias dereferenceable(8) %31)
to label %clean_ast_13246_ unwind label %unwind_custom_.i.i27
unwind_custom_.i.i27: ; preds = %next-block1.i.i.i26
%37 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %37
normal-return4: ; preds = %normal-return1
call void @llvm.lifetime.end(i64 48, i8* %23)
%38 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 0
%39 = load i64* %38, align 8, !range !565
%cond.i = icmp eq i64 %39, 1
br i1 %cond.i, label %enum-iter-variant-1.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i: ; preds = %normal-return4
%40 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 2
%41 = bitcast [2 x i64]* %40 to i8*
%42 = load i8* %41, align 8, !range !558
%cond.i.i.i = icmp eq i8 %42, 1
br i1 %cond.i.i.i, label %enum-iter-variant-1.i.i.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i.i.i: ; preds = %enum-iter-variant-1.i
%43 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %3, i64 0, i32 2, i64 1
%44 = bitcast i64* %43 to %"1.std::io::error::Custom"**
%45 = load %"1.std::io::error::Custom"** %44, align 8
%46 = icmp eq %"1.std::io::error::Custom"* %45, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %46, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", label %cond.i.i.i.i
cond.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i
%47 = getelementptr inbounds %"1.std::io::error::Custom"* %45, i64 0, i32 1, i32 0
%48 = load i8** %47, align 8
%49 = icmp eq i8* %48, inttoptr (i64 2097865012304223517 to i8*)
br i1 %49, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond.i.i.i.i.i.i
cond.i.i.i.i.i.i: ; preds = %cond.i.i.i.i
%50 = getelementptr inbounds %"1.std::io::error::Custom"* %45, i64 0, i32 1, i32 1
%51 = load void (i8*)*** %50, align 8
%52 = load void (i8*)** %51, align 8
call void %52(i8* %48)
%53 = bitcast void (i8*)*** %50 to i64**
%54 = load i64** %53, align 8
%55 = getelementptr inbounds i64* %54, i64 1
%56 = load i64* %55, align 8
%57 = icmp eq i64 %56, 0
br i1 %57, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond2.i.i.i.i.i.i
cond2.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i
%58 = getelementptr inbounds i64* %54, i64 2
%59 = load i64* %58, align 8
%60 = icmp ult i64 %59, 17
br i1 %60, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i
%61 = call i64 @llvm.cttz.i64(i64 %59, i1 false) #20
%62 = trunc i64 %61 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %62, %else-block.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i ]
call void @je_sdallocx(i8* %48, i64 %56, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, %cond.i.i.i.i.i.i, %cond.i.i.i.i
%63 = getelementptr inbounds %"1.std::io::error::Custom"* %45, i64 0, i32 0
call void @je_sdallocx(i8* %63, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit": ; preds = %normal-return4, %enum-iter-variant-1.i, %enum-iter-variant-1.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %19)
call void @llvm.lifetime.end(i64 16, i8* %24)
%64 = getelementptr inbounds %"1.std::io::stdio::Stderr"* %autoref, i64 0, i32 0
%65 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8**
%66 = load i8** %65, align 8, !alias.scope !708
%magicptr.i.i.i = ptrtoint i8* %66 to i64
switch i64 %magicptr.i.i.i, label %next-block.i.i.i [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
i64 0, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
]
next-block.i.i.i: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
%67 = bitcast i8* %66 to i64*
%68 = atomicrmw sub i64* %67, i64 1 release, !noalias !708
%69 = icmp eq i64 %68, 1
br i1 %69, label %next-block1.i.i.i, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
next-block1.i.i.i: ; preds = %next-block.i.i.i
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow20h3751068703770020953E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* noalias dereferenceable(8) %64)
to label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit unwind label %unwind_custom_.i.i
unwind_custom_.i.i: ; preds = %next-block1.i.i.i
%70 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %70
_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", %next-block.i.i.i, %next-block1.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %21)
call void @llvm.trap()
unreachable
next-block: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
tail call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 %0, i32 1, i1 false)
call void @llvm.lifetime.end(i64 8, i8* %6)
ret i8* %17
}
declare void @_ZN2io5stdio12Stderr.Write9write_fmt20h7ffd42faa28ca7755WgE(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24), %"1.std::io::stdio::Stderr"* noalias dereferenceable(8), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #7
declare i64 @_ZN2io5stdio6stderr20hf44c96cbbf043b5fpVgE() unnamed_addr #7
; Function Attrs: noinline uwtable
define internal fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow20h3751068703770020953E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #18 {
entry-block:
%1 = getelementptr inbounds %"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* %0, i64 0, i32 0, i32 0
%2 = load %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"** %1, align 8
%3 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* %2, i64 0, i32 2, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit"
cond.i: ; preds = %entry-block
%6 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* %2, i64 0, i32 2, i32 0
%7 = load %"1.std::sys::mutex::ReentrantMutex"** %6, align 8, !alias.scope !711, !nonnull !557
invoke void @_ZN3sys5mutex14ReentrantMutex7destroy20h758c87a2a9bf37eatauE(%"1.std::sys::mutex::ReentrantMutex"* dereferenceable(40) %7)
to label %normal-return.i unwind label %unwind_custom_.i
normal-return.i: ; preds = %cond.i
%8 = load %"1.std::sys::mutex::ReentrantMutex"** %6, align 8
%9 = icmp eq %"1.std::sys::mutex::ReentrantMutex"* %8, inttoptr (i64 2097865012304223517 to %"1.std::sys::mutex::ReentrantMutex"*)
br i1 %9, label %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit", label %cond.i.i.i
cond.i.i.i: ; preds = %normal-return.i
%10 = bitcast %"1.std::sys::mutex::ReentrantMutex"* %8 to i8*
tail call void @je_sdallocx(i8* %10, i64 40, i32 0)
br label %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit"
unwind_custom_.i: ; preds = %cond.i
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = load %"1.std::sys::mutex::ReentrantMutex"** %6, align 8
%13 = icmp eq %"1.std::sys::mutex::ReentrantMutex"* %12, inttoptr (i64 2097865012304223517 to %"1.std::sys::mutex::ReentrantMutex"*)
br i1 %13, label %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939217h25941653a4ffb211E.exit4.i", label %cond.i.i3.i
cond.i.i3.i: ; preds = %unwind_custom_.i
%14 = bitcast %"1.std::sys::mutex::ReentrantMutex"* %12 to i8*
tail call void @je_sdallocx(i8* %14, i64 40, i32 0)
br label %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939217h25941653a4ffb211E.exit4.i"
"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939217h25941653a4ffb211E.exit4.i": ; preds = %cond.i.i3.i, %unwind_custom_.i
resume { i8*, i32 } %11
"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit": ; preds = %entry-block, %normal-return.i, %cond.i.i.i
%15 = getelementptr inbounds %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* %2, i64 0, i32 1, i32 0, i32 0
%16 = atomicrmw sub i64* %15, i64 1 release
%17 = icmp eq i64 %16, 1
br i1 %17, label %then-block-27016-, label %next-block
then-block-27016-: ; preds = %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit"
fence acquire
%18 = bitcast %"5.alloc::arc::ArcInner<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* %2 to i8*
tail call void @je_sdallocx(i8* %18, i64 48, i32 0)
br label %next-block
next-block: ; preds = %"_ZN100std..sys_common..remutex..ReentrantMutex$LT$core..cell..RefCell$LT$std..io..stdio..StderrRaw$GT$$GT$9drop.939017h25941653a4ffb211E.exit", %then-block-27016-
ret void
}
; Function Attrs: uwtable
define internal fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8*, i64, i64) unnamed_addr #6 {
entry-block:
%size.i.i = alloca i64, align 8
%3 = alloca %"2.core::fmt::Arguments", align 8
%4 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%old_size = alloca i64, align 8
%new_size = alloca i64, align 8
%5 = alloca %"2.core::result::Result<(), std::io::error::Error>", align 8
%autoref = alloca %"1.std::io::stdio::Stderr", align 8
%6 = alloca %"2.core::fmt::Arguments", align 8
%7 = alloca [2 x %"2.core::fmt::ArgumentV1"], align 8
%8 = bitcast i64* %old_size to i8*
call void @llvm.lifetime.start(i64 8, i8* %8)
store i64 %1, i64* %old_size, align 8
%9 = bitcast i64* %new_size to i8*
call void @llvm.lifetime.start(i64 8, i8* %9)
store i64 %2, i64* %new_size, align 8
%10 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %10)
store i64 %2, i64* %size.i.i, align 8
%11 = icmp eq i64 %2, 0
br i1 %11, label %then-block-27908-.i.i, label %next-block.i.i
then-block-27908-.i.i: ; preds = %entry-block
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE)
unreachable
next-block.i.i: ; preds = %entry-block
%12 = icmp slt i64 %2, 0
br i1 %12, label %then-block-27941-.i.i, label %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit
then-block-27941-.i.i: ; preds = %next-block.i.i
%13 = bitcast %"2.core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start(i64 48, i8* %13)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false)
%14 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %4 to i8*
call void @llvm.lifetime.start(i64 16, i8* %14)
%15 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %4, i64 0, i64 0
%16 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %4, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %16, align 8, !alias.scope !714, !noalias !717
%17 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %4 to i64**
store i64* %size.i.i, i64** %17, align 8, !alias.scope !714, !noalias !717
%18 = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 1
%19 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %18 to i8*
call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !719, !noalias !722
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %15, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8
%__coerce_target.sroa.4.0..sroa_idx22.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i, align 8
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %3, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
unreachable
_ZN4heap10reallocate20h45544adb9db3e6695caE.exit: ; preds = %next-block.i.i
call void @llvm.lifetime.end(i64 8, i8* %10)
%20 = tail call i8* @je_rallocx(i8* %0, i64 %2, i32 0)
%21 = icmp eq i8* %20, null
br i1 %21, label %normal-return3, label %next-block
clean_ast_13339_: ; preds = %next-block1.i.i.i36, %next-block.i.i.i35, %unwind_ast_13356_4, %unwind_ast_13356_4
call void @llvm.lifetime.end(i64 8, i8* %24)
call void @llvm.lifetime.end(i64 8, i8* %9)
call void @llvm.lifetime.end(i64 8, i8* %8)
resume { i8*, i32 } %36
normal-return3: ; preds = %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit
%22 = bitcast %"2.core::result::Result<(), std::io::error::Error>"* %5 to i8*
call void @llvm.lifetime.start(i64 24, i8* %22)
%23 = tail call i64 @_ZN2io5stdio6stderr20hf44c96cbbf043b5fpVgE()
%24 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8*
call void @llvm.lifetime.start(i64 8, i8* %24)
%25 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i64*
store i64 %23, i64* %25, align 8
%26 = bitcast %"2.core::fmt::Arguments"* %6 to i8*
call void @llvm.lifetime.start(i64 48, i8* %26)
%27 = bitcast [2 x %"2.core::fmt::ArgumentV1"]* %7 to i8*
call void @llvm.lifetime.start(i64 32, i8* %27)
%28 = getelementptr inbounds [2 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 0
%29 = getelementptr inbounds [2 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %29, align 8, !alias.scope !725, !noalias !728
%30 = bitcast [2 x %"2.core::fmt::ArgumentV1"]* %7 to i64**
store i64* %old_size, i64** %30, align 8, !alias.scope !725, !noalias !728
%31 = getelementptr inbounds [2 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 1
%32 = getelementptr inbounds [2 x %"2.core::fmt::ArgumentV1"]* %7, i64 0, i64 1, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %32, align 8, !alias.scope !730, !noalias !733
%33 = bitcast %"2.core::fmt::ArgumentV1"* %31 to i64**
store i64* %new_size, i64** %33, align 8, !alias.scope !730, !noalias !733
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %26, i8* bitcast ({ %str_slice*, i64 }* @_ZN3mem10reallocate15__STATIC_FMTSTR20h988053cd86d698a8LDdE to i8*), i64 16, i32 8, i1 false) #20, !alias.scope !735, !noalias !739
%34 = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 1
%35 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %34 to i8*
call void @llvm.memset.p0i8.i64(i8* %35, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !741, !noalias !742
%__coerce_target.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %28, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx, align 8
%__coerce_target.sroa.4.0..sroa_idx40 = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 2, i32 1
store i64 2, i64* %__coerce_target.sroa.4.0..sroa_idx40, align 8
invoke void @_ZN2io5stdio12Stderr.Write9write_fmt20h7ffd42faa28ca7755WgE(%"2.core::result::Result<(), std::io::error::Error>"* noalias nocapture sret dereferenceable(24) %5, %"1.std::io::stdio::Stderr"* noalias dereferenceable(8) %autoref, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %6)
to label %normal-return6 unwind label %unwind_ast_13356_4
unwind_ast_13356_4: ; preds = %normal-return3
%36 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 32, i8* %27)
%37 = getelementptr inbounds %"1.std::io::stdio::Stderr"* %autoref, i64 0, i32 0
%38 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8**
%39 = load i8** %38, align 8, !alias.scope !743
%magicptr.i.i.i34 = ptrtoint i8* %39 to i64
switch i64 %magicptr.i.i.i34, label %next-block.i.i.i35 [
i64 2097865012304223517, label %clean_ast_13339_
i64 0, label %clean_ast_13339_
]
next-block.i.i.i35: ; preds = %unwind_ast_13356_4
%40 = bitcast i8* %39 to i64*
%41 = atomicrmw sub i64* %40, i64 1 release, !noalias !743
%42 = icmp eq i64 %41, 1
br i1 %42, label %next-block1.i.i.i36, label %clean_ast_13339_
next-block1.i.i.i36: ; preds = %next-block.i.i.i35
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow20h3751068703770020953E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* noalias dereferenceable(8) %37)
to label %clean_ast_13339_ unwind label %unwind_custom_.i.i37
unwind_custom_.i.i37: ; preds = %next-block1.i.i.i36
%43 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %43
normal-return6: ; preds = %normal-return3
call void @llvm.lifetime.end(i64 48, i8* %26)
%44 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %5, i64 0, i32 0
%45 = load i64* %44, align 8, !range !565
%cond.i = icmp eq i64 %45, 1
br i1 %cond.i, label %enum-iter-variant-1.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i: ; preds = %normal-return6
%46 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %5, i64 0, i32 2
%47 = bitcast [2 x i64]* %46 to i8*
%48 = load i8* %47, align 8, !range !558
%cond.i.i.i = icmp eq i8 %48, 1
br i1 %cond.i.i.i, label %enum-iter-variant-1.i.i.i, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
enum-iter-variant-1.i.i.i: ; preds = %enum-iter-variant-1.i
%49 = getelementptr inbounds %"2.core::result::Result<(), std::io::error::Error>"* %5, i64 0, i32 2, i64 1
%50 = bitcast i64* %49 to %"1.std::io::error::Custom"**
%51 = load %"1.std::io::error::Custom"** %50, align 8
%52 = icmp eq %"1.std::io::error::Custom"* %51, inttoptr (i64 2097865012304223517 to %"1.std::io::error::Custom"*)
br i1 %52, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", label %cond.i.i.i.i
cond.i.i.i.i: ; preds = %enum-iter-variant-1.i.i.i
%53 = getelementptr inbounds %"1.std::io::error::Custom"* %51, i64 0, i32 1, i32 0
%54 = load i8** %53, align 8
%55 = icmp eq i8* %54, inttoptr (i64 2097865012304223517 to i8*)
br i1 %55, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond.i.i.i.i.i.i
cond.i.i.i.i.i.i: ; preds = %cond.i.i.i.i
%56 = getelementptr inbounds %"1.std::io::error::Custom"* %51, i64 0, i32 1, i32 1
%57 = load void (i8*)*** %56, align 8
%58 = load void (i8*)** %57, align 8
call void %58(i8* %54)
%59 = bitcast void (i8*)*** %56 to i64**
%60 = load i64** %59, align 8
%61 = getelementptr inbounds i64* %60, i64 1
%62 = load i64* %61, align 8
%63 = icmp eq i64 %62, 0
br i1 %63, label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i, label %cond2.i.i.i.i.i.i
cond2.i.i.i.i.i.i: ; preds = %cond.i.i.i.i.i.i
%64 = getelementptr inbounds i64* %60, i64 2
%65 = load i64* %64, align 8
%66 = icmp ult i64 %65, 17
br i1 %66, label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, label %else-block.i.i.i.i.i.i.i.i.i.i
else-block.i.i.i.i.i.i.i.i.i.i: ; preds = %cond2.i.i.i.i.i.i
%67 = call i64 @llvm.cttz.i64(i64 %65, i1 false) #20
%68 = trunc i64 %67 to i32
br label %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i
_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i: ; preds = %else-block.i.i.i.i.i.i.i.i.i.i, %cond2.i.i.i.i.i.i
%sret_slot.0.i.i.i.i.i.i.i.i.i.i = phi i32 [ %68, %else-block.i.i.i.i.i.i.i.i.i.i ], [ 0, %cond2.i.i.i.i.i.i ]
call void @je_sdallocx(i8* %54, i64 %62, i32 %sret_slot.0.i.i.i.i.i.i.i.i.i.i)
br label %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i: ; preds = %_ZN4heap13exchange_free20h6fedd6cf75876b52kfaE.exit.i.i.i.i.i.i, %cond.i.i.i.i.i.i, %cond.i.i.i.i
%69 = getelementptr inbounds %"1.std::io::error::Custom"* %51, i64 0, i32 0
call void @je_sdallocx(i8* %69, i64 24, i32 0)
br label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit": ; preds = %normal-return6, %enum-iter-variant-1.i, %enum-iter-variant-1.i.i.i, %_ZN22std..io..error..Custom9drop.905617h7dced8f4ad4b0dc2E.exit.i.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %22)
call void @llvm.lifetime.end(i64 32, i8* %27)
%70 = getelementptr inbounds %"1.std::io::stdio::Stderr"* %autoref, i64 0, i32 0
%71 = bitcast %"1.std::io::stdio::Stderr"* %autoref to i8**
%72 = load i8** %71, align 8, !alias.scope !746
%magicptr.i.i.i = ptrtoint i8* %72 to i64
switch i64 %magicptr.i.i.i, label %next-block.i.i.i [
i64 2097865012304223517, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
i64 0, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
]
next-block.i.i.i: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit"
%73 = bitcast i8* %72 to i64*
%74 = atomicrmw sub i64* %73, i64 1 release, !noalias !746
%75 = icmp eq i64 %74, 1
br i1 %75, label %next-block1.i.i.i, label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit
next-block1.i.i.i: ; preds = %next-block.i.i.i
fence acquire
invoke fastcc void @"_ZN3arc12Arc$LT$T$GT$9drop_slow20h3751068703770020953E"(%"5.alloc::arc::Arc<std::sys_common::remutex::ReentrantMutex<core::cell::RefCell<std::io::stdio::StderrRaw>>>"* noalias dereferenceable(8) %70)
to label %_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit unwind label %unwind_custom_.i.i
unwind_custom_.i.i: ; preds = %next-block1.i.i.i
%76 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
resume { i8*, i32 } %76
_ZN22std..io..stdio..Stderr9drop.938417h1953b15ef237da17E.exit: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit", %next-block.i.i.i, %next-block1.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %24)
call void @llvm.trap()
unreachable
next-block: ; preds = %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit
%77 = icmp ugt i64 %2, %1
br i1 %77, label %then-block-13407-, label %next-block7
then-block-13407-: ; preds = %next-block
%78 = getelementptr inbounds i8* %20, i64 %1
%79 = sub i64 %2, %1
tail call void @llvm.memset.p0i8.i64(i8* %78, i8 0, i64 %79, i32 1, i1 false)
br label %next-block7
next-block7: ; preds = %next-block, %then-block-13407-
call void @llvm.lifetime.end(i64 8, i8* %9)
call void @llvm.lifetime.end(i64 8, i8* %8)
ret i8* %20
}
declare i8* @je_rallocx(i8*, i64, i32) unnamed_addr #7
; Function Attrs: nounwind uwtable
define void @_ZN3int3Int4zero20h73cd13321f814714HIdE(%"int::Int"* noalias nocapture sret dereferenceable(24)) unnamed_addr #0 {
entry-block:
%1 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %1, align 8, !alias.scope !749
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %2, align 8, !alias.scope !749
%3 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %3, align 4, !alias.scope !749
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %4, align 8, !alias.scope !749
ret void
}
; Function Attrs: uwtable
define void @_ZN3int3Int3one20h4884beff37e09153OIdE(%"int::Int"* noalias nocapture sret dereferenceable(24)) unnamed_addr #6 {
entry-block:
%1 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !752
%2 = ptrtoint i8* %1 to i64
%limb.sroa.0.0..sroa_idx.i.i.i = bitcast i8* %1 to i64*
store i64 1, i64* %limb.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !761
%i6.sroa.0.0..sroa_cast30.i.i = bitcast %"int::Int"* %0 to i64*
store i64 %2, i64* %i6.sroa.0.0..sroa_cast30.i.i, align 8, !alias.scope !762
%3 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 1, i32* %3, align 8, !alias.scope !762
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 1, i32* %4, align 4, !alias.scope !762
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %5, align 8, !alias.scope !762
ret void
}
; Function Attrs: uwtable
define void @_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE(%"int::Int"* noalias nocapture sret dereferenceable(24), i64) unnamed_addr #6 {
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit:
%2 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !763
%3 = ptrtoint i8* %2 to i64
%limb.sroa.0.0..sroa_idx = bitcast i8* %2 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx, align 8
%i.sroa.0.0..sroa_cast7 = bitcast %"int::Int"* %0 to i64*
store i64 %3, i64* %i.sroa.0.0..sroa_cast7, align 8
%i.sroa.7.0..sroa_idx9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 1, i32* %i.sroa.7.0..sroa_idx9, align 8
%i.sroa.10.0..sroa_idx11 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 1, i32* %i.sroa.10.0..sroa_idx11, align 4
%i.sroa.13.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %i.sroa.13.0..sroa_idx, align 8
ret void
}
; Function Attrs: uwtable
define void @_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE(%"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%2 = load i32* %1, align 4
%3 = icmp eq i32 %2, 0
br i1 %3, label %next-block, label %then-block-15297-
then-block-15297-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %0 to i8**
%5 = load i8** %4, align 8, !alias.scope !766
%6 = zext i32 %2 to i64
%7 = shl nuw nsw i64 %6, 3
tail call void @je_sdallocx(i8* %5, i64 %7, i32 0)
store i32 0, i32* %1, align 4
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %8, align 4
br label %next-block
next-block: ; preds = %entry-block, %then-block-15297-
ret void
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define i32 @_ZN3int3Int4sign20he27417198f6be603VJdE(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #4 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4
%3 = icmp eq i32 %2, 0
br i1 %3, label %join2, label %else-block
else-block: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
br label %join2
join2: ; preds = %else-block, %entry-block
%sret_slot.0 = phi i32 [ 0, %entry-block ], [ %5, %else-block ]
ret i32 %sret_slot.0
}
; Function Attrs: inlinehint uwtable
define void @_ZN3int3Int3abs20h5abd7cbfb9f35df9kKdE(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit:
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4
%4 = icmp slt i32 %3, 0
%5 = sub i32 0, %3
%sret_slot.0.i = select i1 %4, i32 %5, i32 %3
store i32 %sret_slot.0.i, i32* %2, align 4
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i64 @_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !769
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %else-block
clean_custom_: ; preds = %entry-block, %else-block
%sret_slot.sroa.0.0 = phi i64 [ %sret_slot.sroa.0.0.copyload6, %else-block ], [ 0, %entry-block ]
ret i64 %sret_slot.sroa.0.0
else-block: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%5 = load %"ll::limb::Limb"** %4, align 8, !alias.scope !772
%sret_slot.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6 = load i64* %sret_slot.sroa.0.0..sroa_idx, align 8
br label %clean_custom_
}
; Function Attrs: alwaysinline nounwind readonly uwtable
define i32 @_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #4 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4
%3 = icmp slt i32 %2, 0
%4 = sub i32 0, %2
%sret_slot.0.i = select i1 %3, i32 %4, i32 %2
ret i32 %sret_slot.0.i
}
; Function Attrs: nounwind readonly uwtable
define i8 @_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !775
%4 = icmp slt i32 %3, 0
%5 = sub i32 0, %3
%sret_slot.0.i.i = select i1 %4, i32 %5, i32 %3
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%7 = load i32* %6, align 4, !alias.scope !778
%8 = icmp slt i32 %7, 0
%9 = sub i32 0, %7
%sret_slot.0.i.i32 = select i1 %8, i32 %9, i32 %7
%10 = icmp sgt i32 %sret_slot.0.i.i, %sret_slot.0.i.i32
br i1 %10, label %join2, label %else-block
else-block: ; preds = %entry-block
%11 = icmp slt i32 %sret_slot.0.i.i, %sret_slot.0.i.i32
br i1 %11, label %join2, label %else-block1
else-block1: ; preds = %else-block
%12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%13 = load %"ll::limb::Limb"** %12, align 8, !alias.scope !781
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%15 = load %"ll::limb::Limb"** %14, align 8, !alias.scope !784
br label %while_cond.i
while_cond.i: ; preds = %while_body.i, %else-block1
%i.0.in.i = phi i32 [ %sret_slot.0.i.i, %else-block1 ], [ %i.0.i, %while_body.i ]
%i.0.i = add i32 %i.0.in.i, -1
%16 = icmp sgt i32 %i.0.i, -1
br i1 %16, label %while_body.i, label %join2.loopexit
while_body.i: ; preds = %while_cond.i
%17 = sext i32 %i.0.i to i64
%18 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %17, i32 0
%19 = load i64* %18, align 8
%20 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %17, i32 0
%21 = load i64* %20, align 8
%22 = icmp eq i64 %19, %21
br i1 %22, label %while_cond.i, label %then-block-13036-.i
then-block-13036-.i: ; preds = %while_body.i
%.lcssa36 = phi i64 [ %21, %while_body.i ]
%.lcssa = phi i64 [ %19, %while_body.i ]
%23 = icmp ugt i64 %.lcssa, %.lcssa36
%..i = select i1 %23, i8 1, i8 -1
br label %join2
join2.loopexit: ; preds = %while_cond.i
br label %join2
join2: ; preds = %join2.loopexit, %then-block-13036-.i, %else-block, %entry-block
%sret_slot.0 = phi i8 [ 1, %entry-block ], [ -1, %else-block ], [ %..i, %then-block-13036-.i ], [ 0, %join2.loopexit ]
ret i8 %sret_slot.0
}
; Function Attrs: uwtable
define void @_ZN3int3Int13shrink_to_fit20h031467e6934aa0cbQLdE(%"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !787
%3 = icmp slt i32 %2, 0
%4 = sub i32 0, %2
%sret_slot.0.i.i = select i1 %3, i32 %4, i32 %2
%5 = sext i32 %sret_slot.0.i.i to i64
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%7 = load i32* %6, align 4
%8 = zext i32 %7 to i64
%9 = icmp eq i64 %8, %5
br i1 %9, label %clean_custom_, label %next-block
clean_custom_: ; preds = %entry-block, %next-block
ret void
next-block: ; preds = %entry-block
%10 = icmp eq i32 %sret_slot.0.i.i, 0
%11 = bitcast %"int::Int"* %0 to i8**
%12 = load i8** %11, align 8, !alias.scope !790
%13 = shl nuw nsw i64 %8, 3
%.op = shl nsw i64 %5, 3
%14 = select i1 %10, i64 8, i64 %.op
%15 = tail call fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %12, i64 %13, i64 %14)
%16 = ptrtoint i8* %15 to i64
%17 = bitcast %"int::Int"* %0 to i64*
store i64 %16, i64* %17, align 8
br label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i8, i1 zeroext) unnamed_addr #6 {
entry-block:
%arg.i.i27 = alloca { i8*, i64 }, align 8
%arg.i4.i146.i.i = alloca { i8*, i64 }, align 8
%arg.i.i147.i.i = alloca { i8*, i64 }, align 8
%arg.i4.i.i.i = alloca { i8*, i64 }, align 8
%arg.i.i102.i.i = alloca { i8*, i64 }, align 8
%arg.i.i.i.i = alloca { i8*, i64 }, align 8
%arg.i4.i.i.i.i = alloca { i8*, i64 }, align 8
%arg.i.i32.i.i.i = alloca { i8*, i64 }, align 8
%4 = alloca [1 x i8], align 1
%5 = alloca [1 x i8], align 1
%6 = alloca %"2.core::fmt::Arguments", align 8
%size.i.i.i.i.i.i.i = alloca i64, align 8
%7 = alloca %"2.core::fmt::Arguments", align 8
%arg.i.i.i.i.i = alloca %str_slice, align 8
%size.i.i.i.i.i.i = alloca i64, align 8
%8 = alloca %"2.core::fmt::Arguments", align 8
%size.i.i = alloca i64, align 8
%9 = alloca %"2.core::fmt::Arguments", align 8
%10 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%addr_of.i.i = alloca %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>", align 8
%__coerce_target.i.i = alloca { i8*, void (i8*)** }, align 8
%arg.i.i = alloca %"2.core::fmt::Arguments", align 8
%size.i.i.i.i.i = alloca i64, align 8
%11 = alloca %"2.core::fmt::Arguments", align 8
%12 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%buf.i = alloca %"3.collections::string::String", align 8
%.sroa.0.i = alloca { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }, align 8
%13 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%base = alloca i8, align 1
%arg = alloca %str_slice, align 8
%14 = alloca %"2.core::fmt::Arguments", align 8
%15 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%buf = alloca %"3.collections::vec::Vec<u8>", align 8
%arg5 = alloca %"3.collections::vec::Vec<u8>", align 8
call void @llvm.lifetime.start(i64 1, i8* %base)
store i8 %2, i8* %base, align 1
%16 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%17 = load i32* %16, align 4
%18 = icmp eq i32 %17, 0
br i1 %18, label %then-block-13974-, label %next-block
then-block-13974-: ; preds = %entry-block
%19 = bitcast %str_slice* %arg to i8*
call void @llvm.lifetime.start(i64 16, i8* %19)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* bitcast (%str_slice* @const9594 to i8*), i64 16, i32 8, i1 false)
%20 = bitcast %"3.collections::string::String"* %buf.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %20), !noalias !793
%21 = bitcast %"3.collections::string::String"* %buf.i to i64*
store i64 1, i64* %21, align 8, !alias.scope !797, !noalias !793
%22 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 1
%23 = bitcast i64* %22 to i8*
call void @llvm.memset.p0i8.i64(i8* %23, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !804, !noalias !793
%.sroa.0.0..sroa_cast35.i = bitcast { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0.i to i8*
call void @llvm.lifetime.start(i64 32, i8* %.sroa.0.0..sroa_cast35.i)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.0.0..sroa_cast35.i, i8* bitcast ({ %str_slice*, i64 }* @_ZN6string10T.ToString9to_string15__STATIC_FMTSTR20h4ea7fe92f06d5315vRhE to i8*), i64 16, i32 8, i1 false), !noalias !793
%24 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %13 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24), !noalias !793
%25 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %13, i64 0, i64 0
%26 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %13, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (%str_slice*, %"2.core::fmt::Formatter"*)* @"_ZN3fmt25_$RF$$u27$a$u20$T.Display3fmt20h1407801074379592337E" to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %26, align 8, !alias.scope !805, !noalias !808
%27 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %13 to %str_slice**
store %str_slice* %arg, %str_slice** %27, align 8, !alias.scope !805, !noalias !808
%.sroa.0.i.16..sroa_idx = getelementptr inbounds { { %str_slice*, i64 }, %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>" }* %.sroa.0.i, i64 0, i32 1
%.sroa.0.i.16..sroa_cast = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %.sroa.0.i.16..sroa_idx to i8*
call void @llvm.memset.p0i8.i64(i8* %.sroa.0.i.16..sroa_cast, i8 0, i64 16, i32 8, i1 false)
%28 = ptrtoint %"3.collections::string::String"* %buf.i to i64
%29 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %29), !noalias !810
%30 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i.i to i64*
store i64 %28, i64* %30, align 8, !noalias !810
%31 = bitcast { i8*, void (i8*)** }* %__coerce_target.i.i to %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"**
store %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i.i, %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"** %31, align 8, !noalias !810
%32 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target.i.i, i64 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %"2.core::fmt::Arguments"*)* }* @vtable9577, i64 0, i32 0), void (i8*)*** %32, align 8, !noalias !810
%33 = bitcast %"2.core::fmt::Arguments"* %arg.i.i to i8*
call void @llvm.lifetime.start(i64 48, i8* %33), !noalias !810
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %.sroa.0.0..sroa_cast35.i, i64 32, i32 8, i1 false), !noalias !793
%.sroa.6.0..sroa_idx30.i = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i.i, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %25, %"2.core::fmt::ArgumentV1"** %.sroa.6.0..sroa_idx30.i, align 8, !noalias !793
%.sroa.7.0..sroa_idx33.i = getelementptr inbounds %"2.core::fmt::Arguments"* %arg.i.i, i64 0, i32 2, i32 1
store i64 1, i64* %.sroa.7.0..sroa_idx33.i, align 8, !noalias !793
%34 = invoke i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target.i.i, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg.i.i)
to label %normal-return2.i unwind label %unwind_ast_29762_.i, !noalias !814
unwind_ast_29762_.i: ; preds = %then-block-30691-.i.i.i, %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit.i.i.i, %then-block-27941-.i.i.i.i.i, %then-block-30632-.i.i.i, %then-block-13974-
%35 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%36 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 2
%37 = load i64* %36, align 8, !alias.scope !815, !noalias !793
switch i64 %37, label %then-block-28382-.i.i.i15.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit16.i
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit16.i
]
then-block-28382-.i.i.i15.i: ; preds = %unwind_ast_29762_.i
%38 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 0, i32 0, i32 0
%39 = load i8** %38, align 8, !alias.scope !815, !noalias !793
call void @je_sdallocx(i8* %39, i64 %37, i32 0), !noalias !814
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit16.i
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit16.i: ; preds = %then-block-28382-.i.i.i15.i, %unwind_ast_29762_.i, %unwind_ast_29762_.i
call void @llvm.lifetime.end(i64 24, i8* %20), !noalias !793
call void @llvm.lifetime.end(i64 16, i8* %19), !alias.scope !818, !noalias !814
resume { i8*, i32 } %35
normal-return2.i: ; preds = %then-block-13974-
call void @llvm.lifetime.end(i64 48, i8* %33), !noalias !810
%40 = bitcast { i8*, void (i8*)** }* %__coerce_target.i.i to i8*
call void @llvm.lifetime.end(i64 16, i8* %40), !noalias !810
call void @llvm.lifetime.end(i64 8, i8* %29), !noalias !810
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0.0..sroa_cast35.i)
call void @llvm.lifetime.end(i64 32, i8* %.sroa.0.0..sroa_cast35.i)
call void @llvm.lifetime.end(i64 16, i8* %24), !noalias !793
%41 = load i64* %22, align 8, !alias.scope !819, !noalias !793
%42 = icmp eq i64 %41, 0
%43 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 2
%44 = load i64* %43, align 8, !alias.scope !819, !noalias !793
br i1 %42, label %then-block-30626-.i.i.i, label %else-block.i.i.i
then-block-30626-.i.i.i: ; preds = %normal-return2.i
%45 = icmp eq i64 %44, 0
br i1 %45, label %_ZN6string10T.ToString9to_string20h5537758125275662918E.exit, label %then-block-30632-.i.i.i
then-block-30632-.i.i.i: ; preds = %then-block-30626-.i.i.i
%46 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 0, i32 0, i32 0
%47 = load i8** %46, align 8, !alias.scope !819, !noalias !793
invoke void @je_sdallocx(i8* %47, i64 %44, i32 0)
to label %.noexc.i unwind label %unwind_ast_29762_.i, !noalias !814
.noexc.i: ; preds = %then-block-30632-.i.i.i
store i64 0, i64* %43, align 8, !alias.scope !819, !noalias !793
br label %_ZN6string10T.ToString9to_string20h5537758125275662918E.exit
else-block.i.i.i: ; preds = %normal-return2.i
%48 = icmp eq i64 %44, %41
br i1 %48, label %_ZN6string10T.ToString9to_string20h5537758125275662918E.exit, label %next-block.i.i.i.i.i
next-block.i.i.i.i.i: ; preds = %else-block.i.i.i
%49 = getelementptr inbounds %"3.collections::string::String"* %buf.i, i64 0, i32 0, i32 0, i32 0, i32 0
%50 = load i8** %49, align 8, !alias.scope !819, !noalias !793
%51 = bitcast i64* %size.i.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %51), !noalias !824
store i64 %41, i64* %size.i.i.i.i.i, align 8, !noalias !824
%52 = icmp slt i64 %41, 0
br i1 %52, label %then-block-27941-.i.i.i.i.i, label %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit.i.i.i
then-block-27941-.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i
%53 = bitcast %"2.core::fmt::Arguments"* %11 to i8*
call void @llvm.lifetime.start(i64 48, i8* %53), !noalias !824
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %53, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false), !noalias !825
%54 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i8*
call void @llvm.lifetime.start(i64 16, i8* %54), !noalias !824
%55 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0
%56 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %56, align 8, !alias.scope !826, !noalias !829
%57 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i64**
store i64* %size.i.i.i.i.i, i64** %57, align 8, !alias.scope !826, !noalias !829
%58 = getelementptr inbounds %"2.core::fmt::Arguments"* %11, i64 0, i32 1
%59 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %58 to i8*
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !831, !noalias !834
%__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %11, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %55, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i, align 8, !noalias !824
%__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %11, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i, align 8, !noalias !824
invoke void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %11, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
to label %.noexc12.i unwind label %unwind_ast_29762_.i, !noalias !814
.noexc12.i: ; preds = %then-block-27941-.i.i.i.i.i
unreachable
_ZN4heap10reallocate20h45544adb9db3e6695caE.exit.i.i.i: ; preds = %next-block.i.i.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %51), !noalias !824
%60 = invoke i8* @je_rallocx(i8* %50, i64 %41, i32 0)
to label %.noexc13.i unwind label %unwind_ast_29762_.i, !noalias !814
.noexc13.i: ; preds = %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit.i.i.i
%61 = icmp eq i8* %60, null
br i1 %61, label %then-block-30691-.i.i.i, label %next-block3.i.i.i
then-block-30691-.i.i.i: ; preds = %.noexc13.i
invoke void @_ZN3oom20hca3a2a8b171e2cday6aE()
to label %.noexc14.i unwind label %unwind_ast_29762_.i, !noalias !814
.noexc14.i: ; preds = %then-block-30691-.i.i.i
unreachable
next-block3.i.i.i: ; preds = %.noexc13.i
%62 = ptrtoint i8* %60 to i64
store i64 %62, i64* %21, align 8, !alias.scope !819, !noalias !793
store i64 %41, i64* %43, align 8, !alias.scope !819, !noalias !793
br label %_ZN6string10T.ToString9to_string20h5537758125275662918E.exit
_ZN6string10T.ToString9to_string20h5537758125275662918E.exit: ; preds = %then-block-30626-.i.i.i, %.noexc.i, %else-block.i.i.i, %next-block3.i.i.i
%63 = bitcast %"3.collections::string::String"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %63, i8* %20, i64 24, i32 8, i1 false), !noalias !818
call void @llvm.lifetime.end(i64 24, i8* %20), !noalias !793
call void @llvm.lifetime.end(i64 16, i8* %19), !alias.scope !818, !noalias !814
call void @llvm.lifetime.end(i64 16, i8* %19)
br label %clean_custom_
clean_custom_: ; preds = %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit55", %_ZN6string10T.ToString9to_string20h5537758125275662918E.exit
call void @llvm.lifetime.end(i64 1, i8* %base)
ret void
next-block: ; preds = %entry-block
%.off = add i8 %2, -2
%64 = icmp ugt i8 %.off, 34
br i1 %64, label %then-block-13988-, label %next-block2
then-block-13988-: ; preds = %next-block
%65 = bitcast %"2.core::fmt::Arguments"* %14 to i8*
call void @llvm.lifetime.start(i64 48, i8* %65)
%66 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %15 to i8*
call void @llvm.lifetime.start(i64 16, i8* %66)
%67 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %15, i64 0, i64 0
%68 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %15, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i8*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num15u8.fmt..Display3fmt20h3661f4607cb841b8e1LE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %68, align 8, !alias.scope !837, !noalias !840
%69 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %15 to i8**
store i8* %base, i8** %69, align 8, !alias.scope !837, !noalias !840
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %65, i8* bitcast ({ %str_slice*, i64 }* @_ZN3int3Int14from_str_radix15__STATIC_FMTSTR20h988053cd86d698a82RdE to i8*), i64 16, i32 8, i1 false) #20, !alias.scope !842, !noalias !846
%70 = getelementptr inbounds %"2.core::fmt::Arguments"* %14, i64 0, i32 1
%71 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %70 to i8*
call void @llvm.memset.p0i8.i64(i8* %71, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !848, !noalias !849
%__coerce_target.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::fmt::Arguments"* %14, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %67, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx, align 8
%__coerce_target.sroa.4.0..sroa_idx79 = getelementptr inbounds %"2.core::fmt::Arguments"* %14, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx79, align 8
call void @_ZN2rt6unwind16begin_unwind_fmt20h63a60dd7113d0b6eNCwE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %14, { %str_slice, i32 }* noalias readonly dereferenceable(24) bitcast ({ %str_slice, i32, [4 x i8] }* @_ZN3int3Int12to_str_radix10_FILE_LINE20ha4186fc575371ad9nOdE to { %str_slice, i32 }*))
unreachable
next-block2: ; preds = %next-block
%72 = icmp slt i32 %17, 0
%73 = sub i32 0, %17
%sret_slot.0.i.i = select i1 %72, i32 %73, i32 %17
%74 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%75 = load %"ll::limb::Limb"** %74, align 8, !alias.scope !850
%76 = add i32 %sret_slot.0.i.i, -1
%77 = zext i8 %2 to i32
%78 = icmp ugt i8 %2, 1
tail call void @llvm.assume(i1 %78)
%79 = icmp eq i32 %76, 0
br i1 %79, label %next-block.i.i.thread, label %next-block.i
next-block.i.i.thread: ; preds = %next-block2
%80 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i8*
call void @llvm.lifetime.start(i64 24, i8* %80)
%81 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %81), !noalias !853
store i64 1, i64* %size.i.i, align 8, !noalias !853
br label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
next-block.i: ; preds = %next-block2
%82 = add i32 %sret_slot.0.i.i, -2
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds %"ll::limb::Limb"* %75, i64 %83, i32 0
%85 = load i64* %84, align 8
%86 = tail call i64 @llvm.ctlz.i64(i64 %85, i1 false) #20
%87 = sext i32 %76 to i64
%88 = shl nsw i64 %87, 6
%89 = sub nsw i64 %88, %86
%90 = add nuw nsw i32 %77, 255
%91 = and i32 %90, %77
%92 = icmp eq i32 %91, 0
br i1 %92, label %then-block-8960-.i, label %else-block.i
then-block-8960-.i: ; preds = %next-block.i
%93 = zext i8 %2 to i64
%94 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %93, i32 1, i32 0
%95 = load i64* %94, align 8
%96 = icmp eq i64 %95, 0
br i1 %96, label %cond.i, label %next.i
next.i: ; preds = %then-block-8960-.i
%97 = add nsw i64 %89, -1
%98 = add i64 %97, %95
%99 = udiv i64 %98, %95
br label %_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE.exit
cond.i: ; preds = %then-block-8960-.i
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @panic_loc8619)
unreachable
else-block.i: ; preds = %next-block.i
%100 = uitofp i64 %89 to double
%101 = uitofp i8 %2 to double
%102 = tail call double @llvm.log2.f64(double %101) #20
%103 = fdiv double %100, %102
%104 = tail call double @llvm.ceil.f64(double %103) #20
%105 = fptoui double %104 to i64
br label %_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE.exit
_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE.exit: ; preds = %next.i, %else-block.i
%llretslotptr.0.sroa.speculated.i = phi i64 [ %99, %next.i ], [ %105, %else-block.i ]
%106 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i8*
call void @llvm.lifetime.start(i64 24, i8* %106)
%107 = icmp eq i64 %llretslotptr.0.sroa.speculated.i, 0
br i1 %107, label %then-block-30737-.i, label %next-block.i.i
then-block-30737-.i: ; preds = %_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE.exit
%108 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i64*
store i64 1, i64* %108, align 8, !alias.scope !856
%109 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 1
%110 = bitcast i64* %109 to i8*
call void @llvm.memset.p0i8.i64(i8* %110, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !861
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
next-block.i.i: ; preds = %_ZN2ll4base15num_base_digits20h38406ca9489f1096etcE.exit
%111 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %111), !noalias !853
store i64 %llretslotptr.0.sroa.speculated.i, i64* %size.i.i, align 8, !noalias !853
%112 = icmp slt i64 %llretslotptr.0.sroa.speculated.i, 0
br i1 %112, label %then-block-27941-.i.i, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
then-block-27941-.i.i: ; preds = %next-block.i.i
%113 = bitcast %"2.core::fmt::Arguments"* %9 to i8*
call void @llvm.lifetime.start(i64 48, i8* %113), !noalias !853
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %113, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false), !noalias !853
%114 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %10 to i8*
call void @llvm.lifetime.start(i64 16, i8* %114), !noalias !853
%115 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %10, i64 0, i64 0
%116 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %10, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %116, align 8, !alias.scope !862, !noalias !865
%117 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %10 to i64**
store i64* %size.i.i, i64** %117, align 8, !alias.scope !862, !noalias !865
%118 = getelementptr inbounds %"2.core::fmt::Arguments"* %9, i64 0, i32 1
%119 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %118 to i8*
call void @llvm.memset.p0i8.i64(i8* %119, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !867, !noalias !870
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %9, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %115, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8, !noalias !853
%__coerce_target.sroa.4.0..sroa_idx22.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %9, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i, align 8, !noalias !853
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %9, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE), !noalias !853
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit: ; preds = %next-block.i.i.thread, %next-block.i.i
%120 = phi i8* [ %81, %next-block.i.i.thread ], [ %111, %next-block.i.i ]
%llretslotptr.0.sroa.speculated.i89.ph93 = phi i64 [ 1, %next-block.i.i.thread ], [ %llretslotptr.0.sroa.speculated.i, %next-block.i.i ]
%.ph9092 = phi i8* [ %80, %next-block.i.i.thread ], [ %106, %next-block.i.i ]
call void @llvm.lifetime.end(i64 8, i8* %120), !noalias !853
%121 = tail call i8* @je_mallocx(i64 %llretslotptr.0.sroa.speculated.i89.ph93, i32 0), !noalias !853
%122 = icmp eq i8* %121, null
br i1 %122, label %then-block-30767-.i, label %next-block.i26
then-block-30767-.i: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
tail call void @_ZN3oom20hca3a2a8b171e2cday6aE(), !noalias !853
unreachable
next-block.i26: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
%123 = ptrtoint i8* %121 to i64
%124 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i64*
store i64 %123, i64* %124, align 8, !alias.scope !873
%125 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 1
store i64 0, i64* %125, align 8, !alias.scope !873
%126 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
store i64 %llretslotptr.0.sroa.speculated.i89.ph93, i64* %126, align 8, !alias.scope !873
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i: ; preds = %next-block.i26, %then-block-30737-.i
%127 = phi i8* [ %106, %then-block-30737-.i ], [ %.ph9092, %next-block.i26 ]
%128 = ashr i32 %17, 31
%129 = or i32 %128, 1
%130 = icmp eq i32 %129, -1
br i1 %130, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit.i", label %next-block.i28
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit.i": ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%131 = bitcast { i8*, i64 }* %arg.i.i27 to i8*
call void @llvm.lifetime.start(i64 16, i8* %131), !noalias !876
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %131, i8* bitcast ({ i8*, i64 }* @const9630 to i8*), i64 16, i32 8, i1 false), !noalias !885
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i.i27)
to label %.noexc unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
.noexc: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit.i"
call void @llvm.lifetime.end(i64 16, i8* %131), !noalias !876
br label %next-block.i28
next-block.i28: ; preds = %.noexc, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%..i = select i1 %3, i8 65, i8 97
%132 = icmp slt i32 %sret_slot.0.i.i, 1
br i1 %132, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit101.i.i", label %next-block.i.i29
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit101.i.i": ; preds = %next-block.i28
%133 = getelementptr inbounds [1 x i8]* %5, i64 0, i64 0
call void @llvm.lifetime.start(i64 1, i8* %133), !noalias !886
%134 = getelementptr inbounds [1 x i8]* %4, i64 0, i64 0
call void @llvm.lifetime.start(i64 1, i8* %134), !noalias !889
store i8 48, i8* %134, align 1, !noalias !889
%135 = bitcast { i8*, i64 }* %arg.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %135), !noalias !892
%__coerce_target.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i.i.i, i64 0, i32 0
store i8* %134, i8** %__coerce_target.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !889
%__coerce_target.sroa.4.0..sroa_idx9.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i.i.i, i64 0, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx9.i.i.i, align 8, !noalias !889
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i.i.i.i)
to label %.noexc30 unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
.noexc30: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit101.i.i"
call void @llvm.lifetime.end(i64 16, i8* %135), !noalias !892
call void @llvm.lifetime.end(i64 1, i8* %134), !noalias !889
call void @llvm.lifetime.end(i64 1, i8* %133), !noalias !886
br label %normal-return6
next-block.i.i29: ; preds = %next-block.i28
%136 = add nuw nsw i32 %77, 255
%137 = and i32 %136, %77
%138 = icmp eq i32 %137, 0
br i1 %138, label %next.i.i, label %next-block.i.i.i.i
next.i.i: ; preds = %next-block.i.i29
%139 = zext i8 %2 to i64
%140 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %139, i32 1, i32 0
%141 = load i64* %140, align 8, !noalias !886
%142 = icmp ne i64 %141, 0
tail call void @llvm.assume(i1 %142), !noalias !886
%143 = sext i32 %76 to i64
%n1.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %75, i64 %143, i32 0
%n1.sroa.0.0.copyload.i.i = load i64* %n1.sroa.0.0..sroa_idx.i.i, align 8, !noalias !886
%144 = tail call i64 @llvm.ctlz.i64(i64 %n1.sroa.0.0.copyload.i.i, i1 false) #20
%145 = sext i32 %sret_slot.0.i.i to i64
%146 = shl nsw i64 %145, 6
%147 = sub nsw i64 %146, %144
%148 = urem i64 %147, %141
%149 = icmp eq i64 %148, 0
br i1 %149, label %next-block3.i.i, label %then-block-9278-.i.i
then-block-9278-.i.i: ; preds = %next.i.i
%150 = sub i64 %141, %148
%151 = add i64 %150, %147
br label %next-block3.i.i
next-block3.i.i: ; preds = %then-block-9278-.i.i, %next.i.i
%bits.0.i.i = phi i64 [ %151, %then-block-9278-.i.i ], [ %147, %next.i.i ]
%.neg295.i.i = sub nsw i64 64, %146
%152 = add i64 %.neg295.i.i, %bits.0.i.i
%153 = and i64 %141, 63
%154 = shl i64 1, %153
%155 = add i64 %154, 255
%156 = getelementptr inbounds [1 x i8]* %4, i64 0, i64 0
%157 = bitcast { i8*, i64 }* %arg.i.i147.i.i to i8*
%__coerce_target.sroa.0.0..sroa_idx.i148.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i147.i.i, i64 0, i32 0
%__coerce_target.sroa.4.0..sroa_idx9.i149.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i147.i.i, i64 0, i32 1
%158 = getelementptr inbounds [1 x i8]* %5, i64 0, i64 0
%159 = bitcast { i8*, i64 }* %arg.i4.i146.i.i to i8*
%__coerce_target1.sroa.0.0..sroa_idx.i151.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i146.i.i, i64 0, i32 0
%__coerce_target1.sroa.4.0..sroa_idx6.i152.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i146.i.i, i64 0, i32 1
%160 = bitcast { i8*, i64 }* %arg.i.i102.i.i to i8*
%__coerce_target.sroa.0.0..sroa_idx.i103.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i102.i.i, i64 0, i32 0
%__coerce_target.sroa.4.0..sroa_idx9.i104.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i102.i.i, i64 0, i32 1
%161 = bitcast { i8*, i64 }* %arg.i4.i.i.i to i8*
%__coerce_target1.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i.i.i, i64 0, i32 0
%__coerce_target1.sroa.4.0..sroa_idx6.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i.i.i, i64 0, i32 1
%162 = add nsw i8 %..i, -10
br label %loop_body.i.i
loop_body.i.i: ; preds = %loop_body.i.i.backedge, %next-block3.i.i
%i.0.i.i = phi i32 [ %76, %next-block3.i.i ], [ %164, %loop_body.i.i.backedge ]
%bit_pos.0.i.i = phi i64 [ %152, %next-block3.i.i ], [ %179, %loop_body.i.i.backedge ]
%n1.sroa.0.0.i.i = phi i64 [ %n1.sroa.0.0.copyload.i.i, %next-block3.i.i ], [ %n1.sroa.0.0.copyload53.i.i, %loop_body.i.i.backedge ]
%bit_pos.1314.i.i = sub i64 %bit_pos.0.i.i, %141
%163 = icmp sgt i64 %bit_pos.1314.i.i, -1
br i1 %163, label %while_body.i.i.preheader, label %while_exit.i.i
while_body.i.i.preheader: ; preds = %loop_body.i.i
br label %while_body.i.i
while_exit.i.i.loopexit: ; preds = %while_cond.backedge.i.i
%bit_pos.1.i.i.lcssa = phi i64 [ %bit_pos.1.i.i, %while_cond.backedge.i.i ]
br label %while_exit.i.i
while_exit.i.i: ; preds = %while_exit.i.i.loopexit, %loop_body.i.i
%bit_pos.1.lcssa.i.i = phi i64 [ %bit_pos.1314.i.i, %loop_body.i.i ], [ %bit_pos.1.i.i.lcssa, %while_exit.i.i.loopexit ]
%164 = add i32 %i.0.i.i, -1
%165 = icmp slt i32 %164, 0
br i1 %165, label %normal-return6.loopexit, label %next-block4.i.i
while_body.i.i: ; preds = %while_body.i.i.preheader, %while_cond.backedge.i.i
%bit_pos.1315.i.i = phi i64 [ %bit_pos.1.i.i, %while_cond.backedge.i.i ], [ %bit_pos.1314.i.i, %while_body.i.i.preheader ]
%166 = and i64 %bit_pos.1315.i.i, 63
%167 = lshr i64 %n1.sroa.0.0.i.i, %166
%168 = and i64 %167, %155
%169 = trunc i64 %168 to i8
%170 = icmp ult i8 %169, 10
br i1 %170, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit241.i.i", label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit145.i.i"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit241.i.i": ; preds = %while_body.i.i
call void @llvm.lifetime.start(i64 1, i8* %156), !noalias !897
%171 = add i8 %169, 48
store i8 %171, i8* %156, align 1, !noalias !897
call void @llvm.lifetime.start(i64 16, i8* %160), !noalias !900
store i8* %156, i8** %__coerce_target.sroa.0.0..sroa_idx.i103.i.i, align 8, !noalias !897
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx9.i104.i.i, align 8, !noalias !897
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i.i102.i.i)
to label %.noexc31 unwind label %unwind_ast_13967_.loopexit
.noexc31: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit241.i.i"
call void @llvm.lifetime.end(i64 16, i8* %160), !noalias !900
call void @llvm.lifetime.end(i64 1, i8* %156), !noalias !897
br label %while_cond.backedge.i.i
while_cond.backedge.i.i: ; preds = %.noexc32, %.noexc31
%bit_pos.1.i.i = sub i64 %bit_pos.1315.i.i, %141
%172 = icmp sgt i64 %bit_pos.1.i.i, -1
br i1 %172, label %while_body.i.i, label %while_exit.i.i.loopexit
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit145.i.i": ; preds = %while_body.i.i
call void @llvm.lifetime.start(i64 1, i8* %158), !noalias !897
%173 = add i8 %169, %162
store i8 %173, i8* %158, align 1, !noalias !897
call void @llvm.lifetime.start(i64 16, i8* %161), !noalias !905
store i8* %158, i8** %__coerce_target1.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !897
store i64 1, i64* %__coerce_target1.sroa.4.0..sroa_idx6.i.i.i, align 8, !noalias !897
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i4.i.i.i)
to label %.noexc32 unwind label %unwind_ast_13967_.loopexit
.noexc32: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit145.i.i"
call void @llvm.lifetime.end(i64 16, i8* %161), !noalias !905
call void @llvm.lifetime.end(i64 1, i8* %158), !noalias !897
br label %while_cond.backedge.i.i
next-block4.i.i: ; preds = %while_exit.i.i
%174 = sub i64 0, %bit_pos.1.lcssa.i.i
%175 = and i64 %174, 63
%176 = shl i64 %n1.sroa.0.0.i.i, %175
%177 = and i64 %176, %155
%178 = sext i32 %164 to i64
%n1.sroa.0.0..sroa_idx52.i.i = getelementptr inbounds %"ll::limb::Limb"* %75, i64 %178, i32 0
%n1.sroa.0.0.copyload53.i.i = load i64* %n1.sroa.0.0..sroa_idx52.i.i, align 8, !noalias !886
%179 = add i64 %bit_pos.1.lcssa.i.i, 64
%180 = and i64 %179, 63
%181 = lshr i64 %n1.sroa.0.0.copyload53.i.i, %180
%182 = or i64 %181, %177
%183 = trunc i64 %182 to i8
%184 = icmp ult i8 %183, 10
br i1 %184, label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit265.i.i", label %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit217.i.i"
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit265.i.i": ; preds = %next-block4.i.i
call void @llvm.lifetime.start(i64 1, i8* %156), !noalias !910
%185 = add i8 %183, 48
store i8 %185, i8* %156, align 1, !noalias !910
call void @llvm.lifetime.start(i64 16, i8* %157), !noalias !913
store i8* %156, i8** %__coerce_target.sroa.0.0..sroa_idx.i148.i.i, align 8, !noalias !910
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx9.i149.i.i, align 8, !noalias !910
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i.i147.i.i)
to label %.noexc33 unwind label %unwind_ast_13967_.nonloopexit.loopexit
.noexc33: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit265.i.i"
call void @llvm.lifetime.end(i64 16, i8* %157), !noalias !913
call void @llvm.lifetime.end(i64 1, i8* %156), !noalias !910
br label %loop_body.i.i.backedge
loop_body.i.i.backedge: ; preds = %.noexc33, %.noexc34
br label %loop_body.i.i
"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit217.i.i": ; preds = %next-block4.i.i
call void @llvm.lifetime.start(i64 1, i8* %158), !noalias !910
%186 = add i8 %183, %162
store i8 %186, i8* %158, align 1, !noalias !910
call void @llvm.lifetime.start(i64 16, i8* %159), !noalias !918
store i8* %158, i8** %__coerce_target1.sroa.0.0..sroa_idx.i151.i.i, align 8, !noalias !910
store i64 1, i64* %__coerce_target1.sroa.4.0..sroa_idx6.i152.i.i, align 8, !noalias !910
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i4.i146.i.i)
to label %.noexc34 unwind label %unwind_ast_13967_.nonloopexit.loopexit
.noexc34: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit217.i.i"
call void @llvm.lifetime.end(i64 16, i8* %159), !noalias !918
call void @llvm.lifetime.end(i64 1, i8* %158), !noalias !910
br label %loop_body.i.i.backedge
next-block.i.i.i.i: ; preds = %next-block.i.i29
%187 = bitcast %"ll::limb::Limb"* %75 to i8*
%188 = sext i32 %76 to i64
%189 = getelementptr inbounds %"ll::limb::Limb"* %75, i64 %188, i32 0
%190 = load i64* %189, align 8, !noalias !923
%191 = tail call i64 @llvm.ctlz.i64(i64 %190, i1 false) #20
%192 = sext i32 %sret_slot.0.i.i to i64
%193 = shl nsw i64 %192, 6
%194 = sub nsw i64 %193, %191
%195 = uitofp i64 %194 to double
%196 = uitofp i8 %2 to double
%197 = tail call double @llvm.log2.f64(double %196) #20
%198 = fdiv double %195, %197
%199 = tail call double @llvm.ceil.f64(double %198) #20
%200 = fptoui double %199 to i64
%201 = icmp eq i64 %200, 0
br i1 %201, label %_ZN3vec9from_elem20h9687329583078081599E.exit.i.i.i, label %next-block.i.i.i.i.i.i
next-block.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i
%202 = bitcast i64* %size.i.i.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %202), !noalias !926
store i64 %200, i64* %size.i.i.i.i.i.i, align 8, !noalias !926
%203 = icmp slt i64 %200, 0
br i1 %203, label %then-block-27941-.i.i.i.i.i.i, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i
then-block-27941-.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i
%204 = bitcast %"2.core::fmt::Arguments"* %8 to i8*
call void @llvm.lifetime.start(i64 48, i8* %204), !noalias !926
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %204, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false), !noalias !926
%205 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i8*
call void @llvm.lifetime.start(i64 16, i8* %205), !noalias !926
%206 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0
%207 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %207, align 8, !alias.scope !931, !noalias !934
%208 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i64**
store i64* %size.i.i.i.i.i.i, i64** %208, align 8, !alias.scope !931, !noalias !934
%209 = getelementptr inbounds %"2.core::fmt::Arguments"* %8, i64 0, i32 1
%210 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %209 to i8*
call void @llvm.memset.p0i8.i64(i8* %210, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !936, !noalias !939
%__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %8, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %206, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i.i, align 8, !noalias !926
%__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %8, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i.i, align 8, !noalias !926
invoke void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %8, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
to label %.noexc35 unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
.noexc35: ; preds = %then-block-27941-.i.i.i.i.i.i
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %202), !noalias !926
%211 = invoke i8* @je_mallocx(i64 %200, i32 0)
to label %.noexc36 unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
.noexc36: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i
%212 = icmp eq i8* %211, null
br i1 %212, label %then-block-30767-.i.i.i.i.i, label %normal-return2.i.i.i.i
then-block-30767-.i.i.i.i.i: ; preds = %.noexc36
invoke void @_ZN3oom20hca3a2a8b171e2cday6aE()
to label %.noexc37 unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
.noexc37: ; preds = %then-block-30767-.i.i.i.i.i
unreachable
normal-return2.i.i.i.i: ; preds = %.noexc36
%213 = icmp ugt i64 %200, 1
br i1 %213, label %normal-return11.lr.ph.i.i.i.i, label %normal-return13.i.i.i.i
normal-return11.lr.ph.i.i.i.i: ; preds = %normal-return2.i.i.i.i
%214 = add i64 %200, -1
tail call void @llvm.memset.p0i8.i64(i8* %211, i8 0, i64 %214, i32 1, i1 false), !noalias !942
%scevgep.i.i.i.i = getelementptr i8* %211, i64 %214
br label %normal-return13.i.i.i.i
normal-return13.i.i.i.i: ; preds = %normal-return11.lr.ph.i.i.i.i, %normal-return2.i.i.i.i
%ptr.0.lcssa.ph.i.i.i.i = phi i8* [ %211, %normal-return2.i.i.i.i ], [ %scevgep.i.i.i.i, %normal-return11.lr.ph.i.i.i.i ]
store i8 0, i8* %ptr.0.lcssa.ph.i.i.i.i, align 1, !noalias !942
br label %_ZN3vec9from_elem20h9687329583078081599E.exit.i.i.i
_ZN3vec9from_elem20h9687329583078081599E.exit.i.i.i: ; preds = %normal-return13.i.i.i.i, %next-block.i.i.i.i
%llretslotptr.0.sroa.speculated.i301.i.i.i = phi i64 [ %200, %normal-return13.i.i.i.i ], [ 0, %next-block.i.i.i.i ]
%v.sroa.0.0.365052.i.i.i.i = phi i8* [ %211, %normal-return13.i.i.i.i ], [ inttoptr (i64 1 to i8*), %next-block.i.i.i.i ]
%215 = add i32 %sret_slot.0.i.i, 1
%216 = sext i32 %215 to i64
%217 = icmp eq i32 %215, 0
br i1 %217, label %cond.i14.i.i.i, label %else-block1.i.i.i.i.i
else-block1.i.i.i.i.i: ; preds = %_ZN3vec9from_elem20h9687329583078081599E.exit.i.i.i
%218 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %216, i64 8) #20
%219 = extractvalue { i64, i1 } %218, 1
br i1 %219, label %match_else.i.i.i.i.i.i, label %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i.i.i.i"
match_else.i.i.i.i.i.i: ; preds = %else-block1.i.i.i.i.i
%220 = bitcast %str_slice* %arg.i.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %220), !noalias !943
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %220, i8* bitcast (%str_slice* @const9505 to i8*), i64 16, i32 8, i1 false), !noalias !943
%221 = bitcast %"2.core::fmt::Arguments"* %6 to i8*
call void @llvm.lifetime.start(i64 48, i8* %221), !noalias !948
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %221, i8* bitcast ({ %str_slice*, i64 }* @"_ZN6option15Option$LT$T$GT$6expect15__STATIC_FMTSTR20haa0bd212d55ff2847UEE" to i8*), i64 16, i32 8, i1 false), !noalias !948
%222 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i8*
call void @llvm.lifetime.start(i64 16, i8* %222), !noalias !948
%223 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0
%224 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (%str_slice*, %"2.core::fmt::Formatter"*)* @"_ZN3fmt25_$RF$$u27$a$u20$T.Display3fmt20h1407801074379592337E" to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %224, align 8, !alias.scope !952, !noalias !955
%225 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to %str_slice**
store %str_slice* %arg.i.i.i.i.i, %str_slice** %225, align 8, !alias.scope !952, !noalias !955
%226 = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 1
%227 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %226 to i8*
call void @llvm.memset.p0i8.i64(i8* %227, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !957, !noalias !960
%__coerce_target.sroa.0.0..sroa_idx.i.i.i2.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %223, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i.i2.i.i.i, align 8, !noalias !948
%__coerce_target.sroa.4.0..sroa_idx11.i.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %6, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx11.i.i.i.i.i.i, align 8, !noalias !948
invoke void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %6, { %str_slice, i32 }* noalias readonly dereferenceable(24) @"_ZN6option15Option$LT$T$GT$6expect10_FILE_LINE20h2e628244f9f1bd3aRUEE")
to label %.noexc.i.i.i unwind label %unwind_ast_9457_.i.i.i, !noalias !923
.noexc.i.i.i: ; preds = %match_else.i.i.i.i.i.i
unreachable
"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i.i.i.i": ; preds = %else-block1.i.i.i.i.i
%228 = extractvalue { i64, i1 } %218, 0
%229 = bitcast %str_slice* %arg.i.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %229), !noalias !943
call void @llvm.lifetime.end(i64 16, i8* %229), !alias.scope !963, !noalias !964
call void @llvm.lifetime.end(i64 16, i8* %229), !noalias !943
%230 = bitcast i64* %size.i.i.i.i.i.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %230), !noalias !943
store i64 %228, i64* %size.i.i.i.i.i.i.i, align 8, !noalias !943
%231 = icmp eq i64 %228, 0
br i1 %231, label %then-block-27908-.i.i.i.i.i.i.i, label %next-block.i.i.i.i.i.i.i
then-block-27908-.i.i.i.i.i.i.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i.i.i.i"
invoke void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE)
to label %.noexc9.i.i.i unwind label %unwind_ast_9457_.i.i.i, !noalias !923
.noexc9.i.i.i: ; preds = %then-block-27908-.i.i.i.i.i.i.i
unreachable
next-block.i.i.i.i.i.i.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i.i.i.i"
%232 = icmp slt i64 %228, 0
br i1 %232, label %then-block-27941-.i.i.i.i.i.i.i, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i.i
then-block-27941-.i.i.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i.i
%233 = bitcast %"2.core::fmt::Arguments"* %7 to i8*
call void @llvm.lifetime.start(i64 48, i8* %233), !noalias !943
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %233, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false), !noalias !943
%234 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i8*
call void @llvm.lifetime.start(i64 16, i8* %234), !noalias !943
%235 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0
%236 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %12, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %236, align 8, !alias.scope !965, !noalias !968
%237 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %12 to i64**
store i64* %size.i.i.i.i.i.i.i, i64** %237, align 8, !alias.scope !965, !noalias !968
%238 = getelementptr inbounds %"2.core::fmt::Arguments"* %7, i64 0, i32 1
%239 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %238 to i8*
call void @llvm.memset.p0i8.i64(i8* %239, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !970, !noalias !973
%__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %7, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %235, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i.i.i.i.i.i, align 8, !noalias !943
%__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %7, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i.i.i.i.i.i, align 8, !noalias !943
invoke void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %7, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
to label %.noexc10.i.i.i unwind label %unwind_ast_9457_.i.i.i, !noalias !923
.noexc10.i.i.i: ; preds = %then-block-27941-.i.i.i.i.i.i.i
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i.i: ; preds = %next-block.i.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 8, i8* %230), !noalias !943
%240 = invoke i8* @je_mallocx(i64 %228, i32 0)
to label %.noexc11.i.i.i unwind label %unwind_ast_9457_.i.i.i, !noalias !923
.noexc11.i.i.i: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i.i
%241 = icmp eq i8* %240, null
br i1 %241, label %then-block-30767-.i.i3.i.i.i, label %normal-return7.i.i.i
then-block-30767-.i.i3.i.i.i: ; preds = %.noexc11.i.i.i
invoke void @_ZN3oom20hca3a2a8b171e2cday6aE()
to label %.noexc12.i.i.i unwind label %unwind_ast_9457_.i.i.i, !noalias !923
.noexc12.i.i.i: ; preds = %then-block-30767-.i.i3.i.i.i
unreachable
cond.i14.i.i.i: ; preds = %_ZN3vec9from_elem20h9687329583078081599E.exit.i.i.i
invoke void @_ZN9panicking18panic_bounds_check20hd2d91b0e4588e71aA4BE({ %str_slice, i32 }* noalias readonly dereferenceable(24) @panic_bounds_check_loc9646, i64 0, i64 0)
to label %.noexc15.i.i.i unwind label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i", !noalias !923
.noexc15.i.i.i: ; preds = %cond.i14.i.i.i
unreachable
unwind_ast_9457_.i.i.i: ; preds = %then-block-30767-.i.i3.i.i.i, %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i.i, %then-block-27941-.i.i.i.i.i.i.i, %then-block-27908-.i.i.i.i.i.i.i, %match_else.i.i.i.i.i.i
%242 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract.i.i.i = extractvalue { i8*, i32 } %242, 0
%.fca.1.extract.i.i.i = extractvalue { i8*, i32 } %242, 1
switch i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, label %then-block-28382-.i.i.i.i.i [
i64 2097865012304223517, label %clean_custom_.i.i.i
i64 0, label %clean_custom_.i.i.i
]
then-block-28382-.i.i.i.i.i: ; preds = %unwind_ast_9457_.i.i.i
invoke void @je_sdallocx(i8* %v.sroa.0.0.365052.i.i.i.i, i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, i32 0)
to label %clean_custom_.i.i.i unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
clean_custom_.i.i.i: ; preds = %then-block-28382-.i.i168.i.i.i, %then-block-28382-.i.i22.i.i.i, %then-block-28382-.i.i17.i.i.i, %then-block-28382-.i.i.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i", %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i", %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i", %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i", %unwind_ast_9457_.i.i.i, %unwind_ast_9457_.i.i.i
%.sroa.0.0.i.i.i = phi i8* [ %.fca.0.extract.i.i.i, %unwind_ast_9457_.i.i.i ], [ %.fca.0.extract.i.i.i, %unwind_ast_9457_.i.i.i ], [ %.fca.0.extract271.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i" ], [ %.fca.0.extract271.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i" ], [ %.fca.0.extract291.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i" ], [ %.fca.0.extract291.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i" ], [ %.fca.0.extract.i.i.i, %then-block-28382-.i.i.i.i.i ], [ %.fca.0.extract271.i.i.i, %then-block-28382-.i.i17.i.i.i ], [ %.fca.0.extract279.i.i.i, %then-block-28382-.i.i22.i.i.i ], [ %.fca.0.extract291.i.i.i, %then-block-28382-.i.i168.i.i.i ]
%.sroa.9.0.i.i.i = phi i32 [ %.fca.1.extract.i.i.i, %unwind_ast_9457_.i.i.i ], [ %.fca.1.extract.i.i.i, %unwind_ast_9457_.i.i.i ], [ %.fca.1.extract273.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i" ], [ %.fca.1.extract273.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i" ], [ %.fca.1.extract293.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i" ], [ %.fca.1.extract293.i.i.i, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i" ], [ %.fca.1.extract.i.i.i, %then-block-28382-.i.i.i.i.i ], [ %.fca.1.extract273.i.i.i, %then-block-28382-.i.i17.i.i.i ], [ %.fca.1.extract281.i.i.i, %then-block-28382-.i.i22.i.i.i ], [ %.fca.1.extract293.i.i.i, %then-block-28382-.i.i168.i.i.i ]
%.fca.0.insert.i.i.i = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0.i.i.i, 0
%.fca.1.insert.i.i.i = insertvalue { i8*, i32 } %.fca.0.insert.i.i.i, i32 %.sroa.9.0.i.i.i, 1
br label %unwind_ast_13967_.body
"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i": ; preds = %cond.i14.i.i.i
%243 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract271.i.i.i = extractvalue { i8*, i32 } %243, 0
%.fca.1.extract273.i.i.i = extractvalue { i8*, i32 } %243, 1
switch i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, label %then-block-28382-.i.i17.i.i.i [
i64 2097865012304223517, label %clean_custom_.i.i.i
i64 0, label %clean_custom_.i.i.i
]
then-block-28382-.i.i17.i.i.i: ; preds = %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit.i.i.i"
invoke void @je_sdallocx(i8* %v.sroa.0.0.365052.i.i.i.i, i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, i32 0)
to label %clean_custom_.i.i.i unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
normal-return7.i.i.i: ; preds = %.noexc11.i.i.i
%244 = bitcast i8* %240 to %"ll::limb::Limb"*
%245 = add nsw i64 %216, -1
%246 = shl nsw i64 %216, 3
%247 = add nsw i64 %246, -8
tail call void @llvm.memset.p0i8.i64(i8* %240, i8 0, i64 %247, i32 8, i1 false), !noalias !976
%src.sroa.0.0..sroa_idx.i1.i.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %244, i64 %245, i32 0
store i64 0, i64* %src.sroa.0.0..sroa_idx.i1.i.i.i.i, align 8, !noalias !976
%248 = getelementptr inbounds i8* %240, i64 8
%249 = bitcast i8* %248 to %"ll::limb::Limb"*
%250 = zext i32 %76 to i64
%251 = shl nuw nsw i64 %250, 3
%252 = add nuw nsw i64 %251, 8
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %248, i8* %187, i64 %252, i32 8, i1 false), !noalias !923
%253 = icmp eq i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, 0
br i1 %253, label %cond.i20.i.i.i, label %normal-return17.i.i.i, !prof !482
cond.i20.i.i.i: ; preds = %normal-return7.i.i.i
invoke void @_ZN9panicking18panic_bounds_check20hd2d91b0e4588e71aA4BE({ %str_slice, i32 }* noalias readonly dereferenceable(24) @panic_bounds_check_loc9646, i64 0, i64 0)
to label %.noexc21.i.i.i unwind label %then-block-28382-.i.i22.i.i.i, !noalias !923
.noexc21.i.i.i: ; preds = %cond.i20.i.i.i
unreachable
then-block-28382-.i.i22.i.i.i: ; preds = %cond.i20.i.i.i
%254 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.1.extract281.i.i.i = extractvalue { i8*, i32 } %254, 1
%.fca.0.extract279.i.i.i = extractvalue { i8*, i32 } %254, 0
invoke void @je_sdallocx(i8* %240, i64 %246, i32 0)
to label %clean_custom_.i.i.i unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
normal-return17.i.i.i: ; preds = %normal-return7.i.i.i
%255 = getelementptr inbounds i8* %v.sroa.0.0.365052.i.i.i.i, i64 %llretslotptr.0.sroa.speculated.i301.i.i.i
%256 = zext i8 %2 to i64
%257 = icmp eq i8 %2, 10
br i1 %257, label %while_cond.preheader.i.i.i, label %normal-return54.i.i.i
while_cond.preheader.i.i.i: ; preds = %normal-return17.i.i.i
%258 = icmp sgt i32 %sret_slot.0.i.i, 1
br i1 %258, label %normal-return30.lr.ph.i.i.i, label %normal-return38.i.i.i
normal-return30.lr.ph.i.i.i: ; preds = %while_cond.preheader.i.i.i
%259 = bitcast i8* %240 to i64*
br label %normal-return30.i.i.i
normal-return30.i.i.i: ; preds = %normal-return30.i.i.i, %normal-return30.lr.ph.i.i.i
%nn.0331.i.i.i = phi i32 [ %sret_slot.0.i.i, %normal-return30.lr.ph.i.i.i ], [ %362, %normal-return30.i.i.i ]
%sz.0330.i.i.i = phi i32 [ 0, %normal-return30.lr.ph.i.i.i ], [ %268, %normal-return30.i.i.i ]
%s12.0329.i.i.i = phi i8* [ %255, %normal-return30.lr.ph.i.i.i ], [ %267, %normal-return30.i.i.i ]
%260 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %244, i32 1, %"ll::limb::Limb"* %249, i32 %nn.0331.i.i.i, i64 -8446744073709551616), !noalias !923
%261 = sext i32 %nn.0331.i.i.i to i64
%262 = getelementptr inbounds %"ll::limb::Limb"* %244, i64 %261, i32 0
%263 = load i64* %262, align 8, !alias.scope !977, !noalias !980
%264 = icmp eq i64 %263, 0
%..i.i.i = zext i1 %264 to i32
%265 = load i64* %259, align 8, !noalias !923
%266 = add i64 %265, 1
%267 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -19
%268 = add i32 %sz.0330.i.i.i, 19
%269 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %266, i64 10) #20, !noalias !982, !srcloc !19
%270 = extractvalue { i64, i64 } %269, 0
%271 = extractvalue { i64, i64 } %269, 1
%272 = trunc i64 %270 to i8
store i8 %272, i8* %267, align 1, !noalias !923
%273 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -18
%274 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %271, i64 10) #20, !noalias !982, !srcloc !19
%275 = extractvalue { i64, i64 } %274, 0
%276 = extractvalue { i64, i64 } %274, 1
%277 = trunc i64 %275 to i8
store i8 %277, i8* %273, align 1, !noalias !923
%278 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -17
%279 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %276, i64 10) #20, !noalias !982, !srcloc !19
%280 = extractvalue { i64, i64 } %279, 0
%281 = extractvalue { i64, i64 } %279, 1
%282 = trunc i64 %280 to i8
store i8 %282, i8* %278, align 1, !noalias !923
%283 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -16
%284 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %281, i64 10) #20, !noalias !982, !srcloc !19
%285 = extractvalue { i64, i64 } %284, 0
%286 = extractvalue { i64, i64 } %284, 1
%287 = trunc i64 %285 to i8
store i8 %287, i8* %283, align 1, !noalias !923
%288 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -15
%289 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %286, i64 10) #20, !noalias !982, !srcloc !19
%290 = extractvalue { i64, i64 } %289, 0
%291 = extractvalue { i64, i64 } %289, 1
%292 = trunc i64 %290 to i8
store i8 %292, i8* %288, align 1, !noalias !923
%293 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -14
%294 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %291, i64 10) #20, !noalias !982, !srcloc !19
%295 = extractvalue { i64, i64 } %294, 0
%296 = extractvalue { i64, i64 } %294, 1
%297 = trunc i64 %295 to i8
store i8 %297, i8* %293, align 1, !noalias !923
%298 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -13
%299 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %296, i64 10) #20, !noalias !982, !srcloc !19
%300 = extractvalue { i64, i64 } %299, 0
%301 = extractvalue { i64, i64 } %299, 1
%302 = trunc i64 %300 to i8
store i8 %302, i8* %298, align 1, !noalias !923
%303 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -12
%304 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %301, i64 10) #20, !noalias !982, !srcloc !19
%305 = extractvalue { i64, i64 } %304, 0
%306 = extractvalue { i64, i64 } %304, 1
%307 = trunc i64 %305 to i8
store i8 %307, i8* %303, align 1, !noalias !923
%308 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -11
%309 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %306, i64 10) #20, !noalias !982, !srcloc !19
%310 = extractvalue { i64, i64 } %309, 0
%311 = extractvalue { i64, i64 } %309, 1
%312 = trunc i64 %310 to i8
store i8 %312, i8* %308, align 1, !noalias !923
%313 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -10
%314 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %311, i64 10) #20, !noalias !982, !srcloc !19
%315 = extractvalue { i64, i64 } %314, 0
%316 = extractvalue { i64, i64 } %314, 1
%317 = trunc i64 %315 to i8
store i8 %317, i8* %313, align 1, !noalias !923
%318 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -9
%319 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %316, i64 10) #20, !noalias !982, !srcloc !19
%320 = extractvalue { i64, i64 } %319, 0
%321 = extractvalue { i64, i64 } %319, 1
%322 = trunc i64 %320 to i8
store i8 %322, i8* %318, align 1, !noalias !923
%323 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -8
%324 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %321, i64 10) #20, !noalias !982, !srcloc !19
%325 = extractvalue { i64, i64 } %324, 0
%326 = extractvalue { i64, i64 } %324, 1
%327 = trunc i64 %325 to i8
store i8 %327, i8* %323, align 1, !noalias !923
%328 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -7
%329 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %326, i64 10) #20, !noalias !982, !srcloc !19
%330 = extractvalue { i64, i64 } %329, 0
%331 = extractvalue { i64, i64 } %329, 1
%332 = trunc i64 %330 to i8
store i8 %332, i8* %328, align 1, !noalias !923
%333 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -6
%334 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %331, i64 10) #20, !noalias !982, !srcloc !19
%335 = extractvalue { i64, i64 } %334, 0
%336 = extractvalue { i64, i64 } %334, 1
%337 = trunc i64 %335 to i8
store i8 %337, i8* %333, align 1, !noalias !923
%338 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -5
%339 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %336, i64 10) #20, !noalias !982, !srcloc !19
%340 = extractvalue { i64, i64 } %339, 0
%341 = extractvalue { i64, i64 } %339, 1
%342 = trunc i64 %340 to i8
store i8 %342, i8* %338, align 1, !noalias !923
%343 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -4
%344 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %341, i64 10) #20, !noalias !982, !srcloc !19
%345 = extractvalue { i64, i64 } %344, 0
%346 = extractvalue { i64, i64 } %344, 1
%347 = trunc i64 %345 to i8
store i8 %347, i8* %343, align 1, !noalias !923
%348 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -3
%349 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %346, i64 10) #20, !noalias !982, !srcloc !19
%350 = extractvalue { i64, i64 } %349, 0
%351 = extractvalue { i64, i64 } %349, 1
%352 = trunc i64 %350 to i8
store i8 %352, i8* %348, align 1, !noalias !923
%353 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -2
%354 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %351, i64 10) #20, !noalias !982, !srcloc !19
%355 = extractvalue { i64, i64 } %354, 0
%356 = extractvalue { i64, i64 } %354, 1
%357 = trunc i64 %355 to i8
store i8 %357, i8* %353, align 1, !noalias !923
%358 = getelementptr inbounds i8* %s12.0329.i.i.i, i64 -1
%359 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %356, i64 10) #20, !noalias !982, !srcloc !19
%360 = extractvalue { i64, i64 } %359, 0
%361 = trunc i64 %360 to i8
store i8 %361, i8* %358, align 1, !noalias !923
%362 = sub i32 %nn.0331.i.i.i, %..i.i.i
%363 = icmp sgt i32 %362, 1
br i1 %363, label %normal-return30.i.i.i, label %normal-return38.i.i.i.loopexit
normal-return38.i.i.i.loopexit: ; preds = %normal-return30.i.i.i
%.lcssa124 = phi i32 [ %268, %normal-return30.i.i.i ]
%.lcssa123 = phi i8* [ %267, %normal-return30.i.i.i ]
br label %normal-return38.i.i.i
normal-return38.i.i.i: ; preds = %normal-return38.i.i.i.loopexit, %while_cond.preheader.i.i.i
%sz.0.lcssa.i.i.i = phi i32 [ 0, %while_cond.preheader.i.i.i ], [ %.lcssa124, %normal-return38.i.i.i.loopexit ]
%s12.0.lcssa.i.i.i = phi i8* [ %255, %while_cond.preheader.i.i.i ], [ %.lcssa123, %normal-return38.i.i.i.loopexit ]
%364 = bitcast i8* %248 to i64*
%365 = load i64* %364, align 8, !noalias !923
%366 = icmp eq i64 %365, 0
br i1 %366, label %while_cond100.preheader.i.i.i, label %normal-return45.i.i.i.preheader
normal-return45.i.i.i.preheader: ; preds = %normal-return38.i.i.i
br label %normal-return45.i.i.i
normal-return45.i.i.i: ; preds = %normal-return45.i.i.i.preheader, %normal-return45.i.i.i
%sz.2327.i.i.i = phi i32 [ %372, %normal-return45.i.i.i ], [ %sz.0.lcssa.i.i.i, %normal-return45.i.i.i.preheader ]
%s12.2326.i.i.i = phi i8* [ %370, %normal-return45.i.i.i ], [ %s12.0.lcssa.i.i.i, %normal-return45.i.i.i.preheader ]
%367 = phi i64 [ %368, %normal-return45.i.i.i ], [ %365, %normal-return45.i.i.i.preheader ]
%368 = udiv i64 %367, %256
%369 = urem i64 %367, %256
%370 = getelementptr inbounds i8* %s12.2326.i.i.i, i64 -1
%371 = trunc i64 %369 to i8
store i8 %371, i8* %370, align 1, !noalias !923
%372 = add i32 %sz.2327.i.i.i, 1
%373 = icmp eq i64 %368, 0
br i1 %373, label %while_cond100.preheader.i.i.i.loopexit, label %normal-return45.i.i.i
normal-return54.i.i.i: ; preds = %normal-return17.i.i.i
%374 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %256, i32 0
%375 = load i32* %374, align 16, !noalias !923
%big_base52.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %256, i32 1, i32 0
%big_base52.sroa.0.0.copyload.i.i.i = load i64* %big_base52.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !923
%376 = icmp sgt i32 %sret_slot.0.i.i, 1
br i1 %376, label %normal-return67.lr.ph.i.i.i, label %normal-return82.i.i.i
normal-return67.lr.ph.i.i.i: ; preds = %normal-return54.i.i.i
%377 = bitcast i8* %240 to i64*
%378 = zext i32 %375 to i64
%379 = sub nsw i64 0, %378
%380 = add i32 %375, -1
%381 = zext i32 %380 to i64
%factor.i.i = shl nsw i64 %379, 1
%.sum.i.i.i = add nuw nsw i64 %381, 1
%scevgep350.sum.i.i.i = add nsw i64 %.sum.i.i.i, %factor.i.i
br label %normal-return67.i.i.i
normal-return67.i.i.i: ; preds = %clean_ast_9835_.i.i.i, %normal-return67.lr.ph.i.i.i
%nn.1340.i.i.i = phi i32 [ %sret_slot.0.i.i, %normal-return67.lr.ph.i.i.i ], [ %398, %clean_ast_9835_.i.i.i ]
%sz.3339.i.i.i = phi i32 [ 0, %normal-return67.lr.ph.i.i.i ], [ %397, %clean_ast_9835_.i.i.i ]
%s12.3338.i.i.i = phi i8* [ %255, %normal-return67.lr.ph.i.i.i ], [ %399, %clean_ast_9835_.i.i.i ]
%382 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %244, i32 1, %"ll::limb::Limb"* %249, i32 %nn.1340.i.i.i, i64 %big_base52.sroa.0.0.copyload.i.i.i), !noalias !923
%383 = sext i32 %nn.1340.i.i.i to i64
%384 = getelementptr inbounds %"ll::limb::Limb"* %244, i64 %383, i32 0
%385 = load i64* %384, align 8, !alias.scope !989, !noalias !992
%386 = load i64* %377, align 8, !noalias !923
%387 = add i64 %386, 1
%388 = getelementptr inbounds i8* %s12.3338.i.i.i, i64 %379
br label %normal-return76.i.i.i
normal-return76.i.i.i: ; preds = %normal-return76.i.i.i, %normal-return67.i.i.i
%i70.0.i.i.i = phi i32 [ %394, %normal-return76.i.i.i ], [ %375, %normal-return67.i.i.i ]
%frac66.sroa.0.0.i.i.i = phi i64 [ %391, %normal-return76.i.i.i ], [ %387, %normal-return67.i.i.i ]
%s12.4.i.i.i = phi i8* [ %393, %normal-return76.i.i.i ], [ %388, %normal-return67.i.i.i ]
%389 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %frac66.sroa.0.0.i.i.i, i64 %256) #20, !noalias !994, !srcloc !19
%390 = extractvalue { i64, i64 } %389, 0
%391 = extractvalue { i64, i64 } %389, 1
%392 = trunc i64 %390 to i8
store i8 %392, i8* %s12.4.i.i.i, align 1, !noalias !923
%393 = getelementptr inbounds i8* %s12.4.i.i.i, i64 1
%394 = add i32 %i70.0.i.i.i, -1
%395 = icmp eq i32 %394, 0
br i1 %395, label %clean_ast_9835_.i.i.i, label %normal-return76.i.i.i
clean_ast_9835_.i.i.i: ; preds = %normal-return76.i.i.i
%396 = icmp eq i64 %385, 0
%.1.i.i.i = zext i1 %396 to i32
%397 = add i32 %sz.3339.i.i.i, %375
%398 = sub i32 %nn.1340.i.i.i, %.1.i.i.i
%399 = getelementptr inbounds i8* %s12.3338.i.i.i, i64 %scevgep350.sum.i.i.i
%400 = icmp sgt i32 %398, 1
br i1 %400, label %normal-return67.i.i.i, label %normal-return82.i.i.i.loopexit
normal-return82.i.i.i.loopexit: ; preds = %clean_ast_9835_.i.i.i
%.lcssa128 = phi i8* [ %399, %clean_ast_9835_.i.i.i ]
%.lcssa127 = phi i32 [ %397, %clean_ast_9835_.i.i.i ]
br label %normal-return82.i.i.i
normal-return82.i.i.i: ; preds = %normal-return82.i.i.i.loopexit, %normal-return54.i.i.i
%sz.3.lcssa.i.i.i = phi i32 [ 0, %normal-return54.i.i.i ], [ %.lcssa127, %normal-return82.i.i.i.loopexit ]
%s12.3.lcssa.i.i.i = phi i8* [ %255, %normal-return54.i.i.i ], [ %.lcssa128, %normal-return82.i.i.i.loopexit ]
%401 = bitcast i8* %248 to i64*
%402 = load i64* %401, align 8, !noalias !923
%403 = icmp eq i64 %402, 0
br i1 %403, label %while_cond100.preheader.i.i.i, label %normal-return90.i.i.i.preheader
normal-return90.i.i.i.preheader: ; preds = %normal-return82.i.i.i
br label %normal-return90.i.i.i
normal-return90.i.i.i: ; preds = %normal-return90.i.i.i.preheader, %normal-return90.i.i.i
%sz.5335.i.i.i = phi i32 [ %409, %normal-return90.i.i.i ], [ %sz.3.lcssa.i.i.i, %normal-return90.i.i.i.preheader ]
%s12.5334.i.i.i = phi i8* [ %407, %normal-return90.i.i.i ], [ %s12.3.lcssa.i.i.i, %normal-return90.i.i.i.preheader ]
%404 = phi i64 [ %405, %normal-return90.i.i.i ], [ %402, %normal-return90.i.i.i.preheader ]
%405 = udiv i64 %404, %256
%406 = urem i64 %404, %256
%407 = getelementptr inbounds i8* %s12.5334.i.i.i, i64 -1
%408 = trunc i64 %406 to i8
store i8 %408, i8* %407, align 1, !noalias !923
%409 = add i32 %sz.5335.i.i.i, 1
%410 = icmp eq i64 %405, 0
br i1 %410, label %while_cond100.preheader.i.i.i.loopexit121, label %normal-return90.i.i.i
while_cond100.preheader.i.i.i.loopexit: ; preds = %normal-return45.i.i.i
%.lcssa122 = phi i32 [ %372, %normal-return45.i.i.i ]
%.lcssa = phi i8* [ %370, %normal-return45.i.i.i ]
br label %while_cond100.preheader.i.i.i
while_cond100.preheader.i.i.i.loopexit121: ; preds = %normal-return90.i.i.i
%.lcssa126 = phi i32 [ %409, %normal-return90.i.i.i ]
%.lcssa125 = phi i8* [ %407, %normal-return90.i.i.i ]
br label %while_cond100.preheader.i.i.i
while_cond100.preheader.i.i.i: ; preds = %while_cond100.preheader.i.i.i.loopexit121, %while_cond100.preheader.i.i.i.loopexit, %normal-return82.i.i.i, %normal-return38.i.i.i
%s12.6.i.i.i = phi i8* [ %s12.0.lcssa.i.i.i, %normal-return38.i.i.i ], [ %s12.3.lcssa.i.i.i, %normal-return82.i.i.i ], [ %.lcssa, %while_cond100.preheader.i.i.i.loopexit ], [ %.lcssa125, %while_cond100.preheader.i.i.i.loopexit121 ]
%sz.6.i.i.i = phi i32 [ %sz.0.lcssa.i.i.i, %normal-return38.i.i.i ], [ %sz.3.lcssa.i.i.i, %normal-return82.i.i.i ], [ %.lcssa122, %while_cond100.preheader.i.i.i.loopexit ], [ %.lcssa126, %while_cond100.preheader.i.i.i.loopexit121 ]
%411 = icmp eq i32 %sz.6.i.i.i, 0
br i1 %411, label %while_exit99.i.i.i, label %while_body101.lr.ph.i.i.i
while_body101.lr.ph.i.i.i: ; preds = %while_cond100.preheader.i.i.i
%412 = getelementptr inbounds [1 x i8]* %4, i64 0, i64 0
%413 = bitcast { i8*, i64 }* %arg.i.i32.i.i.i to i8*
%__coerce_target.sroa.0.0..sroa_idx.i.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i32.i.i.i, i64 0, i32 0
%__coerce_target.sroa.4.0..sroa_idx9.i.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i.i32.i.i.i, i64 0, i32 1
%414 = getelementptr inbounds [1 x i8]* %5, i64 0, i64 0
%415 = bitcast { i8*, i64 }* %arg.i4.i.i.i.i to i8*
%__coerce_target1.sroa.0.0..sroa_idx.i.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i.i.i.i, i64 0, i32 0
%__coerce_target1.sroa.4.0..sroa_idx6.i.i.i.i = getelementptr inbounds { i8*, i64 }* %arg.i4.i.i.i.i, i64 0, i32 1
%416 = add nsw i8 %..i, -10
br label %while_body101.i.i.i
unwind_ast_9457_97.body.i.i.i: ; preds = %else-block.i33.i.i.i, %then-block-14192-.i.i.i.i
%lpad.loopexit.i.i.i = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract291.i.i.i = extractvalue { i8*, i32 } %lpad.loopexit.i.i.i, 0
%.fca.1.extract293.i.i.i = extractvalue { i8*, i32 } %lpad.loopexit.i.i.i, 1
switch i64 %216, label %then-block-28382-.i.i166.i.i.i [
i64 2097865012304223517, label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i"
i64 0, label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i"
]
then-block-28382-.i.i166.i.i.i: ; preds = %unwind_ast_9457_97.body.i.i.i
invoke void @je_sdallocx(i8* %240, i64 %246, i32 0)
to label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i" unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i": ; preds = %then-block-28382-.i.i166.i.i.i, %unwind_ast_9457_97.body.i.i.i, %unwind_ast_9457_97.body.i.i.i
switch i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, label %then-block-28382-.i.i168.i.i.i [
i64 2097865012304223517, label %clean_custom_.i.i.i
i64 0, label %clean_custom_.i.i.i
]
then-block-28382-.i.i168.i.i.i: ; preds = %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit167.i.i.i"
invoke void @je_sdallocx(i8* %v.sroa.0.0.365052.i.i.i.i, i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, i32 0)
to label %clean_custom_.i.i.i unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
while_exit99.i.i.i.loopexit: ; preds = %normal-return103.i.i.i
br label %while_exit99.i.i.i
while_exit99.i.i.i: ; preds = %while_exit99.i.i.i.loopexit, %while_cond100.preheader.i.i.i
switch i64 %216, label %then-block-28382-.i.i130.i.i.i [
i64 2097865012304223517, label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i"
i64 0, label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i"
]
then-block-28382-.i.i130.i.i.i: ; preds = %while_exit99.i.i.i
invoke void @je_sdallocx(i8* %240, i64 %246, i32 0)
to label %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i" unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i": ; preds = %then-block-28382-.i.i130.i.i.i, %while_exit99.i.i.i, %while_exit99.i.i.i
switch i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, label %then-block-28382-.i.i128.i.i.i [
i64 2097865012304223517, label %normal-return6
i64 0, label %normal-return6
]
then-block-28382-.i.i128.i.i.i: ; preds = %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i"
invoke void @je_sdallocx(i8* %v.sroa.0.0.365052.i.i.i.i, i64 %llretslotptr.0.sroa.speculated.i301.i.i.i, i32 0)
to label %normal-return6 unwind label %unwind_ast_13967_.nonloopexit.nonloopexit
while_body101.i.i.i: ; preds = %normal-return103.i.i.i, %while_body101.lr.ph.i.i.i
%l.0324.i.i.i = phi i32 [ %sz.6.i.i.i, %while_body101.lr.ph.i.i.i ], [ %422, %normal-return103.i.i.i ]
%s12.7323.i.i.i = phi i8* [ %s12.6.i.i.i, %while_body101.lr.ph.i.i.i ], [ %421, %normal-return103.i.i.i ]
%417 = load i8* %s12.7323.i.i.i, align 1, !noalias !923
%418 = icmp ult i8 %417, 10
br i1 %418, label %then-block-14192-.i.i.i.i, label %else-block.i33.i.i.i
then-block-14192-.i.i.i.i: ; preds = %while_body101.i.i.i
call void @llvm.lifetime.start(i64 1, i8* %412), !noalias !1001
%419 = add i8 %417, 48
store i8 %419, i8* %412, align 1, !noalias !1001
call void @llvm.lifetime.start(i64 16, i8* %413), !noalias !1004
store i8* %412, i8** %__coerce_target.sroa.0.0..sroa_idx.i.i.i.i, align 8, !noalias !1001
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx9.i.i.i.i, align 8, !noalias !1001
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i.i32.i.i.i)
to label %.noexc35.i.i.i unwind label %unwind_ast_9457_97.body.i.i.i, !noalias !1009
.noexc35.i.i.i: ; preds = %then-block-14192-.i.i.i.i
call void @llvm.lifetime.end(i64 16, i8* %413), !noalias !1004
call void @llvm.lifetime.end(i64 1, i8* %412), !noalias !1001
br label %normal-return103.i.i.i
else-block.i33.i.i.i: ; preds = %while_body101.i.i.i
call void @llvm.lifetime.start(i64 1, i8* %414), !noalias !1001
%420 = add i8 %416, %417
store i8 %420, i8* %414, align 1, !noalias !1001
call void @llvm.lifetime.start(i64 16, i8* %415), !noalias !1010
store i8* %414, i8** %__coerce_target1.sroa.0.0..sroa_idx.i.i.i.i, align 8, !noalias !1001
store i64 1, i64* %__coerce_target1.sroa.4.0..sroa_idx6.i.i.i.i, align 8, !noalias !1001
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf, { i8*, i64 }* noalias nocapture dereferenceable(16) %arg.i4.i.i.i.i)
to label %.noexc37.i.i.i unwind label %unwind_ast_9457_97.body.i.i.i, !noalias !1009
.noexc37.i.i.i: ; preds = %else-block.i33.i.i.i
call void @llvm.lifetime.end(i64 16, i8* %415), !noalias !1010
call void @llvm.lifetime.end(i64 1, i8* %414), !noalias !1001
br label %normal-return103.i.i.i
normal-return103.i.i.i: ; preds = %.noexc37.i.i.i, %.noexc35.i.i.i
%421 = getelementptr inbounds i8* %s12.7323.i.i.i, i64 1
%422 = add i32 %l.0324.i.i.i, -1
%423 = icmp eq i32 %422, 0
br i1 %423, label %while_exit99.i.i.i.loopexit, label %while_body101.i.i.i
unwind_ast_13967_.loopexit: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit241.i.i", %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit145.i.i"
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13967_.body
unwind_ast_13967_.nonloopexit.loopexit: ; preds = %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit217.i.i", %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit265.i.i"
%lpad.loopexit95 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13967_.body
unwind_ast_13967_.nonloopexit.nonloopexit: ; preds = %then-block-28382-.i.i128.i.i.i, %then-block-28382-.i.i130.i.i.i, %then-block-28382-.i.i168.i.i.i, %then-block-28382-.i.i166.i.i.i, %then-block-28382-.i.i22.i.i.i, %then-block-28382-.i.i17.i.i.i, %then-block-28382-.i.i.i.i.i, %then-block-30767-.i.i.i.i.i, %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit.i.i.i.i, %then-block-27941-.i.i.i.i.i.i, %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit101.i.i", %"_ZN65core..result..Result$LT$$LP$$RP$$C$$u20$std..io..error..Error$GT$9drop.904417h81fc0b882351b941E.exit.i"
%lpad.nonloopexit96 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_13967_.body
unwind_ast_13967_.body: ; preds = %unwind_ast_13967_.loopexit, %unwind_ast_13967_.nonloopexit.nonloopexit, %unwind_ast_13967_.nonloopexit.loopexit, %clean_custom_.i.i.i
%eh.lpad-body = phi { i8*, i32 } [ %.fca.1.insert.i.i.i, %clean_custom_.i.i.i ], [ %lpad.loopexit, %unwind_ast_13967_.loopexit ], [ %lpad.loopexit95, %unwind_ast_13967_.nonloopexit.loopexit ], [ %lpad.nonloopexit96, %unwind_ast_13967_.nonloopexit.nonloopexit ]
%424 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
%425 = load i64* %424, align 8, !alias.scope !1015
switch i64 %425, label %then-block-28382-.i.i [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
]
then-block-28382-.i.i: ; preds = %unwind_ast_13967_.body
%426 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 0, i32 0, i32 0
%427 = load i8** %426, align 8, !alias.scope !1015
call void @je_sdallocx(i8* %427, i64 %425, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit": ; preds = %unwind_ast_13967_.body, %unwind_ast_13967_.body, %then-block-28382-.i.i
call void @llvm.lifetime.end(i64 24, i8* %127)
call void @llvm.lifetime.end(i64 1, i8* %base)
resume { i8*, i32 } %eh.lpad-body
normal-return6.loopexit: ; preds = %while_exit.i.i
br label %normal-return6
normal-return6: ; preds = %normal-return6.loopexit, %then-block-28382-.i.i128.i.i.i, %.noexc30, %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i", %"_ZN43collections..vec..Vec$LT$ll..limb..Limb$GT$9drop.963917hced84f8a7f321114E.exit131.i.i.i"
%428 = bitcast %"3.collections::vec::Vec<u8>"* %arg5 to i8*
call void @llvm.lifetime.start(i64 24, i8* %428)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %428, i8* %127, i64 24, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %127, i8 29, i64 24, i32 8, i1 false)
%429 = bitcast %"3.collections::string::String"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %429, i8* %428, i64 24, i32 8, i1 false), !alias.scope !1018
call void @llvm.lifetime.end(i64 24, i8* %428)
call void @llvm.lifetime.end(i64 24, i8* %428)
%430 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
%431 = load i64* %430, align 8, !alias.scope !1022
switch i64 %431, label %then-block-28382-.i.i54 [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit55"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit55"
]
then-block-28382-.i.i54: ; preds = %normal-return6
%432 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 0, i32 0, i32 0
%433 = load i8** %432, align 8, !alias.scope !1022
call void @je_sdallocx(i8* %433, i64 %431, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit55"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit55": ; preds = %normal-return6, %normal-return6, %then-block-28382-.i.i54
call void @llvm.lifetime.end(i64 24, i8* %127)
br label %clean_custom_
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str19h802018848175765322E"(%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* noalias nocapture readonly dereferenceable(8), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%2 = alloca { i8*, i64 }, align 8
%3 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %0, i64 0, i32 0
%4 = load %"3.collections::string::String"** %3, align 8, !nonnull !557
%5 = bitcast %str_slice* %1 to i8*
%6 = getelementptr inbounds %"3.collections::string::String"* %4, i64 0, i32 0
%7 = bitcast { i8*, i64 }* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %7), !noalias !1025
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %5, i64 16, i32 8, i1 false)
call fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %6, { i8*, i64 }* noalias nocapture dereferenceable(16) %2), !noalias !1032
call void @llvm.lifetime.end(i64 16, i8* %7), !noalias !1025
tail call void @llvm.lifetime.end(i64 16, i8* %5)
ret i8 0
}
; Function Attrs: inlinehint uwtable
define internal fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias nocapture dereferenceable(24), { i8*, i64 }* noalias nocapture dereferenceable(16)) unnamed_addr #11 {
entry-block:
%2 = alloca %"2.core::fmt::Arguments", align 8
%3 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%arg.i = alloca %str_slice, align 8
%4 = alloca %"2.core::option::Option<usize>", align 8
%5 = bitcast { i8*, i64 }* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds { i8*, i64 }* %1, i64 0, i32 0
%arg.sroa.4.0..sroa_idx57 = getelementptr inbounds { i8*, i64 }* %1, i64 0, i32 1
%arg.sroa.4.0.copyload = load i64* %arg.sroa.4.0..sroa_idx57, align 8
%6 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 2
%7 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 1
%8 = load i64* %6, align 8, !alias.scope !1033
%9 = load i64* %7, align 8, !alias.scope !1033
%10 = sub i64 %8, %9
%11 = icmp ult i64 %10, %arg.sroa.4.0.copyload
br i1 %11, label %then-block-29973-.i, label %"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E.exit"
then-block-29973-.i: ; preds = %entry-block
%12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %9, i64 %arg.sroa.4.0.copyload) #20
%13 = extractvalue { i64, i1 } %12, 1
br i1 %13, label %match_else.i.i, label %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i"
match_else.i.i: ; preds = %then-block-29973-.i
%14 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %14), !noalias !1033
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %14, i8* bitcast (%str_slice* @const9494 to i8*), i64 16, i32 8, i1 false), !noalias !1033
%15 = bitcast %"2.core::fmt::Arguments"* %2 to i8*
call void @llvm.lifetime.start(i64 48, i8* %15), !noalias !1036
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* bitcast ({ %str_slice*, i64 }* @"_ZN6option15Option$LT$T$GT$6expect15__STATIC_FMTSTR20haa0bd212d55ff2847UEE" to i8*), i64 16, i32 8, i1 false), !noalias !1036
%16 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %3 to i8*
call void @llvm.lifetime.start(i64 16, i8* %16), !noalias !1036
%17 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %3, i64 0, i64 0
%18 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %3, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (%str_slice*, %"2.core::fmt::Formatter"*)* @"_ZN3fmt25_$RF$$u27$a$u20$T.Display3fmt20h1407801074379592337E" to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %18, align 8, !alias.scope !1040, !noalias !1043
%19 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %3 to %str_slice**
store %str_slice* %arg.i, %str_slice** %19, align 8, !alias.scope !1040, !noalias !1043
%20 = getelementptr inbounds %"2.core::fmt::Arguments"* %2, i64 0, i32 1
%21 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %20 to i8*
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !1045, !noalias !1048
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %2, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %17, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8, !noalias !1036
%__coerce_target.sroa.4.0..sroa_idx11.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %2, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx11.i.i, align 8, !noalias !1036
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %2, { %str_slice, i32 }* noalias readonly dereferenceable(24) @"_ZN6option15Option$LT$T$GT$6expect10_FILE_LINE20h2e628244f9f1bd3aRUEE"), !noalias !1051
unreachable
"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i": ; preds = %then-block-29973-.i
%22 = extractvalue { i64, i1 } %12, 0
%23 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %23), !noalias !1033
call void @llvm.lifetime.end(i64 16, i8* %23), !alias.scope !1052, !noalias !1051
call void @llvm.lifetime.end(i64 16, i8* %23), !noalias !1033
%24 = load i64* @_ZN3vec15MAX_MEMORY_SIZE20h5df2b0e642bfb149CXhE, align 8, !noalias !1033
%25 = icmp ugt i64 %22, %24
br i1 %25, label %then-block-29994-.i, label %next-block.i
then-block-29994-.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i"
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @"_ZN3vec12Vec$LT$T$GT$7reserve14_MSG_FILE_LINE20h06b9399504edeace90hE"), !noalias !1033
unreachable
next-block.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i"
%26 = bitcast %"2.core::option::Option<usize>"* %4 to i8*
call void @llvm.lifetime.start(i64 16, i8* %26), !noalias !1033
call void @_ZN3num5usize25checked_next_power_of_two20h369977c4ca09ad480fhE(%"2.core::option::Option<usize>"* noalias nocapture sret dereferenceable(16) %4, i64 %22), !noalias !1033
%27 = getelementptr inbounds %"2.core::option::Option<usize>"* %4, i64 0, i32 0
%28 = load i64* %27, align 8, !range !565, !noalias !1033
%cond6.i = icmp eq i64 %28, 1
br i1 %cond6.i, label %match_case.i, label %match_else.i
match_else.i: ; preds = %next-block.i
%29 = load i64* @_ZN3vec15MAX_MEMORY_SIZE20h5df2b0e642bfb149CXhE, align 8, !noalias !1033
br label %join.i
match_case.i: ; preds = %next-block.i
%30 = getelementptr inbounds %"2.core::option::Option<usize>"* %4, i64 0, i32 2, i64 0
%31 = load i64* %30, align 8, !noalias !1033
%32 = load i64* @_ZN3vec15MAX_MEMORY_SIZE20h5df2b0e642bfb149CXhE, align 8, !noalias !1033
%33 = icmp ugt i64 %31, %32
%..i = select i1 %33, i64 %32, i64 %31
br label %join.i
join.i: ; preds = %match_case.i, %match_else.i
%.0.i = phi i64 [ %29, %match_else.i ], [ %..i, %match_case.i ]
%34 = icmp ult i64 %8, %.0.i
br i1 %34, label %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i", label %"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E.exit.i"
"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i": ; preds = %join.i
%35 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 0, i32 0, i32 0
%36 = load i8** %35, align 8, !alias.scope !1053
%37 = tail call fastcc i8* @_ZN3vec16alloc_or_realloc20h2076482487924843660E(i8* %36, i64 %8, i64 %.0.i), !noalias !1053
%38 = icmp eq i8* %37, null
br i1 %38, label %then-block-30216-.i.i, label %next-block1.i.i
then-block-30216-.i.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i"
tail call void @_ZN3oom20hca3a2a8b171e2cday6aE(), !noalias !1053
unreachable
next-block1.i.i: ; preds = %"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E.exit.i.i"
%39 = ptrtoint i8* %37 to i64
%40 = bitcast %"3.collections::vec::Vec<u8>"* %0 to i64*
store i64 %39, i64* %40, align 8, !alias.scope !1053
store i64 %.0.i, i64* %6, align 8, !alias.scope !1053
br label %"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E.exit.i"
"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E.exit.i": ; preds = %next-block1.i.i, %join.i
call void @llvm.lifetime.end(i64 16, i8* %26), !noalias !1033
br label %"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E.exit"
"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E.exit": ; preds = %entry-block, %"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E.exit.i"
%41 = icmp eq i64 %arg.sroa.4.0.copyload, 0
br i1 %41, label %clean_ast_29919_, label %match_case.lr.ph
match_case.lr.ph: ; preds = %"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E.exit"
%42 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 0, i32 0, i32 0
%43 = load i8** %42, align 8, !alias.scope !1056, !noalias !1059, !nonnull !557
%arg4.sroa.0.0.copyload = load i8** %arg.sroa.0.0..sroa_idx, align 8
%n.vec = and i64 %arg.sroa.4.0.copyload, -16
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %match_case.lr.ph
%scevgep = getelementptr i8* %43, i64 %9
%44 = add i64 %arg.sroa.4.0.copyload, -1
%scevgep71 = getelementptr i8* %arg4.sroa.0.0.copyload, i64 %44
%bound0 = icmp ule i8* %scevgep, %scevgep71
%45 = add i64 %arg.sroa.4.0.copyload, %9
%46 = add i64 %45, -1
%scevgep70 = getelementptr i8* %43, i64 %46
%bound1 = icmp ule i8* %arg4.sroa.0.0.copyload, %scevgep70
%memcheck.conflict = and i1 %bound0, %bound1
%ind.end = add i64 %n.vec, %9
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%offset.idx = add i64 %9, %index
%47 = getelementptr inbounds i8* %43, i64 %offset.idx
%48 = getelementptr inbounds i8* %arg4.sroa.0.0.copyload, i64 %index
%49 = bitcast i8* %48 to <16 x i8>*
%wide.load = load <16 x i8>* %49, align 1, !alias.scope !1061
%50 = bitcast i8* %47 to <16 x i8>*
store <16 x i8> %wide.load, <16 x i8>* %50, align 1
%index.next = add i64 %index, 16
%51 = icmp eq i64 %index.next, %n.vec
br i1 %51, label %middle.block.loopexit, label %vector.body, !llvm.loop !1064
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %match_case.lr.ph
%resume.val = phi i64 [ %9, %match_case.lr.ph ], [ %9, %vector.memcheck ], [ %ind.end, %middle.block.loopexit ]
%resume.val72 = phi i64 [ 0, %match_case.lr.ph ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %arg.sroa.4.0.copyload, %resume.val72
br i1 %cmp.n, label %loop_body.clean_ast_29919__crit_edge, label %match_case.preheader
match_case.preheader: ; preds = %middle.block
br label %match_case
match_case: ; preds = %match_case.preheader, %match_case
%52 = phi i64 [ %57, %match_case ], [ %resume.val, %match_case.preheader ]
%.sroa.051.0.6369 = phi i64 [ %53, %match_case ], [ %resume.val72, %match_case.preheader ]
%53 = add nuw i64 %.sroa.051.0.6369, 1
%54 = getelementptr inbounds i8* %43, i64 %52
%55 = getelementptr inbounds i8* %arg4.sroa.0.0.copyload, i64 %.sroa.051.0.6369
%56 = load i8* %55, align 1, !alias.scope !1061
store i8 %56, i8* %54, align 1
%57 = add i64 %52, 1
%exitcond = icmp eq i64 %53, %arg.sroa.4.0.copyload
br i1 %exitcond, label %loop_body.clean_ast_29919__crit_edge.loopexit, label %match_case, !llvm.loop !1065
loop_body.clean_ast_29919__crit_edge.loopexit: ; preds = %match_case
br label %loop_body.clean_ast_29919__crit_edge
loop_body.clean_ast_29919__crit_edge: ; preds = %loop_body.clean_ast_29919__crit_edge.loopexit, %middle.block
%58 = add i64 %arg.sroa.4.0.copyload, %9
store i64 %58, i64* %7, align 8, !alias.scope !1066
br label %clean_ast_29919_
clean_ast_29919_: ; preds = %"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E.exit", %loop_body.clean_ast_29919__crit_edge
tail call void @llvm.lifetime.end(i64 16, i8* %5)
ret void
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt25_$RF$$u27$a$u20$T.Display3fmt20h1407801074379592337E"(%str_slice* noalias nocapture readonly dereferenceable(16), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%__fat_ptr = alloca %str_slice, align 8
%2 = bitcast %str_slice* %__fat_ptr to i8*
call void @llvm.lifetime.start(i64 16, i8* %2)
%3 = bitcast %str_slice* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false)
%4 = call i8 @_ZN3fmt11str.Display3fmt20h1041f0bcd68fe193lFNE(%str_slice* noalias nocapture dereferenceable(16) %__fat_ptr, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1)
call void @llvm.lifetime.end(i64 16, i8* %2)
ret i8 %4
}
declare i8 @_ZN3fmt11str.Display3fmt20h1041f0bcd68fe193lFNE(%str_slice* noalias nocapture dereferenceable(16), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) unnamed_addr #12
; Function Attrs: noinline uwtable
define internal fastcc i8* @_ZN3vec16alloc_or_realloc20h2076482487924843660E(i8*, i64, i64) unnamed_addr #18 {
entry-block:
%size.i.i12 = alloca i64, align 8
%3 = alloca %"2.core::fmt::Arguments", align 8
%size.i.i = alloca i64, align 8
%4 = alloca %"2.core::fmt::Arguments", align 8
%5 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%6 = icmp eq i64 %1, 0
br i1 %6, label %then-block-30303-, label %else-block
then-block-30303-: ; preds = %entry-block
%7 = bitcast i64* %size.i.i12 to i8*
call void @llvm.lifetime.start(i64 8, i8* %7)
store i64 %2, i64* %size.i.i12, align 8
%8 = icmp eq i64 %2, 0
br i1 %8, label %then-block-27908-.i.i14, label %next-block.i.i15
then-block-27908-.i.i14: ; preds = %then-block-30303-
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE)
unreachable
next-block.i.i15: ; preds = %then-block-30303-
%9 = icmp slt i64 %2, 0
br i1 %9, label %then-block-27941-.i.i18, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
then-block-27941-.i.i18: ; preds = %next-block.i.i15
%10 = bitcast %"2.core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start(i64 48, i8* %10)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false)
%11 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i8*
call void @llvm.lifetime.start(i64 16, i8* %11)
%12 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0
%13 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %13, align 8, !alias.scope !1071, !noalias !1074
%14 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i64**
store i64* %size.i.i12, i64** %14, align 8, !alias.scope !1071, !noalias !1074
%15 = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 1
%16 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %15 to i8*
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !1076, !noalias !1079
%__coerce_target.sroa.0.0..sroa_idx.i.i16 = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %12, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i16, align 8
%__coerce_target.sroa.4.0..sroa_idx22.i.i17 = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i17, align 8
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %3, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit: ; preds = %next-block.i.i15
call void @llvm.lifetime.end(i64 8, i8* %7)
%17 = tail call i8* @je_mallocx(i64 %2, i32 0)
br label %join
else-block: ; preds = %entry-block
%18 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %18)
store i64 %2, i64* %size.i.i, align 8
%19 = icmp eq i64 %2, 0
br i1 %19, label %then-block-27908-.i.i, label %next-block.i.i
then-block-27908-.i.i: ; preds = %else-block
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @_ZN4heap24check_size_and_alignment14_MSG_FILE_LINE20h2585aaa2ed4da882FaaE)
unreachable
next-block.i.i: ; preds = %else-block
%20 = icmp slt i64 %2, 0
br i1 %20, label %then-block-27941-.i.i, label %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit
then-block-27941-.i.i: ; preds = %next-block.i.i
%21 = bitcast %"2.core::fmt::Arguments"* %4 to i8*
call void @llvm.lifetime.start(i64 48, i8* %21)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %21, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false)
%22 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i8*
call void @llvm.lifetime.start(i64 16, i8* %22)
%23 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0
%24 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %5, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %24, align 8, !alias.scope !1082, !noalias !1085
%25 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %5 to i64**
store i64* %size.i.i, i64** %25, align 8, !alias.scope !1082, !noalias !1085
%26 = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 1
%27 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %26 to i8*
call void @llvm.memset.p0i8.i64(i8* %27, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !1087, !noalias !1090
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %23, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8
%__coerce_target.sroa.4.0..sroa_idx22.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %4, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i, align 8
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %4, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE)
unreachable
_ZN4heap10reallocate20h45544adb9db3e6695caE.exit: ; preds = %next-block.i.i
call void @llvm.lifetime.end(i64 8, i8* %18)
%28 = tail call i8* @je_rallocx(i8* %0, i64 %2, i32 0)
br label %join
join: ; preds = %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit, %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
%.0 = phi i8* [ %17, %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit ], [ %28, %_ZN4heap10reallocate20h45544adb9db3e6695caE.exit ]
ret i8* %.0
}
declare void @_ZN3num5usize25checked_next_power_of_two20h369977c4ca09ad480fhE(%"2.core::option::Option<usize>"* noalias nocapture sret dereferenceable(16), i64) unnamed_addr #7
; Function Attrs: uwtable
define internal i8 @_ZN3fmt5Write10write_char21h11304174699954065719E(%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* noalias nocapture readonly dereferenceable(8), i32) unnamed_addr #6 {
entry-block:
%2 = alloca { i8*, i64 }, align 8
%utf_8 = alloca i32, align 4
%tmpcast = bitcast i32* %utf_8 to [4 x i8]*
%3 = bitcast i32* %utf_8 to i8*
call void @llvm.lifetime.start(i64 4, i8* %3)
store i32 0, i32* %utf_8, align 4
%4 = icmp ult i32 %1, 128
br i1 %4, label %next.i.i, label %else-block.i.i
next.i.i: ; preds = %entry-block
%5 = trunc i32 %1 to i8
store i8 %5, i8* %3, align 4, !noalias !1093
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
else-block.i.i: ; preds = %entry-block
%6 = icmp ult i32 %1, 2048
br i1 %6, label %next6.i.i, label %else-block8.i.i
next6.i.i: ; preds = %else-block.i.i
%7 = lshr i32 %1, 6
%.tr58.i.i = trunc i32 %7 to i8
%8 = and i8 %.tr58.i.i, 31
%9 = or i8 %8, -64
store i8 %9, i8* %3, align 4, !noalias !1093
%.tr59.i.i = trunc i32 %1 to i8
%10 = and i8 %.tr59.i.i, 63
%11 = or i8 %10, -128
%12 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %11, i8* %12, align 1, !noalias !1093
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
else-block8.i.i: ; preds = %else-block.i.i
%13 = icmp ult i32 %1, 65536
br i1 %13, label %next16.i.i, label %next26.i.i
next16.i.i: ; preds = %else-block8.i.i
%14 = lshr i32 %1, 12
%.tr55.i.i = trunc i32 %14 to i8
%15 = and i8 %.tr55.i.i, 15
%16 = or i8 %15, -32
store i8 %16, i8* %3, align 4, !noalias !1093
%17 = lshr i32 %1, 6
%.tr56.i.i = trunc i32 %17 to i8
%18 = and i8 %.tr56.i.i, 63
%19 = or i8 %18, -128
%20 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %19, i8* %20, align 1, !noalias !1093
%.tr57.i.i = trunc i32 %1 to i8
%21 = and i8 %.tr57.i.i, 63
%22 = or i8 %21, -128
%23 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %22, i8* %23, align 2, !noalias !1093
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
next26.i.i: ; preds = %else-block8.i.i
%24 = lshr i32 %1, 18
%.tr.i.i = trunc i32 %24 to i8
%25 = and i8 %.tr.i.i, 7
%26 = or i8 %25, -16
store i8 %26, i8* %3, align 4, !noalias !1093
%27 = lshr i32 %1, 12
%.tr52.i.i = trunc i32 %27 to i8
%28 = and i8 %.tr52.i.i, 63
%29 = or i8 %28, -128
%30 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 1
store i8 %29, i8* %30, align 1, !noalias !1093
%31 = lshr i32 %1, 6
%.tr53.i.i = trunc i32 %31 to i8
%32 = and i8 %.tr53.i.i, 63
%33 = or i8 %32, -128
%34 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 2
store i8 %33, i8* %34, align 2, !noalias !1093
%.tr54.i.i = trunc i32 %1 to i8
%35 = and i8 %.tr54.i.i, 63
%36 = or i8 %35, -128
%37 = getelementptr inbounds [4 x i8]* %tmpcast, i64 0, i64 3
store i8 %36, i8* %37, align 1, !noalias !1093
br label %"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit"
"_ZN5slice56_$u5b$T$u5d$.ops..Index$LT$ops..RangeTo$LT$usize$GT$$GT$5index21h13823433647065645094E.exit": ; preds = %next26.i.i, %next16.i.i, %next6.i.i, %next.i.i
%.sroa.9.0.copyload37 = phi i64 [ 1, %next.i.i ], [ 2, %next6.i.i ], [ 3, %next16.i.i ], [ 4, %next26.i.i ]
%38 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %0, i64 0, i32 0
%39 = load %"3.collections::string::String"** %38, align 8, !alias.scope !1100, !noalias !1103, !nonnull !557
%40 = getelementptr inbounds %"3.collections::string::String"* %39, i64 0, i32 0
%41 = bitcast { i8*, i64 }* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %41), !noalias !1105
%42 = bitcast { i8*, i64 }* %2 to i32**
store i32* %utf_8, i32** %42, align 8
%.sroa.5.0..sroa_idx19 = getelementptr inbounds { i8*, i64 }* %2, i64 0, i32 1
store i64 %.sroa.9.0.copyload37, i64* %.sroa.5.0..sroa_idx19, align 8
call fastcc void @"_ZN3vec12Vec$LT$T$GT$8push_all20h9383486745667019717E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %40, { i8*, i64 }* noalias nocapture dereferenceable(16) %2), !noalias !1112
call void @llvm.lifetime.end(i64 16, i8* %41), !noalias !1105
call void @llvm.lifetime.end(i64 4, i8* %3)
ret i8 0
}
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_fmt21h11285822656917982063E"(%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* noalias nocapture readonly dereferenceable(8), %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr #6 {
entry-block:
%addr_of.i = alloca %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>", align 8
%__coerce_target.i = alloca { i8*, void (i8*)** }, align 8
%arg.i = alloca %"2.core::fmt::Arguments", align 8
%2 = getelementptr inbounds %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %0, i64 0, i32 0
%3 = load %"3.collections::string::String"** %2, align 8, !nonnull !557
%4 = bitcast %"2.core::fmt::Arguments"* %1 to i8*
%5 = ptrtoint %"3.collections::string::String"* %3 to i64
%6 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %6), !noalias !1113
%7 = bitcast %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i to i64*
store i64 %5, i64* %7, align 8, !noalias !1113
%8 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"**
store %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"* %addr_of.i, %"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"** %8, align 8, !noalias !1113
%9 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target.i, i64 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %str_slice*)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, i32)*, i8 (%"2.core::fmt::Write::write_fmt::Adapter<collections::string::String>"*, %"2.core::fmt::Arguments"*)* }* @vtable9577, i64 0, i32 0), void (i8*)*** %9, align 8, !noalias !1113
%10 = bitcast %"2.core::fmt::Arguments"* %arg.i to i8*
call void @llvm.lifetime.start(i64 48, i8* %10), !noalias !1113
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %4, i64 48, i32 8, i1 false)
%11 = call i8 @_ZN3fmt5write20h629ca2ffa7011795F4ME({ i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target.i, %"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %arg.i), !noalias !1117
call void @llvm.lifetime.end(i64 48, i8* %10), !noalias !1113
%12 = bitcast { i8*, void (i8*)** }* %__coerce_target.i to i8*
call void @llvm.lifetime.end(i64 16, i8* %12), !noalias !1113
call void @llvm.lifetime.end(i64 8, i8* %6), !noalias !1113
call void @llvm.lifetime.end(i64 48, i8* %4)
ret i8 %11
}
; Function Attrs: cold noinline noreturn
declare void @_ZN2rt6unwind16begin_unwind_fmt20h63a60dd7113d0b6eNCwE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48), { %str_slice, i32 }* noalias readonly dereferenceable(24)) unnamed_addr #9
declare i8 @_ZN3fmt3num15u8.fmt..Display3fmt20h3661f4607cb841b8e1LE(i8* noalias readonly dereferenceable(1), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #7
; Function Attrs: uwtable
define void @_ZN3int3Int14from_str_radix20h9f336fca03ab3a6dvRdE(%"2.core::result::Result<int::Int, int::ParseIntError>"* noalias nocapture sret dereferenceable(32), %str_slice* noalias nocapture dereferenceable(16), i8) unnamed_addr #6 {
entry-block:
%size.i.i = alloca i64, align 8
%3 = alloca %"2.core::fmt::Arguments", align 8
%4 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%arg3.i = alloca %str_slice, align 8
%base = alloca i8, align 1
%5 = alloca %"2.core::fmt::Arguments", align 8
%6 = alloca [1 x %"2.core::fmt::ArgumentV1"], align 8
%buf = alloca %"3.collections::vec::Vec<u8>", align 8
%7 = alloca %"2.core::str::Bytes", align 8
%arg9 = alloca %str_slice, align 8
%i.sroa.16 = alloca [7 x i8], align 1
call void @llvm.lifetime.start(i64 1, i8* %base)
store i8 %2, i8* %base, align 1
%.off = add i8 %2, -2
%8 = icmp ugt i8 %.off, 34
br i1 %8, label %then-block-14241-, label %next-block
then-block-14241-: ; preds = %entry-block
%9 = bitcast %"2.core::fmt::Arguments"* %5 to i8*
call void @llvm.lifetime.start(i64 48, i8* %9)
%10 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %6 to i8*
call void @llvm.lifetime.start(i64 16, i8* %10)
%11 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %6, i64 0, i64 0
%12 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %6, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i8*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num15u8.fmt..Display3fmt20h3661f4607cb841b8e1LE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %12, align 8, !alias.scope !1118, !noalias !1121
%13 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %6 to i8**
store i8* %base, i8** %13, align 8, !alias.scope !1118, !noalias !1121
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* bitcast ({ %str_slice*, i64 }* @_ZN3int3Int14from_str_radix15__STATIC_FMTSTR20h988053cd86d698a82RdE to i8*), i64 16, i32 8, i1 false) #20, !alias.scope !1123, !noalias !1127
%14 = getelementptr inbounds %"2.core::fmt::Arguments"* %5, i64 0, i32 1
%15 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %14 to i8*
call void @llvm.memset.p0i8.i64(i8* %15, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !1129, !noalias !1130
%__coerce_target.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::fmt::Arguments"* %5, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %11, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx, align 8
%__coerce_target.sroa.4.0..sroa_idx202 = getelementptr inbounds %"2.core::fmt::Arguments"* %5, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx202, align 8
call void @_ZN2rt6unwind16begin_unwind_fmt20h63a60dd7113d0b6eNCwE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %5, { %str_slice, i32 }* noalias readonly dereferenceable(24) bitcast ({ %str_slice, i32, [4 x i8] }* @_ZN3int3Int14from_str_radix10_FILE_LINE20ha4186fc575371ad9sSdE to { %str_slice, i32 }*))
unreachable
next-block: ; preds = %entry-block
%16 = bitcast %str_slice* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %1, i64 0, i32 0
%arg.sroa.4.0..sroa_idx198 = getelementptr inbounds %str_slice* %1, i64 0, i32 1
%arg.sroa.4.0.copyload = load i64* %arg.sroa.4.0..sroa_idx198, align 8
%17 = icmp eq i64 %arg.sroa.4.0.copyload, 0
br i1 %17, label %then-block-14295-, label %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit.i.i.i.i.i.i.i.i"
then-block-14295-: ; preds = %next-block
%18 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 0
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* getelementptr inbounds ({ i8, { i8 }, [30 x i8] }* @const9656, i64 0, i32 0), i64 32, i32 8, i1 false)
br label %clean_custom_
clean_custom_: ; preds = %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit", %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit134", %then-block-14331-, %then-block-14295-
call void @llvm.lifetime.end(i64 1, i8* %base)
tail call void @llvm.lifetime.end(i64 16, i8* %16)
ret void
"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit.i.i.i.i.i.i.i.i": ; preds = %next-block
%arg3.sroa.0.0.copyload = load i8** %arg.sroa.0.0..sroa_idx, align 8
%19 = getelementptr inbounds i8* %arg3.sroa.0.0.copyload, i64 %arg.sroa.4.0.copyload
%20 = getelementptr inbounds i8* %arg3.sroa.0.0.copyload, i64 1
%21 = load i8* %arg3.sroa.0.0.copyload, align 1, !noalias !1131
%22 = icmp slt i8 %21, 0
br i1 %22, label %cond.i.i.i.i.i.i.i.i, label %next.i.i.i.i.i.i.i.i
next.i.i.i.i.i.i.i.i: ; preds = %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit.i.i.i.i.i.i.i.i"
%23 = zext i8 %21 to i32
br label %_ZN3str3str11starts_with20h4002351270733706017E.exit
cond.i.i.i.i.i.i.i.i: ; preds = %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit.i.i.i.i.i.i.i.i"
%24 = and i8 %21, 31
%25 = zext i8 %24 to i32
%26 = icmp eq i64 %arg.sroa.4.0.copyload, 1
br i1 %26, label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i, label %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i"
"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i": ; preds = %cond.i.i.i.i.i.i.i.i
%27 = getelementptr inbounds i8* %arg3.sroa.0.0.copyload, i64 2
%28 = load i8* %20, align 1, !noalias !1131
%phitmp.i.i.i.i.i.i.i.i = and i8 %28, 63
%phitmp55.i.i.i.i.i.i.i.i = zext i8 %phitmp.i.i.i.i.i.i.i.i to i32
br label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i
_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i: ; preds = %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i", %cond.i.i.i.i.i.i.i.i
%29 = phi i64 [ 3, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i" ], [ 2, %cond.i.i.i.i.i.i.i.i ]
%30 = phi i8* [ %27, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i" ], [ %19, %cond.i.i.i.i.i.i.i.i ]
%sret_slot.0.i50.i.i.i.i.i.i.i.i = phi i32 [ %phitmp55.i.i.i.i.i.i.i.i, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit54.i.i.i.i.i.i.i.i" ], [ 0, %cond.i.i.i.i.i.i.i.i ]
%31 = shl nuw nsw i32 %25, 6
%32 = or i32 %sret_slot.0.i50.i.i.i.i.i.i.i.i, %31
%33 = icmp ugt i8 %21, -33
br i1 %33, label %then-block-31403-.i.i.i.i.i.i.i.i, label %_ZN3str3str11starts_with20h4002351270733706017E.exit
then-block-31403-.i.i.i.i.i.i.i.i: ; preds = %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i
%34 = icmp eq i8* %30, %19
br i1 %34, label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i, label %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit48.i.i.i.i.i.i.i.i"
"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit48.i.i.i.i.i.i.i.i": ; preds = %then-block-31403-.i.i.i.i.i.i.i.i
%35 = getelementptr inbounds i8* %arg3.sroa.0.0.copyload, i64 %29
%36 = load i8* %30, align 1, !noalias !1131
%phitmp56.i.i.i.i.i.i.i.i = and i8 %36, 63
%phitmp57.i.i.i.i.i.i.i.i = zext i8 %phitmp56.i.i.i.i.i.i.i.i to i32
br label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i
_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i: ; preds = %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit48.i.i.i.i.i.i.i.i", %then-block-31403-.i.i.i.i.i.i.i.i
%37 = phi i8* [ %35, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit48.i.i.i.i.i.i.i.i" ], [ %19, %then-block-31403-.i.i.i.i.i.i.i.i ]
%sret_slot.0.i44.i.i.i.i.i.i.i.i = phi i32 [ %phitmp57.i.i.i.i.i.i.i.i, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit48.i.i.i.i.i.i.i.i" ], [ 0, %then-block-31403-.i.i.i.i.i.i.i.i ]
%38 = shl nuw nsw i32 %sret_slot.0.i50.i.i.i.i.i.i.i.i, 6
%39 = or i32 %sret_slot.0.i44.i.i.i.i.i.i.i.i, %38
%40 = shl nuw nsw i32 %25, 12
%41 = or i32 %39, %40
%42 = icmp ugt i8 %21, -17
br i1 %42, label %then-block-31435-.i.i.i.i.i.i.i.i, label %_ZN3str3str11starts_with20h4002351270733706017E.exit
then-block-31435-.i.i.i.i.i.i.i.i: ; preds = %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i
%43 = icmp eq i8* %37, %19
br i1 %43, label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit.i.i.i.i.i.i.i.i, label %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit42.i.i.i.i.i.i.i.i"
"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit42.i.i.i.i.i.i.i.i": ; preds = %then-block-31435-.i.i.i.i.i.i.i.i
%44 = load i8* %37, align 1, !noalias !1131
%phitmp58.i.i.i.i.i.i.i.i = and i8 %44, 63
%phitmp59.i.i.i.i.i.i.i.i = zext i8 %phitmp58.i.i.i.i.i.i.i.i to i32
br label %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit.i.i.i.i.i.i.i.i
_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit.i.i.i.i.i.i.i.i: ; preds = %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit42.i.i.i.i.i.i.i.i", %then-block-31435-.i.i.i.i.i.i.i.i
%sret_slot.0.i39.i.i.i.i.i.i.i.i = phi i32 [ %phitmp59.i.i.i.i.i.i.i.i, %"_ZN5slice36Iter$LT$$u27$a$C$$u20$T$GT$.Iterator4next21h18120173830780882480E.exit42.i.i.i.i.i.i.i.i" ], [ 0, %then-block-31435-.i.i.i.i.i.i.i.i ]
%45 = shl nuw nsw i32 %25, 18
%46 = and i32 %45, 1835008
%47 = shl nuw nsw i32 %39, 6
%48 = or i32 %47, %46
%49 = or i32 %48, %sret_slot.0.i39.i.i.i.i.i.i.i.i
br label %_ZN3str3str11starts_with20h4002351270733706017E.exit
_ZN3str3str11starts_with20h4002351270733706017E.exit: ; preds = %next.i.i.i.i.i.i.i.i, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit.i.i.i.i.i.i.i.i
%sret_slot.sroa.4.0.i.i.ph.i.i.i.i.i.i = phi i32 [ %32, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit51.i.i.i.i.i.i.i.i ], [ %41, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit45.i.i.i.i.i.i.i.i ], [ %49, %_ZN3str11unwrap_or_020h10d8a13237988b8fhIIE.exit.i.i.i.i.i.i.i.i ], [ %23, %next.i.i.i.i.i.i.i.i ]
%cond.i.i.i.i = icmp eq i32 %sret_slot.sroa.4.0.i.i.ph.i.i.i.i.i.i, 45
br i1 %cond.i.i.i.i, label %then-block-14311-, label %next-block5
then-block-14311-: ; preds = %_ZN3str3str11starts_with20h4002351270733706017E.exit
%50 = icmp eq i64 %arg.sroa.4.0.copyload, 1
br i1 %50, label %"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit", label %next-block.i.i
next-block.i.i: ; preds = %then-block-14311-
%51 = icmp ugt i64 %arg.sroa.4.0.copyload, 1
br i1 %51, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%52 = load i8* %20, align 1, !noalias !1150
%53 = icmp sgt i8 %52, -1
%54 = icmp ugt i8 %52, -65
%..i.i = or i1 %53, %54
br i1 %..i.i, label %"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit", label %else-block.i
else-block.i: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%55 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %55), !noalias !1156
%arg4.sroa.0.0..sroa_idx179 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %arg3.sroa.0.0.copyload, i8** %arg4.sroa.0.0..sroa_idx179, align 8
%arg4.sroa.6.0..sroa_idx184 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %arg.sroa.4.0.copyload, i64* %arg4.sroa.6.0..sroa_idx184, align 8
call void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %arg.sroa.4.0.copyload), !noalias !1156
unreachable
"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit": ; preds = %then-block-14311-, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i
%56 = add i64 %arg.sroa.4.0.copyload, -1
store i8* %20, i8** %arg.sroa.0.0..sroa_idx, align 8
store i64 %56, i64* %arg.sroa.4.0..sroa_idx198, align 8
br label %next-block5
next-block5: ; preds = %_ZN3str3str11starts_with20h4002351270733706017E.exit, %"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit"
%arg38.sroa.4.0.copyload = phi i64 [ %56, %"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit" ], [ %arg.sroa.4.0.copyload, %_ZN3str3str11starts_with20h4002351270733706017E.exit ]
%sign.0 = phi i32 [ -1, %"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE.exit" ], [ 1, %_ZN3str3str11starts_with20h4002351270733706017E.exit ]
%57 = icmp eq i64 %arg38.sroa.4.0.copyload, 0
br i1 %57, label %then-block-14331-, label %next-block.i.i130
then-block-14331-: ; preds = %next-block5
%58 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 0
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %58, i8* getelementptr inbounds ({ i8, { i8 }, [30 x i8] }* @const9656, i64 0, i32 0), i64 32, i32 8, i1 false)
br label %clean_custom_
next-block.i.i130: ; preds = %next-block5
%59 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i8*
call void @llvm.lifetime.start(i64 24, i8* %59)
%60 = bitcast i64* %size.i.i to i8*
call void @llvm.lifetime.start(i64 8, i8* %60), !noalias !1157
store i64 %arg38.sroa.4.0.copyload, i64* %size.i.i, align 8, !noalias !1157
%61 = icmp slt i64 %arg38.sroa.4.0.copyload, 0
br i1 %61, label %then-block-27941-.i.i, label %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
then-block-27941-.i.i: ; preds = %next-block.i.i130
%62 = bitcast %"2.core::fmt::Arguments"* %3 to i8*
call void @llvm.lifetime.start(i64 48, i8* %62), !noalias !1157
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %62, i8* bitcast ({ %str_slice*, i64 }* @_ZN4heap24check_size_and_alignment15__STATIC_FMTSTR20h5d86de961e7f8e87sbaE to i8*), i64 16, i32 8, i1 false), !noalias !1157
%63 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %4 to i8*
call void @llvm.lifetime.start(i64 16, i8* %63), !noalias !1157
%64 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %4, i64 0, i64 0
%65 = getelementptr inbounds [1 x %"2.core::fmt::ArgumentV1"]* %4, i64 0, i64 0, i32 1
store i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)* bitcast (i8 (i64*, %"2.core::fmt::Formatter"*)* @_ZN3fmt3num18usize.fmt..Display3fmt20he4d1e0dc875c76f6qVLE to i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)*), i8 (%"2.core::fmt::Void"*, %"2.core::fmt::Formatter"*)** %65, align 8, !alias.scope !1160, !noalias !1163
%66 = bitcast [1 x %"2.core::fmt::ArgumentV1"]* %4 to i64**
store i64* %size.i.i, i64** %66, align 8, !alias.scope !1160, !noalias !1163
%67 = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 1
%68 = bitcast %"2.core::option::Option<&'static [core::fmt::rt::v1::Argument]>"* %67 to i8*
call void @llvm.memset.p0i8.i64(i8* %68, i8 0, i64 16, i32 8, i1 false) #20, !alias.scope !1165, !noalias !1168
%__coerce_target.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 0
store %"2.core::fmt::ArgumentV1"* %64, %"2.core::fmt::ArgumentV1"** %__coerce_target.sroa.0.0..sroa_idx.i.i, align 8, !noalias !1157
%__coerce_target.sroa.4.0..sroa_idx22.i.i = getelementptr inbounds %"2.core::fmt::Arguments"* %3, i64 0, i32 2, i32 1
store i64 1, i64* %__coerce_target.sroa.4.0..sroa_idx22.i.i, align 8, !noalias !1157
call void @_ZN9panicking9panic_fmt20h9b6d2be0f8b74844u5BE(%"2.core::fmt::Arguments"* noalias nocapture dereferenceable(48) %3, { %str_slice, i32 }* noalias readonly dereferenceable(24) @_ZN4heap24check_size_and_alignment10_FILE_LINE20hbf05bafa9abf2853cbaE), !noalias !1157
unreachable
_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit: ; preds = %next-block.i.i130
call void @llvm.lifetime.end(i64 8, i8* %60), !noalias !1157
%69 = tail call i8* @je_mallocx(i64 %arg38.sroa.4.0.copyload, i32 0), !noalias !1157
%70 = icmp eq i8* %69, null
br i1 %70, label %then-block-30767-.i, label %"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E.exit"
then-block-30767-.i: ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
tail call void @_ZN3oom20hca3a2a8b171e2cday6aE(), !noalias !1157
unreachable
"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E.exit": ; preds = %_ZN4heap8allocate20hb412a9fe81c3fcc3LcaE.exit
%71 = ptrtoint i8* %69 to i64
%72 = bitcast %"3.collections::vec::Vec<u8>"* %buf to i64*
store i64 %71, i64* %72, align 8, !alias.scope !1171
%73 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 1
store i64 0, i64* %73, align 8, !alias.scope !1171
%74 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
store i64 %arg38.sroa.4.0.copyload, i64* %74, align 8, !alias.scope !1171
%75 = bitcast %"2.core::str::Bytes"* %7 to i8*
call void @llvm.lifetime.start(i64 16, i8* %75)
%76 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %76)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %76, i8* %16, i64 16, i32 8, i1 false)
invoke void @_ZN3str3str5bytes20ha5060a6a0feab2ecHOgE(%"2.core::str::Bytes"* noalias nocapture sret dereferenceable(16) %7, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return12 unwind label %unwind_ast_14231_.nonloopexit
unwind_ast_14231_.loopexit: ; preds = %then-block-31974-.i
%lpad.loopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %unwind_ast_14231_
unwind_ast_14231_.nonloopexit: ; preds = %"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E.exit", %cond2.i
%lpad.nonloopexit = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.pre214 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
br label %unwind_ast_14231_
unwind_ast_14231_: ; preds = %unwind_ast_14231_.nonloopexit, %unwind_ast_14231_.loopexit
%.pre-phi = phi i64* [ %.pre214, %unwind_ast_14231_.nonloopexit ], [ %81, %unwind_ast_14231_.loopexit ]
%lpad.phi = phi { i8*, i32 } [ %lpad.nonloopexit, %unwind_ast_14231_.nonloopexit ], [ %lpad.loopexit, %unwind_ast_14231_.loopexit ]
%.fca.0.extract = extractvalue { i8*, i32 } %lpad.phi, 0
%.fca.1.extract = extractvalue { i8*, i32 } %lpad.phi, 1
%77 = load i64* %.pre-phi, align 8, !alias.scope !1174
switch i64 %77, label %then-block-28382-.i.i131 [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132"
]
then-block-28382-.i.i131: ; preds = %unwind_ast_14231_
%78 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 0, i32 0, i32 0
%79 = load i8** %78, align 8, !alias.scope !1174
tail call void @je_sdallocx(i8* %79, i64 %77, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132": ; preds = %unwind_ast_14231_, %unwind_ast_14231_, %then-block-28382-.i.i131
call void @llvm.lifetime.end(i64 24, i8* %59)
br label %clean_custom_10
clean_custom_10: ; preds = %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119", %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132"
%.sroa.085.0 = phi i8* [ %.fca.0.extract, %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132" ], [ %.fca.0.extract78, %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119" ]
%.sroa.5.0 = phi i32 [ %.fca.1.extract, %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit132" ], [ %.fca.1.extract80, %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119" ]
call void @llvm.lifetime.end(i64 1, i8* %base)
tail call void @llvm.lifetime.end(i64 16, i8* %16)
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.085.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.5.0, 1
resume { i8*, i32 } %.fca.1.insert
normal-return12: ; preds = %"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E.exit"
call void @llvm.lifetime.end(i64 16, i8* %76)
%.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::str::Bytes"* %7, i64 0, i32 0, i32 0, i32 0
%.sroa.0.0.copyload = load i8** %.sroa.0.0..sroa_idx, align 8
%.sroa.6.0..sroa_idx166 = getelementptr inbounds %"2.core::str::Bytes"* %7, i64 0, i32 0, i32 0, i32 1
%.sroa.6.0.copyload = load i8** %.sroa.6.0..sroa_idx166, align 8
call void @llvm.lifetime.end(i64 16, i8* %75) #20, !alias.scope !1177, !noalias !1180
call void @llvm.lifetime.end(i64 16, i8* %75)
%80 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 1
%81 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 2
%82 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %buf, i64 0, i32 0, i32 0, i32 0
br label %loop_body
loop_body: ; preds = %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit", %normal-return12
%83 = phi i8* [ %101, %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit" ], [ %69, %normal-return12 ]
%84 = phi i64 [ %104, %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit" ], [ 0, %normal-return12 ]
%.sroa.0.0.213 = phi i8* [ %86, %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit" ], [ %.sroa.0.0.copyload, %normal-return12 ]
%85 = icmp eq i8* %.sroa.0.0.213, %.sroa.6.0.copyload
br i1 %85, label %next-block.i127, label %match_case
match_case: ; preds = %loop_body
%86 = getelementptr inbounds i8* %.sroa.0.0.213, i64 1
%87 = load i8* %.sroa.0.0.213, align 1, !alias.scope !1182, !noalias !1189
%match15.sroa.6.0.extract.trunc.off = add i8 %87, -48
%88 = icmp ult i8 %match15.sroa.6.0.extract.trunc.off, 10
br i1 %88, label %join32, label %compare_next
compare_next: ; preds = %match_case
%match15.sroa.6.0.extract.trunc.off112 = add i8 %87, -65
%89 = icmp ult i8 %match15.sroa.6.0.extract.trunc.off112, 26
br i1 %89, label %match_case25, label %compare_next26
match_case25: ; preds = %compare_next
%90 = add i8 %87, -55
br label %join32
compare_next26: ; preds = %compare_next
%match15.sroa.6.0.extract.trunc.off113 = add i8 %87, -97
%91 = icmp ult i8 %match15.sroa.6.0.extract.trunc.off113, 26
br i1 %91, label %match_case27, label %compare_next28
match_case27: ; preds = %compare_next26
%92 = add i8 %87, -87
br label %join32
compare_next28: ; preds = %compare_next26
%.lcssa224 = phi i8* [ %83, %compare_next26 ]
%93 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 0
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %93, i8* getelementptr inbounds ({ i8, { i8 }, [30 x i8] }* @const9737, i64 0, i32 0), i64 32, i32 8, i1 false)
br label %clean_custom_31
clean_custom_31: ; preds = %then-block-14411-, %compare_next28
%94 = phi i8* [ %.lcssa225, %then-block-14411- ], [ %.lcssa224, %compare_next28 ]
%95 = load i64* %81, align 8, !alias.scope !1194
switch i64 %95, label %then-block-28382-.i.i133 [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit134"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit134"
]
then-block-28382-.i.i133: ; preds = %clean_custom_31
tail call void @je_sdallocx(i8* %94, i64 %95, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit134"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit134": ; preds = %clean_custom_31, %clean_custom_31, %then-block-28382-.i.i133
call void @llvm.lifetime.end(i64 24, i8* %59)
br label %clean_custom_
join32: ; preds = %match_case, %match_case27, %match_case25
%b.0 = phi i8 [ %90, %match_case25 ], [ %92, %match_case27 ], [ %match15.sroa.6.0.extract.trunc.off, %match_case ]
%96 = load i8* %base, align 1
%97 = icmp ult i8 %b.0, %96
br i1 %97, label %next-block33, label %then-block-14411-
then-block-14411-: ; preds = %join32
%.lcssa225 = phi i8* [ %83, %join32 ]
%98 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 0
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %98, i8* getelementptr inbounds ({ i8, { i8 }, [30 x i8] }* @const9737, i64 0, i32 0), i64 32, i32 8, i1 false)
br label %clean_custom_31
next-block33: ; preds = %join32
%99 = load i64* %81, align 8, !alias.scope !1197
%100 = icmp eq i64 %84, %99
br i1 %100, label %then-block-31974-.i, label %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit"
then-block-31974-.i: ; preds = %next-block33
invoke fastcc void @"_ZN3vec12Vec$LT$T$GT$4push6resize20h3822656069346260170E"(%"3.collections::vec::Vec<u8>"* noalias dereferenceable(24) %buf)
to label %.noexc136 unwind label %unwind_ast_14231_.loopexit
.noexc136: ; preds = %then-block-31974-.i
%.pre.i135 = load i64* %80, align 8, !alias.scope !1197
%.pre = load i8** %82, align 8, !alias.scope !1197
br label %"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit"
"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E.exit": ; preds = %next-block33, %.noexc136
%101 = phi i8* [ %83, %next-block33 ], [ %.pre, %.noexc136 ]
%102 = phi i64 [ %84, %next-block33 ], [ %.pre.i135, %.noexc136 ]
%103 = getelementptr inbounds i8* %101, i64 %102
store i8 %b.0, i8* %103, align 1, !noalias !1197
%104 = add i64 %102, 1
store i64 %104, i64* %80, align 8, !alias.scope !1197
br label %loop_body
next-block.i127: ; preds = %loop_body
%.lcssa227 = phi i64 [ %84, %loop_body ]
%.lcssa = phi i8* [ %83, %loop_body ]
%105 = load i8* %base, align 1
%106 = zext i8 %105 to i64
%107 = getelementptr inbounds %"ll::base::Base"* bitcast ({ { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } }, { i32, { i64 } } }* @_ZN2ll4base5BASES20h5887718c5197da9b77bE to %"ll::base::Base"*), i64 %106, i32 0
%108 = load i32* %107, align 16
%109 = icmp eq i32 %108, 0
br i1 %109, label %cond2.i, label %normal-return40
cond2.i: ; preds = %next-block.i127
invoke void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @panic_loc8644)
to label %.noexc128 unwind label %unwind_ast_14231_.nonloopexit
.noexc128: ; preds = %cond2.i
unreachable
normal-return40: ; preds = %next-block.i127
%110 = zext i32 %108 to i64
%111 = udiv i64 %arg38.sroa.4.0.copyload, %110
%112 = add i64 %111, 1
%phitmp = trunc i64 %112 to i32
%i.sroa.16.0..sroa_idx154 = getelementptr inbounds [7 x i8]* %i.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %i.sroa.16.0..sroa_idx154)
%113 = icmp eq i32 %phitmp, 0
br i1 %113, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %next-block.i
next-block.i: ; preds = %normal-return40
%114 = shl i64 %112, 3
%115 = and i64 %114, 34359738360
%116 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %115)
to label %.noexc unwind label %unwind_ast_14231_42
.noexc: ; preds = %next-block.i
%117 = ptrtoint i8* %116 to i64
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
unwind_ast_14231_42: ; preds = %next-block.i
%118 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract78 = extractvalue { i8*, i32 } %118, 0
%.fca.1.extract80 = extractvalue { i8*, i32 } %118, 1
%119 = load i64* %81, align 8, !alias.scope !1200
switch i64 %119, label %then-block-28382-.i.i118 [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119"
]
then-block-28382-.i.i118: ; preds = %unwind_ast_14231_42
tail call void @je_sdallocx(i8* %.lcssa, i64 %119, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit119": ; preds = %unwind_ast_14231_42, %unwind_ast_14231_42, %then-block-28382-.i.i118
call void @llvm.lifetime.end(i64 24, i8* %59)
br label %clean_custom_10
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %.noexc, %normal-return40
%i.sroa.0.0.211 = phi i64 [ %117, %.noexc ], [ 1, %normal-return40 ]
%.sink.i = phi i32 [ %phitmp, %.noexc ], [ 0, %normal-return40 ]
%120 = inttoptr i64 %i.sroa.0.0.211 to %"ll::limb::Limb"*
%121 = trunc i64 %.lcssa227 to i32
%122 = load i8* %base, align 1
%123 = zext i8 %122 to i32
%124 = tail call i64 @_ZN2ll4base9from_base20hf5e40fea922b0726XKcE(%"ll::limb::Limb"* %120, i8* %.lcssa, i32 %121, i32 %123)
%125 = trunc i64 %124 to i32
%126 = mul i32 %125, %sign.0
%127 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 2
%128 = bitcast [3 x i64]* %127 to i8*
%i.sroa.0.0..sroa_idx = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 2, i64 0
store i64 %i.sroa.0.0.211, i64* %i.sroa.0.0..sroa_idx, align 8
%i.sroa.8.0..sroa_idx146 = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 2, i64 1
%i.sroa.8.0..sroa_cast147 = bitcast i64* %i.sroa.8.0..sroa_idx146 to i32*
store i32 %126, i32* %i.sroa.8.0..sroa_cast147, align 8
%i.sroa.11.0..sroa_idx = getelementptr inbounds i8* %128, i64 12
%i.sroa.11.0..sroa_cast149 = bitcast i8* %i.sroa.11.0..sroa_idx to i32*
store i32 %.sink.i, i32* %i.sroa.11.0..sroa_cast149, align 4
%i.sroa.14.0..sroa_idx = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 2, i64 2
%i.sroa.14.0..sroa_cast = bitcast i64* %i.sroa.14.0..sroa_idx to i8*
store i8 -44, i8* %i.sroa.14.0..sroa_cast, align 8
%i.sroa.16.0..sroa_raw_cast = getelementptr inbounds %"2.core::result::Result<int::Int, int::ParseIntError>"* %0, i64 0, i32 0
%i.sroa.16.0..sroa_raw_idx = getelementptr inbounds i8* %i.sroa.16.0..sroa_raw_cast, i64 25
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %i.sroa.16.0..sroa_raw_idx, i8* %i.sroa.16.0..sroa_idx154, i64 7, i32 1, i1 false)
store i8 0, i8* %i.sroa.16.0..sroa_raw_cast, align 8
call void @llvm.lifetime.end(i64 7, i8* %i.sroa.16.0..sroa_idx154)
%129 = load i64* %81, align 8, !alias.scope !1203
switch i64 %129, label %then-block-28382-.i.i [
i64 2097865012304223517, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
i64 0, label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
]
then-block-28382-.i.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
tail call void @je_sdallocx(i8* %.lcssa, i64 %129, i32 0)
br label %"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit"
"_ZN31collections..vec..Vec$LT$u8$GT$9drop.917617hf7852997df00b33fE.exit": ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %then-block-28382-.i.i
call void @llvm.lifetime.end(i64 24, i8* %59)
br label %clean_custom_
}
; Function Attrs: noinline noreturn
declare void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16), i64, i64) unnamed_addr #19
declare void @_ZN3str3str5bytes20ha5060a6a0feab2ecHOgE(%"2.core::str::Bytes"* noalias nocapture sret dereferenceable(16), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #7
; Function Attrs: cold noinline uwtable
define internal fastcc void @"_ZN3vec12Vec$LT$T$GT$4push6resize20h3822656069346260170E"(%"3.collections::vec::Vec<u8>"* noalias nocapture dereferenceable(24)) unnamed_addr #17 {
entry-block:
%1 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 2
%2 = load i64* %1, align 8
%3 = load i64* @_ZN3vec15MAX_MEMORY_SIZE20h5df2b0e642bfb149CXhE, align 8
%4 = icmp ult i64 %2, %3
br i1 %4, label %next-block, label %then-block-32029-
then-block-32029-: ; preds = %entry-block
tail call void @_ZN9panicking5panic20hde1da0710b15b00613BE({ %str_slice, %str_slice, i32 }* noalias readonly dereferenceable(40) @"_ZN3vec12Vec$LT$T$GT$4push6resize14_MSG_FILE_LINE20h06b9399504edeace0aiE")
unreachable
next-block: ; preds = %entry-block
%5 = icmp ugt i64 %2, 2
%.op = shl i64 %2, 1
%6 = select i1 %5, i64 %.op, i64 4
%7 = icmp ugt i64 %2, %6
%8 = icmp ugt i64 %6, %3
%.19 = or i1 %7, %8
%. = select i1 %.19, i64 %3, i64 %6
%9 = getelementptr inbounds %"3.collections::vec::Vec<u8>"* %0, i64 0, i32 0, i32 0, i32 0
%10 = load i8** %9, align 8
%11 = tail call fastcc i8* @_ZN3vec16alloc_or_realloc20h2076482487924843660E(i8* %10, i64 %2, i64 %.)
%12 = icmp eq i8* %11, null
br i1 %12, label %then-block-32094-, label %next-block2
then-block-32094-: ; preds = %next-block
tail call void @_ZN3oom20hca3a2a8b171e2cday6aE()
unreachable
next-block2: ; preds = %next-block
%13 = ptrtoint i8* %11 to i64
%14 = bitcast %"3.collections::vec::Vec<u8>"* %0 to i64*
store i64 %13, i64* %14, align 8
store i64 %6, i64* %1, align 8
ret void
}
; Function Attrs: uwtable
define void @_ZN3int3Int6divmod20he80bbbc7dda007f0EVdE({ %"int::Int", %"int::Int" }* noalias nocapture sret dereferenceable(48), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%q.sroa.31 = alloca [7 x i8], align 1
%r.sroa.25 = alloca [7 x i8], align 1
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1206
%5 = icmp slt i32 %4, 0
%6 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %5, i32 %6, i32 %4
%7 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%8 = load i32* %7, align 4, !alias.scope !1209
%9 = icmp slt i32 %8, 0
%10 = sub i32 0, %8
%sret_slot.0.i.i85 = select i1 %9, i32 %10, i32 %8
%11 = icmp slt i32 %sret_slot.0.i.i, %sret_slot.0.i.i85
br i1 %11, label %join, label %else-block
else-block: ; preds = %entry-block
%12 = add i32 %sret_slot.0.i.i, 1
%13 = sub i32 %12, %sret_slot.0.i.i85
br label %join
join: ; preds = %entry-block, %else-block
%out_size.0 = phi i32 [ %13, %else-block ], [ 1, %entry-block ]
%14 = icmp eq i32 %4, 0
br i1 %14, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit, label %else-block.i
else-block.i: ; preds = %join
%15 = ashr i32 %4, 31
%16 = or i32 %15, 1
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
_ZN3int3Int4sign20he27417198f6be603VJdE.exit: ; preds = %join, %else-block.i
%sret_slot.0.i = phi i32 [ 0, %join ], [ %16, %else-block.i ]
%17 = icmp eq i32 %8, 0
br i1 %17, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106, label %else-block.i104
else-block.i104: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%18 = ashr i32 %8, 31
%19 = or i32 %18, 1
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106
_ZN3int3Int4sign20he27417198f6be603VJdE.exit106: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit, %else-block.i104
%sret_slot.0.i105 = phi i32 [ 0, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit ], [ %19, %else-block.i104 ]
%q.sroa.31.0..sroa_idx169 = getelementptr inbounds [7 x i8]* %q.sroa.31, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %q.sroa.31.0..sroa_idx169)
%20 = icmp eq i32 %out_size.0, 0
br i1 %20, label %normal-return, label %next-block.i
next-block.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106
%21 = zext i32 %out_size.0 to i64
%22 = shl nuw nsw i64 %21, 3
%23 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %22), !noalias !1212
%24 = ptrtoint i8* %23 to i64
br label %normal-return
normal-return: ; preds = %next-block.i, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106
%q.sroa.0.0.174 = phi i64 [ %24, %next-block.i ], [ 1, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106 ]
%.sink.i = phi i32 [ %out_size.0, %next-block.i ], [ 0, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit106 ]
%25 = mul i32 %sret_slot.0.i, %out_size.0
%26 = mul i32 %25, %sret_slot.0.i105
%r.sroa.25.0..sroa_idx140 = getelementptr inbounds [7 x i8]* %r.sroa.25, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %r.sroa.25.0..sroa_idx140)
%27 = icmp eq i32 %sret_slot.0.i.i85, 0
br i1 %27, label %normal-return2, label %next-block.i117
next-block.i117: ; preds = %normal-return
%28 = zext i32 %sret_slot.0.i.i85 to i64
%29 = shl nuw nsw i64 %28, 3
%30 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %29)
to label %.noexc unwind label %cond.i111
.noexc: ; preds = %next-block.i117
%31 = ptrtoint i8* %30 to i64
br label %normal-return2
cond.i111: ; preds = %next-block.i117
%32 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract = extractvalue { i8*, i32 } %32, 0
%.fca.1.extract = extractvalue { i8*, i32 } %32, 1
%33 = icmp eq i32 %.sink.i, 0
br i1 %33, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113, label %then-block-15297-.i.i112
then-block-15297-.i.i112: ; preds = %cond.i111
%34 = inttoptr i64 %q.sroa.0.0.174 to i8*
%35 = zext i32 %.sink.i to i64
%36 = shl nuw nsw i64 %35, 3
tail call void @je_sdallocx(i8* %34, i64 %36, i32 0)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113: ; preds = %cond.i111, %then-block-15297-.i.i112
call void @llvm.lifetime.end(i64 7, i8* %q.sroa.31.0..sroa_idx169)
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113
%.sroa.0.0 = phi i8* [ %.fca.0.extract39, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100 ], [ %.fca.0.extract, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113 ]
%.sroa.4.0 = phi i32 [ %.fca.1.extract41, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100 ], [ %.fca.1.extract, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit113 ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.4.0, 1
resume { i8*, i32 } %.fca.1.insert
normal-return2: ; preds = %normal-return, %.noexc
%r.sroa.0.0.171 = phi i64 [ %31, %.noexc ], [ 1, %normal-return ]
%.sink.i116 = phi i32 [ %sret_slot.0.i.i85, %.noexc ], [ 0, %normal-return ]
br i1 %14, label %normal-return11, label %else-block.i107
else-block.i107: ; preds = %normal-return2
%37 = ashr i32 %4, 31
%38 = or i32 %37, 1
br label %normal-return11
cond.i101: ; preds = %normal-return11
%39 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract39 = extractvalue { i8*, i32 } %39, 0
%.fca.1.extract41 = extractvalue { i8*, i32 } %39, 1
%40 = icmp eq i32 %.sink.i116, 0
br i1 %40, label %cond.i98, label %then-block-15297-.i.i102
then-block-15297-.i.i102: ; preds = %cond.i101
%41 = inttoptr i64 %r.sroa.0.0.171 to i8*
%42 = zext i32 %.sink.i116 to i64
%43 = shl nuw nsw i64 %42, 3
tail call void @je_sdallocx(i8* %41, i64 %43, i32 0)
br label %cond.i98
cond.i98: ; preds = %then-block-15297-.i.i102, %cond.i101
call void @llvm.lifetime.end(i64 7, i8* %r.sroa.25.0..sroa_idx140)
%44 = icmp eq i32 %.sink.i, 0
br i1 %44, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100, label %then-block-15297-.i.i99
then-block-15297-.i.i99: ; preds = %cond.i98
%45 = inttoptr i64 %q.sroa.0.0.174 to i8*
%46 = zext i32 %.sink.i to i64
%47 = shl nuw nsw i64 %46, 3
tail call void @je_sdallocx(i8* %45, i64 %47, i32 0)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit100: ; preds = %cond.i98, %then-block-15297-.i.i99
call void @llvm.lifetime.end(i64 7, i8* %q.sroa.31.0..sroa_idx169)
br label %clean_custom_
normal-return11: ; preds = %else-block.i107, %normal-return2
%sret_slot.0.i108 = phi i32 [ 0, %normal-return2 ], [ %38, %else-block.i107 ]
%48 = mul i32 %sret_slot.0.i108, %sret_slot.0.i.i85
%49 = inttoptr i64 %q.sroa.0.0.174 to %"ll::limb::Limb"*
%50 = inttoptr i64 %r.sroa.0.0.171 to %"ll::limb::Limb"*
%51 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%52 = load %"ll::limb::Limb"** %51, align 8, !alias.scope !1215
%53 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%54 = load %"ll::limb::Limb"** %53, align 8, !alias.scope !1218
invoke void @_ZN2ll3div6divrem20h475d48b23673b97d7ybE(%"ll::limb::Limb"* %49, %"ll::limb::Limb"* %50, %"ll::limb::Limb"* %52, i32 %sret_slot.0.i.i, %"ll::limb::Limb"* %54, i32 %sret_slot.0.i.i85)
to label %normal-return12 unwind label %cond.i101
normal-return12: ; preds = %normal-return11
%55 = icmp eq i32 %26, 0
br i1 %55, label %normal-return13, label %join.lr.ph.i90
join.lr.ph.i90: ; preds = %normal-return12
%56 = ashr i32 %26, 31
%57 = or i32 %56, 1
br label %join.i93
while_body.i91: ; preds = %join.i93
%58 = sub i32 %60, %57
%59 = icmp eq i32 %60, %57
br i1 %59, label %normal-return13.loopexit, label %join.i93
join.i93: ; preds = %while_body.i91, %join.lr.ph.i90
%60 = phi i32 [ %26, %join.lr.ph.i90 ], [ %58, %while_body.i91 ]
%61 = icmp slt i32 %60, 0
%62 = sub i32 0, %60
%sret_slot.0.i.i.i92 = select i1 %61, i32 %62, i32 %60
%63 = add i32 %sret_slot.0.i.i.i92, -1
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 %64, i32 0
%66 = load i64* %65, align 8, !alias.scope !1221, !noalias !1224
%67 = icmp eq i64 %66, 0
br i1 %67, label %while_body.i91, label %normal-return13.loopexit
normal-return13.loopexit: ; preds = %while_body.i91, %join.i93
%.ph = phi i32 [ %60, %join.i93 ], [ %58, %while_body.i91 ]
br label %normal-return13
normal-return13: ; preds = %normal-return13.loopexit, %normal-return12
%68 = phi i32 [ 0, %normal-return12 ], [ %.ph, %normal-return13.loopexit ]
%69 = icmp eq i32 %48, 0
br i1 %69, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %join.lr.ph.i
join.lr.ph.i: ; preds = %normal-return13
%70 = ashr i32 %48, 31
%71 = or i32 %70, 1
br label %join.i
while_body.i: ; preds = %join.i
%72 = sub i32 %r.sroa.11.0.copyload172, %71
%73 = icmp eq i32 %r.sroa.11.0.copyload172, %71
br i1 %73, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%r.sroa.11.0.copyload172 = phi i32 [ %48, %join.lr.ph.i ], [ %72, %while_body.i ]
%74 = icmp slt i32 %r.sroa.11.0.copyload172, 0
%75 = sub i32 0, %r.sroa.11.0.copyload172
%sret_slot.0.i.i.i = select i1 %74, i32 %75, i32 %r.sroa.11.0.copyload172
%76 = add i32 %sret_slot.0.i.i.i, -1
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %77, i32 0
%79 = load i64* %78, align 8, !alias.scope !1228, !noalias !1231
%80 = icmp eq i64 %79, 0
br i1 %80, label %while_body.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit: ; preds = %while_body.i, %join.i
%r.sroa.11.0.copyload173.ph = phi i32 [ %r.sroa.11.0.copyload172, %join.i ], [ %72, %while_body.i ]
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, %normal-return13
%r.sroa.11.0.copyload173 = phi i32 [ 0, %normal-return13 ], [ %r.sroa.11.0.copyload173.ph, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit ]
%q.sroa.0.0..sroa_cast148 = bitcast { %"int::Int", %"int::Int" }* %0 to i64*
store i64 %q.sroa.0.0.174, i64* %q.sroa.0.0..sroa_cast148, align 8
%q.sroa.13.0..sroa_idx152 = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 0, i32 1
store i32 %68, i32* %q.sroa.13.0..sroa_idx152, align 8
%q.sroa.20.0..sroa_idx156 = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 0, i32 2
store i32 %.sink.i, i32* %q.sroa.20.0..sroa_idx156, align 4
%q.sroa.27.0..sroa_idx = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 0, i32 3
store i8 -44, i8* %q.sroa.27.0..sroa_idx, align 8
%q.sroa.31.0..sroa_raw_cast = bitcast { %"int::Int", %"int::Int" }* %0 to i8*
%q.sroa.31.0..sroa_raw_idx = getelementptr inbounds i8* %q.sroa.31.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %q.sroa.31.0..sroa_raw_idx, i8* %q.sroa.31.0..sroa_idx169, i64 7, i32 1, i1 false)
%r.sroa.0.0..sroa_idx = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 1
%r.sroa.0.0..sroa_cast = bitcast %"int::Int"* %r.sroa.0.0..sroa_idx to i64*
store i64 %r.sroa.0.0.171, i64* %r.sroa.0.0..sroa_cast, align 8
%r.sroa.11.0..sroa_idx125 = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 1, i32 1
store i32 %r.sroa.11.0.copyload173, i32* %r.sroa.11.0..sroa_idx125, align 8
%r.sroa.17.0..sroa_idx128 = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 1, i32 2
store i32 %.sink.i116, i32* %r.sroa.17.0..sroa_idx128, align 4
%r.sroa.22.0..sroa_idx = getelementptr inbounds { %"int::Int", %"int::Int" }* %0, i64 0, i32 1, i32 3
store i8 -44, i8* %r.sroa.22.0..sroa_idx, align 8
%r.sroa.25.0..sroa_raw_idx = getelementptr inbounds i8* %q.sroa.31.0..sroa_raw_cast, i64 41
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %r.sroa.25.0..sroa_raw_idx, i8* %r.sroa.25.0..sroa_idx140, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %r.sroa.25.0..sroa_idx140)
call void @llvm.lifetime.end(i64 7, i8* %q.sroa.31.0..sroa_idx169)
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN3int3Int9normalize20h48da099921c57a57x3dE(%"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #0 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !1235
%3 = icmp eq i32 %2, 0
br i1 %3, label %while_exit, label %join.lr.ph
join.lr.ph: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8
br label %join
while_exit.loopexit: ; preds = %while_body, %join
br label %while_exit
while_exit: ; preds = %while_exit.loopexit, %entry-block
ret void
while_body: ; preds = %join
%8 = sub i32 %10, %5
store i32 %8, i32* %1, align 4
%9 = icmp eq i32 %10, %5
br i1 %9, label %while_exit.loopexit, label %join
join: ; preds = %join.lr.ph, %while_body
%10 = phi i32 [ %2, %join.lr.ph ], [ %8, %while_body ]
%11 = icmp slt i32 %10, 0
%12 = sub i32 0, %10
%sret_slot.0.i.i = select i1 %11, i32 %12, i32 %10
%13 = add i32 %sret_slot.0.i.i, -1
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds %"ll::limb::Limb"* %7, i64 %14, i32 0
%16 = load i64* %15, align 8, !alias.scope !1238, !noalias !1241
%17 = icmp eq i64 %16, 0
br i1 %17, label %while_body, label %while_exit.loopexit
}
; Function Attrs: uwtable
define void @_ZN3int3Int3pow20h5578ec7928733d38iYdE(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
entry-block:
%base = alloca %"int::Int", align 8
%ret.sroa.27 = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%4 = alloca %"int::Int", align 8
%arg4 = alloca %"int::Int", align 8
%5 = bitcast %"int::Int"* %base to i8*
call void @llvm.lifetime.start(i64 24, i8* %5)
%6 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
%ret.sroa.27.0..sroa_idx88 = getelementptr inbounds [7 x i8]* %ret.sroa.27, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %ret.sroa.27.0..sroa_idx88)
%7 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit" unwind label %unwind_ast_14649_
"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit": ; preds = %entry-block
%8 = ptrtoint i8* %7 to i64
%limb.sroa.0.0..sroa_idx.i.i = bitcast i8* %7 to i64*
store i64 1, i64* %limb.sroa.0.0..sroa_idx.i.i, align 8, !noalias !1243
%9 = icmp eq i64 %2, 0
br i1 %9, label %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge", label %while_body.lr.ph
"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge": ; preds = %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit"
%.pre124 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 3
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
while_body.lr.ph: ; preds = %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit"
%10 = bitcast %"int::Int"* %4 to i8*
%11 = bitcast %"int::Int"* %arg4 to i8*
%12 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 3
%13 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 2
%14 = bitcast %"int::Int"* %base to i8**
%15 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 1
%16 = bitcast %"int::Int"* %3 to i8*
%17 = bitcast %"int::Int"* %arg to i8*
%ret.sroa.0.0..sroa_cast = bitcast %"int::Int"* %arg to i64*
%ret.sroa.12.0..sroa_idx51 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 1
%ret.sroa.16.0..sroa_idx58 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 2
%ret.sroa.23.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 3
%ret.sroa.27.0..sroa_raw_idx = getelementptr inbounds i8* %17, i64 17
%ret.sroa.0.0..sroa_cast44 = bitcast %"int::Int"* %3 to i64*
%ret.sroa.12.0..sroa_idx52 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%ret.sroa.23.0..sroa_idx67 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
%ret.sroa.27.0..sroa_raw_idx75 = getelementptr inbounds i8* %16, i64 17
br label %while_body
unwind_ast_14649_: ; preds = %entry-block
%18 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract = extractvalue { i8*, i32 } %18, 0
%.fca.1.extract = extractvalue { i8*, i32 } %18, 1
%19 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 3
%20 = load i8* %19, align 8
%21 = icmp eq i8 %20, -44
br i1 %21, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_ast_14649_
%22 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 2
%23 = load i32* %22, align 4, !alias.scope !1248
%24 = icmp eq i32 %23, 0
br i1 %24, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%25 = bitcast %"int::Int"* %base to i8**
%26 = load i8** %25, align 8, !alias.scope !1251
%27 = zext i32 %23 to i64
%28 = shl nuw nsw i64 %27, 3
tail call void @je_sdallocx(i8* %26, i64 %28, i32 0)
store i32 0, i32* %22, align 4, !alias.scope !1248
%29 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 1
store i32 0, i32* %29, align 8, !alias.scope !1248
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_ast_14649_, %cond.i, %then-block-15297-.i.i
call void @llvm.lifetime.end(i64 24, i8* %5)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38
%.sroa.4.0 = phi i32 [ %.fca.1.extract13103125, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38 ], [ %.fca.1.extract, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit ]
%.sroa.0.0 = phi i8* [ %.fca.0.extract11102126, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38 ], [ %.fca.0.extract, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit ]
tail call void @llvm.lifetime.end(i64 24, i8* %6)
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %.sroa.4.0, 1
resume { i8*, i32 } %.fca.1.insert
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41
%ret.sroa.0.0.91.lcssa134 = phi i64 [ %ret.sroa.0.0.91, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.12.0.copyload92.lcssa133 = phi i32 [ %ret.sroa.12.0.copyload92, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.16.0.copyload94.lcssa132 = phi i32 [ %ret.sroa.16.0.copyload94, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.23.0.copyload97.lcssa131 = phi i8 [ %ret.sroa.23.0.copyload97, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge"
%.pre-phi = phi i8* [ %.pre124, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge" ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit ]
%ret.sroa.0.0.90.lcssa = phi i64 [ %8, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge" ], [ %ret.sroa.0.0.91.lcssa134, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit ]
%ret.sroa.12.0.copyload93.lcssa = phi i32 [ 1, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge" ], [ %ret.sroa.12.0.copyload92.lcssa133, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit ]
%ret.sroa.16.0.copyload95.lcssa = phi i32 [ 1, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge" ], [ %ret.sroa.16.0.copyload94.lcssa132, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit ]
%ret.sroa.23.0.copyload98.lcssa = phi i8 [ -44, %"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE.exit._ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23_crit_edge" ], [ %ret.sroa.23.0.copyload97.lcssa131, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit ]
%ret.sroa.0.0..sroa_cast47 = bitcast %"int::Int"* %0 to i64*
store i64 %ret.sroa.0.0.90.lcssa, i64* %ret.sroa.0.0..sroa_cast47, align 8
%ret.sroa.12.0..sroa_idx54 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %ret.sroa.12.0.copyload93.lcssa, i32* %ret.sroa.12.0..sroa_idx54, align 8
%ret.sroa.16.0..sroa_idx61 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %ret.sroa.16.0.copyload95.lcssa, i32* %ret.sroa.16.0..sroa_idx61, align 4
%ret.sroa.23.0..sroa_idx69 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 %ret.sroa.23.0.copyload98.lcssa, i8* %ret.sroa.23.0..sroa_idx69, align 8
%ret.sroa.27.0..sroa_raw_cast78 = bitcast %"int::Int"* %0 to i8*
%ret.sroa.27.0..sroa_raw_idx79 = getelementptr inbounds i8* %ret.sroa.27.0..sroa_raw_cast78, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ret.sroa.27.0..sroa_raw_idx79, i8* %ret.sroa.27.0..sroa_idx88, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %ret.sroa.27.0..sroa_idx88)
%30 = load i8* %.pre-phi, align 8
%31 = icmp eq i8 %30, -44
br i1 %31, label %cond.i24, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit29
cond.i24: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
%32 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 2
%33 = load i32* %32, align 4, !alias.scope !1254
%34 = icmp eq i32 %33, 0
br i1 %34, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit29, label %then-block-15297-.i.i25
then-block-15297-.i.i25: ; preds = %cond.i24
%35 = bitcast %"int::Int"* %base to i8**
%36 = load i8** %35, align 8, !alias.scope !1257
%37 = zext i32 %33 to i64
%38 = shl nuw nsw i64 %37, 3
tail call void @je_sdallocx(i8* %36, i64 %38, i32 0)
store i32 0, i32* %32, align 4, !alias.scope !1254
%39 = getelementptr inbounds %"int::Int"* %base, i64 0, i32 1
store i32 0, i32* %39, align 8, !alias.scope !1254
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit29
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit29: ; preds = %then-block-15297-.i.i25, %cond.i24, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
call void @llvm.lifetime.end(i64 24, i8* %5)
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
while_body: ; preds = %while_body.lr.ph, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41
%exp.0116 = phi i64 [ %2, %while_body.lr.ph ], [ %58, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.0.0.90115 = phi i64 [ %8, %while_body.lr.ph ], [ %ret.sroa.0.0.91, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.12.0.copyload93114 = phi i32 [ 1, %while_body.lr.ph ], [ %ret.sroa.12.0.copyload92, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.16.0.copyload95113 = phi i32 [ 1, %while_body.lr.ph ], [ %ret.sroa.16.0.copyload94, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%ret.sroa.23.0.copyload98112 = phi i8 [ -44, %while_body.lr.ph ], [ %ret.sroa.23.0.copyload97, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 ]
%40 = and i64 %exp.0116, 1
%41 = icmp eq i64 %40, 0
br i1 %41, label %next-block, label %then-block-14703-
then-block-14703-: ; preds = %while_body
call void @llvm.lifetime.start(i64 24, i8* %16)
call void @llvm.lifetime.start(i64 24, i8* %17)
store i64 %ret.sroa.0.0.90115, i64* %ret.sroa.0.0..sroa_cast, align 8
store i32 %ret.sroa.12.0.copyload93114, i32* %ret.sroa.12.0..sroa_idx51, align 8
store i32 %ret.sroa.16.0.copyload95113, i32* %ret.sroa.16.0..sroa_idx58, align 4
store i8 %ret.sroa.23.0.copyload98112, i8* %ret.sroa.23.0..sroa_idx, align 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ret.sroa.27.0..sroa_raw_idx, i8* %ret.sroa.27.0..sroa_idx88, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %ret.sroa.27.0..sroa_idx88, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int33Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20ha0f99cbf0cc2adaaHJeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %base)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32: ; preds = %then-block-14703-
call void @llvm.lifetime.end(i64 24, i8* %17)
%ret.sroa.0.0.copyload45 = load i64* %ret.sroa.0.0..sroa_cast44, align 8
%42 = bitcast i32* %ret.sroa.12.0..sroa_idx52 to i64*
%ret.sroa.12.0.copyload53 = load i64* %42, align 8
%43 = trunc i64 %ret.sroa.12.0.copyload53 to i32
%44 = lshr i64 %ret.sroa.12.0.copyload53, 32
%45 = trunc i64 %44 to i32
%ret.sroa.23.0.copyload68 = load i8* %ret.sroa.23.0..sroa_idx67, align 8
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %ret.sroa.27.0..sroa_idx88, i8* %ret.sroa.27.0..sroa_raw_idx75, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %16)
br label %next-block
unwind_ast_14649_2: ; preds = %next-block
%ret.sroa.0.0.91.lcssa = phi i64 [ %ret.sroa.0.0.91, %next-block ]
%ret.sroa.16.0.copyload94.lcssa = phi i32 [ %ret.sroa.16.0.copyload94, %next-block ]
%ret.sroa.23.0.copyload97.lcssa = phi i8 [ %ret.sroa.23.0.copyload97, %next-block ]
%46 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract11 = extractvalue { i8*, i32 } %46, 0
%.fca.1.extract13 = extractvalue { i8*, i32 } %46, 1
%47 = icmp ne i8 %ret.sroa.23.0.copyload97.lcssa, -44
%48 = icmp eq i32 %ret.sroa.16.0.copyload94.lcssa, 0
%or.cond = or i1 %47, %48
br i1 %or.cond, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread, label %then-block-15297-.i.i34
then-block-15297-.i.i34: ; preds = %unwind_ast_14649_2
%49 = inttoptr i64 %ret.sroa.0.0.91.lcssa to i8*
%50 = zext i32 %ret.sroa.16.0.copyload94.lcssa to i64
%51 = shl nuw nsw i64 %50, 3
tail call void @je_sdallocx(i8* %49, i64 %51, i32 0)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread: ; preds = %unwind_ast_14649_2, %then-block-15297-.i.i34
call void @llvm.lifetime.end(i64 7, i8* %ret.sroa.27.0..sroa_idx88)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35: ; preds = %then-block-14703-
%52 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%.fca.0.extract11100 = extractvalue { i8*, i32 } %52, 0
%.fca.1.extract13101 = extractvalue { i8*, i32 } %52, 1
%.pre = load i8* %12, align 8
%phitmp = icmp eq i8 %.pre, -44
call void @llvm.lifetime.end(i64 7, i8* %ret.sroa.27.0..sroa_idx88)
br i1 %phitmp, label %cond.i36, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38
cond.i36: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35
%53 = load i32* %13, align 4, !alias.scope !1260
%54 = icmp eq i32 %53, 0
br i1 %54, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38, label %then-block-15297-.i.i37
then-block-15297-.i.i37: ; preds = %cond.i36
%55 = load i8** %14, align 8, !alias.scope !1263
%56 = zext i32 %53 to i64
%57 = shl nuw nsw i64 %56, 3
tail call void @je_sdallocx(i8* %55, i64 %57, i32 0)
store i32 0, i32* %13, align 4, !alias.scope !1260
store i32 0, i32* %15, align 8, !alias.scope !1260
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit38: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35, %cond.i36, %then-block-15297-.i.i37
%.fca.0.extract11102126 = phi i8* [ %.fca.0.extract11, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread ], [ %.fca.0.extract11100, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35 ], [ %.fca.0.extract11100, %cond.i36 ], [ %.fca.0.extract11100, %then-block-15297-.i.i37 ]
%.fca.1.extract13103125 = phi i32 [ %.fca.1.extract13, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35.thread ], [ %.fca.1.extract13101, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35 ], [ %.fca.1.extract13101, %cond.i36 ], [ %.fca.1.extract13101, %then-block-15297-.i.i37 ]
call void @llvm.lifetime.end(i64 24, i8* %5)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
next-block: ; preds = %while_body, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
%ret.sroa.23.0.copyload97 = phi i8 [ %ret.sroa.23.0.copyload98112, %while_body ], [ %ret.sroa.23.0.copyload68, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32 ]
%ret.sroa.16.0.copyload94 = phi i32 [ %ret.sroa.16.0.copyload95113, %while_body ], [ %45, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32 ]
%ret.sroa.12.0.copyload92 = phi i32 [ %ret.sroa.12.0.copyload93114, %while_body ], [ %43, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32 ]
%ret.sroa.0.0.91 = phi i64 [ %ret.sroa.0.0.90115, %while_body ], [ %ret.sroa.0.0.copyload45, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32 ]
call void @llvm.lifetime.start(i64 24, i8* %10)
call void @llvm.lifetime.start(i64 24, i8* %11)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* %5, i64 24, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %5, i8 29, i64 24, i32 8, i1 false)
invoke void @_ZN3int3Int6square20h353d51c9a3a07126DZdE(%"int::Int"* noalias nocapture sret dereferenceable(24) %4, %"int::Int"* noalias nocapture dereferenceable(24) %arg4)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41 unwind label %unwind_ast_14649_2
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit41: ; preds = %next-block
call void @llvm.lifetime.end(i64 24, i8* %11)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %10, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %10)
%58 = lshr i64 %exp.0116, 1
%59 = icmp eq i64 %58, 0
br i1 %59, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23.loopexit, label %while_body
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32) unnamed_addr #6 {
entry-block:
%2 = icmp eq i32 %1, 0
br i1 %2, label %then-block-23112-, label %next-block
then-block-23112-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !1266
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23112-
%.sink43 = phi i32 [ %13, %next-block ], [ 0, %then-block-23112- ]
%.sink = phi i32 [ 1, %next-block ], [ 0, %then-block-23112- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink43, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i32 %1, 0
%8 = sub i32 0, %1
%sret_slot.0.i = select i1 %7, i32 %8, i32 %1
%9 = sext i32 %sret_slot.0.i to i64
%10 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !1271
%11 = ptrtoint i8* %10 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %10 to i64*
store i64 %9, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !1276
%12 = ashr i32 %1, 31
%13 = or i32 %12, 1
%i6.sroa.0.0..sroa_cast30 = bitcast %"int::Int"* %0 to i64*
store i64 %11, i64* %i6.sroa.0.0..sroa_cast30, align 8
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int33Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20ha0f99cbf0cc2adaaHJeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%out = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1277
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-17597-, label %normal-return2
clean_custom_: ; preds = %normal-return3, %next-block7
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %clean_custom_
%10 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !1280
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %1 to i8**
%14 = load i8** %13, align 8, !alias.scope !1283
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !1280
%17 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %17, align 4, !alias.scope !1280
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %clean_custom_, %cond.i, %then-block-15297-.i.i
%18 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %18)
resume { i8*, i32 } %6
then-block-17597-: ; preds = %entry-block
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %19, align 4
%20 = bitcast %"int::Int"* %1 to i8*
%21 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %21, i8* %20, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %20, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
clean_custom_1: ; preds = %next-block7
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%.pre = load i8* %.phi.trans.insert, align 1
%phitmp = icmp eq i8 %.pre, -44
br i1 %phitmp, label %cond.i30, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
cond.i30: ; preds = %clean_custom_1
%22 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%23 = load i32* %22, align 4, !alias.scope !1286
%24 = icmp eq i32 %23, 0
br i1 %24, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32, label %then-block-15297-.i.i31
then-block-15297-.i.i31: ; preds = %cond.i30
%25 = bitcast %"int::Int"* %1 to i8**
%26 = load i8** %25, align 8, !alias.scope !1289
%27 = zext i32 %23 to i64
%28 = shl nuw nsw i64 %27, 3
tail call void @je_sdallocx(i8* %26, i64 %28, i32 0)
store i32 0, i32* %22, align 4, !alias.scope !1286
%29 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %29, align 4, !alias.scope !1286
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32: ; preds = %then-block-17597-, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35, %clean_custom_1, %cond.i30, %then-block-15297-.i.i31
%30 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %30)
ret void
normal-return2: ; preds = %entry-block
%31 = icmp slt i32 %4, 0
%32 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %31, i32 %32, i32 %4
%33 = icmp eq i32 %sret_slot.0.i.i, 1
br i1 %33, label %normal-return3, label %next-block7
normal-return3: ; preds = %normal-return2
%34 = bitcast %"int::Int"* %out to i8*
call void @llvm.lifetime.start(i64 24, i8* %34)
%35 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%36 = load %"ll::limb::Limb"** %35, align 8, !alias.scope !1292
%37 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %37)
%38 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %37, i8* %38, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %38, i8 29, i64 24, i32 8, i1 false)
%39 = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
%40 = load i64* %39, align 8
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %out, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %40)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35 unwind label %clean_custom_
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35: ; preds = %normal-return3
call void @llvm.lifetime.end(i64 24, i8* %37)
%41 = getelementptr inbounds %"int::Int"* %out, i64 0, i32 1
%42 = load i32* %41, align 8
%43 = ashr i32 %4, 31
%44 = or i32 %43, 1
%45 = mul i32 %44, %42
store i32 %45, i32* %41, align 8
%46 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %46, i8* %34, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %34)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
next-block7: ; preds = %normal-return2
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h603981f2c29809ddBFeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %clean_custom_1 unwind label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int3Int6square20h353d51c9a3a07126DZdE(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%arg = alloca %"int::Int", align 8
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !1295
%4 = icmp eq i32 %3, 0
br i1 %4, label %then-block-14765-, label %normal-return3
unwind_custom_: ; preds = %next-block6, %normal-return4
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%7 = load i8* %6, align 1
%8 = icmp eq i8 %7, -44
br i1 %8, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%9 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%10 = load i32* %9, align 4, !alias.scope !1298
%11 = icmp eq i32 %10, 0
br i1 %11, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%12 = bitcast %"int::Int"* %1 to i8**
%13 = load i8** %12, align 8, !alias.scope !1301
%14 = zext i32 %10 to i64
%15 = shl nuw nsw i64 %14, 3
tail call void @je_sdallocx(i8* %13, i64 %15, i32 0)
store i32 0, i32* %9, align 4, !alias.scope !1298
store i32 0, i32* %2, align 4, !alias.scope !1298
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%16 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %16)
resume { i8*, i32 } %5
then-block-14765-: ; preds = %entry-block
%17 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %17, align 8, !alias.scope !1304
%18 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %18, align 8, !alias.scope !1304
%19 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %19, align 4, !alias.scope !1304
%20 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %20, align 8, !alias.scope !1304
br label %clean_custom_2
clean_custom_2: ; preds = %then-block-14765-, %next-block6, %normal-return5
%21 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%22 = load i8* %21, align 1
%23 = icmp eq i8 %22, -44
br i1 %23, label %cond.i15, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit17
cond.i15: ; preds = %clean_custom_2
%24 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%25 = load i32* %24, align 4, !alias.scope !1309
%26 = icmp eq i32 %25, 0
br i1 %26, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit17, label %then-block-15297-.i.i16
then-block-15297-.i.i16: ; preds = %cond.i15
%27 = bitcast %"int::Int"* %1 to i8**
%28 = load i8** %27, align 8, !alias.scope !1312
%29 = zext i32 %25 to i64
%30 = shl nuw nsw i64 %29, 3
tail call void @je_sdallocx(i8* %28, i64 %30, i32 0)
store i32 0, i32* %24, align 4, !alias.scope !1309
store i32 0, i32* %2, align 4, !alias.scope !1309
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit17
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit17: ; preds = %clean_custom_2, %cond.i15, %then-block-15297-.i.i16
%31 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %31)
ret void
normal-return3: ; preds = %entry-block
%32 = icmp slt i32 %3, 0
%33 = sub i32 0, %3
%sret_slot.0.i.i = select i1 %32, i32 %33, i32 %3
%34 = icmp eq i32 %sret_slot.0.i.i, 1
br i1 %34, label %normal-return4, label %next-block6
normal-return4: ; preds = %normal-return3
%35 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%36 = load %"ll::limb::Limb"** %35, align 8, !alias.scope !1315
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %36, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !1320
%37 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %37)
%38 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %37, i8* %38, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %38, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %sret_slot.sroa.0.0.copyload6.i)
to label %normal-return5 unwind label %unwind_custom_
normal-return5: ; preds = %normal-return4
call void @llvm.lifetime.end(i64 24, i8* %37)
br label %clean_custom_2
next-block6: ; preds = %normal-return3
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h603981f2c29809ddBFeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %clean_custom_2 unwind label %unwind_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
normal-return:
%3 = icmp eq i64 %2, 0
%.pre = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
br i1 %3, label %then-block-17266-, label %before_rhs
unwind_custom_: ; preds = %then-block-17310-
%4 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%6 = load i8* %5, align 1
%7 = icmp eq i8 %6, -44
br i1 %7, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%9 = load i32* %8, align 4, !alias.scope !1321
%10 = icmp eq i32 %9, 0
br i1 %10, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%11 = bitcast %"int::Int"* %1 to i8**
%12 = load i8** %11, align 8, !alias.scope !1324
%13 = zext i32 %9 to i64
%14 = shl nuw nsw i64 %13, 3
tail call void @je_sdallocx(i8* %12, i64 %14, i32 0)
store i32 0, i32* %8, align 4, !alias.scope !1321
store i32 0, i32* %.pre, align 4, !alias.scope !1321
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%15 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %15)
resume { i8*, i32 } %4
before_rhs: ; preds = %normal-return
%16 = load i32* %.pre, align 4, !alias.scope !1327
%17 = icmp eq i32 %16, 0
br i1 %17, label %then-block-17266-, label %normal-return3
then-block-17266-: ; preds = %normal-return, %before_rhs
store i32 0, i32* %.pre, align 4
%18 = bitcast %"int::Int"* %1 to i8*
%19 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %18, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %18, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit26
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit26: ; preds = %then-block-17266-, %then-block-17280-, %next-block10
%20 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %20)
ret void
normal-return3: ; preds = %before_rhs
%21 = icmp eq i64 %2, 1
br i1 %21, label %then-block-17280-, label %normal-return6
then-block-17280-: ; preds = %normal-return3
%22 = bitcast %"int::Int"* %1 to i8*
%23 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* %22, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %22, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit26
normal-return6: ; preds = %normal-return3
%24 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%25 = load %"ll::limb::Limb"** %24, align 8, !alias.scope !1330
%26 = icmp slt i32 %16, 0
%27 = sub i32 0, %16
%sret_slot.0.i.i = select i1 %26, i32 %27, i32 %16
%xl.sroa.0.0..sroa_idx35.i.i = getelementptr inbounds %"ll::limb::Limb"* %25, i64 0, i32 0
%xl.sroa.0.0.copyload36.i.i = load i64* %xl.sroa.0.0..sroa_idx35.i.i, align 8
%28 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload36.i.i, i64 %2) #20, !noalias !1333, !srcloc !19
%29 = extractvalue { i64, i64 } %28, 0
%30 = extractvalue { i64, i64 } %28, 1
store i64 %30, i64* %xl.sroa.0.0..sroa_idx35.i.i, align 8
%31 = add i32 %sret_slot.0.i.i, -1
%32 = icmp eq i32 %31, 0
br i1 %32, label %normal-return8, label %next-block.i.i.preheader
next-block.i.i.preheader: ; preds = %normal-return6
br label %next-block.i.i
next-block.i.i: ; preds = %next-block.i.i.preheader, %next-block.i.i
%33 = phi i32 [ %44, %next-block.i.i ], [ %31, %next-block.i.i.preheader ]
%34 = phi i64 [ %43, %next-block.i.i ], [ %29, %next-block.i.i.preheader ]
%wp.039.i.i = phi %"ll::limb::Limb"* [ %35, %next-block.i.i ], [ %25, %next-block.i.i.preheader ]
%35 = getelementptr inbounds %"ll::limb::Limb"* %wp.039.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %35, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%36 = tail call { i64, i64 } asm "mulq $3", "={rdx},={rax},{rax},r|m,~{dirflag},~{fpsr},~{flags}"(i64 %xl.sroa.0.0.copyload.i.i, i64 %2) #20, !noalias !1333, !srcloc !19
%37 = extractvalue { i64, i64 } %36, 0
%38 = extractvalue { i64, i64 } %36, 1
%39 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %38, i64 %34) #20
%40 = extractvalue { i64, i1 } %39, 0
%41 = extractvalue { i64, i1 } %39, 1
%42 = zext i1 %41 to i64
%43 = add i64 %42, %37
store i64 %40, i64* %xl.sroa.0.0..sroa_idx.i.i, align 8
%44 = add i32 %33, -1
%45 = icmp eq i32 %44, 0
br i1 %45, label %normal-return8.loopexit, label %next-block.i.i
normal-return8.loopexit: ; preds = %next-block.i.i
%.lcssa = phi i64 [ %43, %next-block.i.i ]
br label %normal-return8
normal-return8: ; preds = %normal-return8.loopexit, %normal-return6
%.lcssa.i.i = phi i64 [ %29, %normal-return6 ], [ %.lcssa, %normal-return8.loopexit ]
%46 = icmp eq i64 %.lcssa.i.i, 0
br i1 %46, label %next-block10, label %then-block-17310-
then-block-17310-: ; preds = %normal-return8
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 %.lcssa.i.i)
to label %next-block10 unwind label %unwind_custom_
next-block10: ; preds = %normal-return8, %then-block-17310-
%47 = bitcast %"int::Int"* %1 to i8*
%48 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %48, i8* %47, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %47, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit26
}
; Function Attrs: uwtable
define void @"_ZN3int49_$RF$$u27$b$u20$Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h603981f2c29809ddBFeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%ret = alloca %"int::Int", align 8
%3 = alloca %"int::Int", align 8
%ret5 = alloca %"int::Int", align 8
%4 = alloca %"int::Int", align 8
%out.sroa.25 = alloca [7 x i8], align 1
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !1340
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-17406-, label %before_rhs
before_rhs: ; preds = %entry-block
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !1343
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-17406-, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit136
then-block-17406-: ; preds = %entry-block, %before_rhs
%11 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %11, align 8, !alias.scope !1346
%12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %12, align 8, !alias.scope !1346
%13 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %13, align 4, !alias.scope !1346
%14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %14, align 8, !alias.scope !1346
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %then-block-17406-
ret void
_ZN3int3Int4sign20he27417198f6be603VJdE.exit136: ; preds = %before_rhs
%15 = ashr i32 %6, 31
%16 = or i32 %15, 1
%17 = ashr i32 %9, 31
%18 = or i32 %17, 1
%19 = mul nsw i32 %18, %16
%20 = icmp slt i32 %6, 0
%21 = sub i32 0, %6
%sret_slot.0.i.i142 = select i1 %20, i32 %21, i32 %6
%22 = icmp eq i32 %sret_slot.0.i.i142, 1
br i1 %22, label %next-block.i144, label %next-block4
next-block.i144: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit136
%23 = bitcast %"int::Int"* %ret to i8*
call void @llvm.lifetime.start(i64 24, i8* %23)
%24 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %24)
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%25 = icmp slt i32 %9, 0
%26 = sub i32 0, %9
%sret_slot.0.i.i25.i = select i1 %25, i32 %26, i32 %9
%27 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %27, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i144
%28 = zext i32 %sret_slot.0.i.i25.i to i64
%29 = shl nuw nsw i64 %28, 3
%30 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %29), !noalias !1351
%31 = ptrtoint i8* %30 to i64
%32 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%33 = load %"ll::limb::Limb"** %32, align 8, !alias.scope !1357, !noalias !1360
%34 = bitcast %"ll::limb::Limb"* %33 to i8*
%35 = bitcast i8* %30 to %"ll::limb::Limb"*
%36 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %36, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%37 = add i32 %sret_slot.0.i.i25.i, -1
%38 = zext i32 %37 to i64
%39 = add nuw nsw i64 %38, 1
%end.idx224 = add nuw nsw i64 %38, 1
%n.vec226 = and i64 %39, 8589934588
%cmp.zero228 = icmp eq i64 %n.vec226, 0
%40 = add i32 %sret_slot.0.i.i25.i, -1
%41 = zext i32 %40 to i64
br i1 %cmp.zero228, label %middle.block221, label %vector.memcheck237
vector.memcheck237: ; preds = %while_body.lr.ph.i.i
%scevgep231 = getelementptr %"ll::limb::Limb"* %33, i64 %41
%scevgep231232 = bitcast %"ll::limb::Limb"* %scevgep231 to i8*
%bound0233 = icmp ule i8* %30, %scevgep231232
%42 = shl nuw nsw i64 %41, 3
%scevgep230 = getelementptr i8* %30, i64 %42
%bound1234 = icmp ule i8* %34, %scevgep230
%memcheck.conflict236 = and i1 %bound0233, %bound1234
br i1 %memcheck.conflict236, label %middle.block221, label %vector.body220.preheader
vector.body220.preheader: ; preds = %vector.memcheck237
br label %vector.body220
vector.body220: ; preds = %vector.body220.preheader, %vector.body220
%index223 = phi i64 [ %index.next243, %vector.body220 ], [ 0, %vector.body220.preheader ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %index223, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %index223, i32 0
%45 = bitcast i64* %43 to <2 x i64>*
%wide.load248 = load <2 x i64>* %45, align 8, !noalias !1361
%46 = getelementptr i64* %43, i64 2
%47 = bitcast i64* %46 to <2 x i64>*
%wide.load249 = load <2 x i64>* %47, align 8, !noalias !1361
%48 = bitcast i64* %44 to <2 x i64>*
store <2 x i64> %wide.load248, <2 x i64>* %48, align 8, !noalias !1361
%49 = getelementptr i64* %44, i64 2
%50 = bitcast i64* %49 to <2 x i64>*
store <2 x i64> %wide.load249, <2 x i64>* %50, align 8, !noalias !1361
%index.next243 = add i64 %index223, 4
%51 = icmp eq i64 %index.next243, %n.vec226
br i1 %51, label %middle.block221.loopexit, label %vector.body220, !llvm.loop !1362
middle.block221.loopexit: ; preds = %vector.body220
br label %middle.block221
middle.block221: ; preds = %middle.block221.loopexit, %vector.memcheck237, %while_body.lr.ph.i.i
%resume.val238 = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck237 ], [ %n.vec226, %middle.block221.loopexit ]
%cmp.n242 = icmp eq i64 %end.idx224, %resume.val238
br i1 %cmp.n242, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block221
%52 = trunc i64 %resume.val238 to i32
%53 = sub i32 %sret_slot.0.i.i25.i, %52
%54 = add i32 %sret_slot.0.i.i25.i, -1
%55 = sub i32 %54, %52
%xtraiter = and i32 %53, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val238, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%56 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %indvars.iv.i.i.prol, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %indvars.iv.i.i.prol, i32 0
%58 = load i64* %56, align 8, !noalias !1361
store i64 %58, i64* %57, align 8, !noalias !1361
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %37
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !1363
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val238, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%59 = icmp ult i32 %55, 3
br i1 %59, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%60 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %indvars.iv.i.i, i32 0
%61 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %indvars.iv.i.i, i32 0
%62 = load i64* %60, align 8, !noalias !1361
store i64 %62, i64* %61, align 8, !noalias !1361
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%63 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %indvars.iv.next.i.i, i32 0
%64 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %indvars.iv.next.i.i, i32 0
%65 = load i64* %63, align 8, !noalias !1361
store i64 %65, i64* %64, align 8, !noalias !1361
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%66 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %indvars.iv.next.i.i.1, i32 0
%67 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %indvars.iv.next.i.i.1, i32 0
%68 = load i64* %66, align 8, !noalias !1361
store i64 %68, i64* %67, align 8, !noalias !1361
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%69 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 %indvars.iv.next.i.i.2, i32 0
%70 = getelementptr inbounds %"ll::limb::Limb"* %35, i64 %indvars.iv.next.i.i.2, i32 0
%71 = load i64* %69, align 8, !noalias !1361
store i64 %71, i64* %70, align 8, !noalias !1361
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %37
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !1364
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit, %middle.block221, %normal-return3.i, %next-block.i144
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i144 ], [ %sret_slot.0.i.i25.i, %middle.block221 ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %31, %normal-return3.i ], [ 1, %next-block.i144 ], [ %31, %middle.block221 ], [ %31, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit173.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !1360, !noalias !1365
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %9, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !1360, !noalias !1365
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !1360, !noalias !1365
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !1360, !noalias !1365
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %24, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !1365
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%72 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%73 = load %"ll::limb::Limb"** %72, align 8, !alias.scope !1366
%74 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 0, i32 0
%75 = load i64* %74, align 8
call void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %ret, %"int::Int"* noalias nocapture dereferenceable(24) %3, i64 %75)
call void @llvm.lifetime.end(i64 24, i8* %24)
%76 = getelementptr inbounds %"int::Int"* %ret, i64 0, i32 1
%77 = load i32* %76, align 8, !alias.scope !1369
%78 = icmp slt i32 %77, 0
%79 = sub i32 0, %77
%sret_slot.0.i.i169 = select i1 %78, i32 %79, i32 %77
%80 = mul i32 %sret_slot.0.i.i169, %19
store i32 %80, i32* %76, align 8
%81 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %81, i8* %23, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %23)
br label %clean_custom_
clean_custom_1: ; preds = %then-block-15297-.i.i127, %cond.i126
call void @llvm.lifetime.end(i64 7, i8* %out.sroa.25.0..sroa_idx195)
resume { i8*, i32 } %148
next-block4: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit136
%82 = icmp slt i32 %9, 0
%83 = sub i32 0, %9
%sret_slot.0.i.i170 = select i1 %82, i32 %83, i32 %9
%84 = icmp eq i32 %sret_slot.0.i.i170, 1
br i1 %84, label %next-block.i149, label %next-block9
next-block.i149: ; preds = %next-block4
%85 = bitcast %"int::Int"* %ret5 to i8*
call void @llvm.lifetime.start(i64 24, i8* %85)
%86 = bitcast %"int::Int"* %4 to i8*
call void @llvm.lifetime.start(i64 24, i8* %86)
%new.sroa.16.0..sroa_idx36.i147 = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i147)
%87 = icmp eq i32 %sret_slot.0.i.i142, 0
br i1 %87, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141, label %normal-return3.i150
normal-return3.i150: ; preds = %next-block.i149
%88 = zext i32 %sret_slot.0.i.i142 to i64
%89 = shl nuw nsw i64 %88, 3
%90 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %89), !noalias !1372
%91 = ptrtoint i8* %90 to i64
%92 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%93 = load %"ll::limb::Limb"** %92, align 8, !alias.scope !1378, !noalias !1381
%94 = bitcast %"ll::limb::Limb"* %93 to i8*
%95 = bitcast i8* %90 to %"ll::limb::Limb"*
%96 = icmp sgt i32 %sret_slot.0.i.i142, 0
br i1 %96, label %while_body.lr.ph.i.i151, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141
while_body.lr.ph.i.i151: ; preds = %normal-return3.i150
%97 = add i32 %sret_slot.0.i.i142, -1
%98 = zext i32 %97 to i64
%99 = add nuw nsw i64 %98, 1
%end.idx = add nuw nsw i64 %98, 1
%n.vec = and i64 %99, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%100 = add i32 %sret_slot.0.i.i142, -1
%101 = zext i32 %100 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i151
%scevgep207 = getelementptr %"ll::limb::Limb"* %93, i64 %101
%scevgep207208 = bitcast %"ll::limb::Limb"* %scevgep207 to i8*
%bound0 = icmp ule i8* %90, %scevgep207208
%102 = shl nuw nsw i64 %101, 3
%scevgep = getelementptr i8* %90, i64 %102
%bound1 = icmp ule i8* %94, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%103 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %index, i32 0
%104 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %index, i32 0
%105 = bitcast i64* %103 to <2 x i64>*
%wide.load = load <2 x i64>* %105, align 8, !noalias !1382
%106 = getelementptr i64* %103, i64 2
%107 = bitcast i64* %106 to <2 x i64>*
%wide.load210 = load <2 x i64>* %107, align 8, !noalias !1382
%108 = bitcast i64* %104 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %108, align 8, !noalias !1382
%109 = getelementptr i64* %104, i64 2
%110 = bitcast i64* %109 to <2 x i64>*
store <2 x i64> %wide.load210, <2 x i64>* %110, align 8, !noalias !1382
%index.next = add i64 %index, 4
%111 = icmp eq i64 %index.next, %n.vec
br i1 %111, label %middle.block.loopexit, label %vector.body, !llvm.loop !1383
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i151
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i151 ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141, label %while_body.i.i156.preheader
while_body.i.i156.preheader: ; preds = %middle.block
%112 = trunc i64 %resume.val to i32
%113 = sub i32 %sret_slot.0.i.i142, %112
%114 = add i32 %sret_slot.0.i.i142, -1
%115 = sub i32 %114, %112
%xtraiter256 = and i32 %113, 3
%lcmp.mod257 = icmp ne i32 %xtraiter256, 0
br i1 %lcmp.mod257, label %while_body.i.i156.prol, label %while_body.i.i156.preheader.split
while_body.i.i156.prol: ; preds = %while_body.i.i156.prol, %while_body.i.i156.preheader
%indvars.iv.i.i152.prol = phi i64 [ %indvars.iv.next.i.i153.prol, %while_body.i.i156.prol ], [ %resume.val, %while_body.i.i156.preheader ]
%prol.iter258 = phi i32 [ %xtraiter256, %while_body.i.i156.preheader ], [ %prol.iter258.sub, %while_body.i.i156.prol ]
%116 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %indvars.iv.i.i152.prol, i32 0
%117 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %indvars.iv.i.i152.prol, i32 0
%118 = load i64* %116, align 8, !noalias !1382
store i64 %118, i64* %117, align 8, !noalias !1382
%indvars.iv.next.i.i153.prol = add nuw nsw i64 %indvars.iv.i.i152.prol, 1
%lftr.wideiv205.prol = trunc i64 %indvars.iv.i.i152.prol to i32
%exitcond206.prol = icmp eq i32 %lftr.wideiv205.prol, %97
%prol.iter258.sub = sub i32 %prol.iter258, 1
%prol.iter258.cmp = icmp ne i32 %prol.iter258.sub, 0
br i1 %prol.iter258.cmp, label %while_body.i.i156.prol, label %while_body.i.i156.preheader.split, !llvm.loop !1384
while_body.i.i156.preheader.split: ; preds = %while_body.i.i156.prol, %while_body.i.i156.preheader
%indvars.iv.i.i152.unr = phi i64 [ %resume.val, %while_body.i.i156.preheader ], [ %indvars.iv.next.i.i153.prol, %while_body.i.i156.prol ]
%119 = icmp ult i32 %115, 3
br i1 %119, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit, label %while_body.i.i156.preheader.split.split
while_body.i.i156.preheader.split.split: ; preds = %while_body.i.i156.preheader.split
br label %while_body.i.i156
while_body.i.i156: ; preds = %while_body.i.i156, %while_body.i.i156.preheader.split.split
%indvars.iv.i.i152 = phi i64 [ %indvars.iv.i.i152.unr, %while_body.i.i156.preheader.split.split ], [ %indvars.iv.next.i.i153.3, %while_body.i.i156 ]
%120 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %indvars.iv.i.i152, i32 0
%121 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %indvars.iv.i.i152, i32 0
%122 = load i64* %120, align 8, !noalias !1382
store i64 %122, i64* %121, align 8, !noalias !1382
%indvars.iv.next.i.i153 = add nuw nsw i64 %indvars.iv.i.i152, 1
%lftr.wideiv205 = trunc i64 %indvars.iv.i.i152 to i32
%123 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %indvars.iv.next.i.i153, i32 0
%124 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %indvars.iv.next.i.i153, i32 0
%125 = load i64* %123, align 8, !noalias !1382
store i64 %125, i64* %124, align 8, !noalias !1382
%indvars.iv.next.i.i153.1 = add nuw nsw i64 %indvars.iv.next.i.i153, 1
%lftr.wideiv205.1 = trunc i64 %indvars.iv.next.i.i153 to i32
%126 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %indvars.iv.next.i.i153.1, i32 0
%127 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %indvars.iv.next.i.i153.1, i32 0
%128 = load i64* %126, align 8, !noalias !1382
store i64 %128, i64* %127, align 8, !noalias !1382
%indvars.iv.next.i.i153.2 = add nuw nsw i64 %indvars.iv.next.i.i153.1, 1
%lftr.wideiv205.2 = trunc i64 %indvars.iv.next.i.i153.1 to i32
%129 = getelementptr inbounds %"ll::limb::Limb"* %93, i64 %indvars.iv.next.i.i153.2, i32 0
%130 = getelementptr inbounds %"ll::limb::Limb"* %95, i64 %indvars.iv.next.i.i153.2, i32 0
%131 = load i64* %129, align 8, !noalias !1382
store i64 %131, i64* %130, align 8, !noalias !1382
%indvars.iv.next.i.i153.3 = add nuw nsw i64 %indvars.iv.next.i.i153.2, 1
%lftr.wideiv205.3 = trunc i64 %indvars.iv.next.i.i153.2 to i32
%exitcond206.3 = icmp eq i32 %lftr.wideiv205.3, %97
br i1 %exitcond206.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit.unr-lcssa, label %while_body.i.i156, !llvm.loop !1385
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit.unr-lcssa: ; preds = %while_body.i.i156
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit: ; preds = %while_body.i.i156.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit, %middle.block, %normal-return3.i150, %next-block.i149
%.sink.i41.i159 = phi i32 [ %sret_slot.0.i.i142, %normal-return3.i150 ], [ 0, %next-block.i149 ], [ %sret_slot.0.i.i142, %middle.block ], [ %sret_slot.0.i.i142, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit ]
%new.sroa.0.0.3940.i160 = phi i64 [ %91, %normal-return3.i150 ], [ 1, %next-block.i149 ], [ %91, %middle.block ], [ %91, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit141.loopexit ]
%new.sroa.0.0..sroa_cast27.i161 = bitcast %"int::Int"* %4 to i64*
store i64 %new.sroa.0.0.3940.i160, i64* %new.sroa.0.0..sroa_cast27.i161, align 8, !alias.scope !1381, !noalias !1386
%new.sroa.8.0..sroa_idx29.i162 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 1
store i32 %6, i32* %new.sroa.8.0..sroa_idx29.i162, align 8, !alias.scope !1381, !noalias !1386
%new.sroa.11.0..sroa_idx31.i163 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 2
store i32 %.sink.i41.i159, i32* %new.sroa.11.0..sroa_idx31.i163, align 4, !alias.scope !1381, !noalias !1386
%new.sroa.14.0..sroa_idx.i164 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i164, align 8, !alias.scope !1381, !noalias !1386
%new.sroa.16.0..sroa_raw_idx.i166 = getelementptr inbounds i8* %86, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i166, i8* %new.sroa.16.0..sroa_idx36.i147, i64 7, i32 1, i1 false), !noalias !1386
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i147)
%132 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%133 = load %"ll::limb::Limb"** %132, align 8, !alias.scope !1387
%134 = getelementptr inbounds %"ll::limb::Limb"* %133, i64 0, i32 0
%135 = load i64* %134, align 8
call void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %ret5, %"int::Int"* noalias nocapture dereferenceable(24) %4, i64 %135)
call void @llvm.lifetime.end(i64 24, i8* %86)
%136 = getelementptr inbounds %"int::Int"* %ret5, i64 0, i32 1
%137 = load i32* %136, align 8, !alias.scope !1390
%138 = icmp slt i32 %137, 0
%139 = sub i32 0, %137
%sret_slot.0.i.i143 = select i1 %138, i32 %139, i32 %137
%140 = mul i32 %sret_slot.0.i.i143, %19
store i32 %140, i32* %136, align 8
%141 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %141, i8* %85, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %85)
br label %clean_custom_
next-block9: ; preds = %next-block4
%142 = add i32 %sret_slot.0.i.i170, %sret_slot.0.i.i142
%out.sroa.25.0..sroa_idx195 = getelementptr inbounds [7 x i8]* %out.sroa.25, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %out.sroa.25.0..sroa_idx195)
%143 = icmp eq i32 %142, 0
br i1 %143, label %normal-return12, label %next-block.i
next-block.i: ; preds = %next-block9
%144 = zext i32 %142 to i64
%145 = shl nuw nsw i64 %144, 3
%146 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %145), !noalias !1393
%147 = ptrtoint i8* %146 to i64
br label %normal-return12
cond.i126: ; preds = %normal-return12
%148 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%149 = icmp eq i32 %.sink.i, 0
br i1 %149, label %clean_custom_1, label %then-block-15297-.i.i127
then-block-15297-.i.i127: ; preds = %cond.i126
%150 = inttoptr i64 %out.sroa.0.0.199 to i8*
%151 = zext i32 %.sink.i to i64
%152 = shl nuw nsw i64 %151, 3
tail call void @je_sdallocx(i8* %150, i64 %152, i32 0)
br label %clean_custom_1
normal-return12: ; preds = %next-block9, %next-block.i
%out.sroa.0.0.199 = phi i64 [ %147, %next-block.i ], [ 1, %next-block9 ]
%.sink.i = phi i32 [ %142, %next-block.i ], [ 0, %next-block9 ]
%153 = mul i32 %142, %19
%154 = icmp slt i32 %sret_slot.0.i.i142, %sret_slot.0.i.i170
%. = select i1 %154, %"int::Int"* %2, %"int::Int"* %1
%sret_slot.0.i.i132.sret_slot.0.i.i133 = select i1 %154, i32 %sret_slot.0.i.i170, i32 %sret_slot.0.i.i142
%.204 = select i1 %154, %"int::Int"* %1, %"int::Int"* %2
%sret_slot.0.i.i133.sret_slot.0.i.i132 = select i1 %154, i32 %sret_slot.0.i.i142, i32 %sret_slot.0.i.i170
%.sroa.839.0.in = getelementptr inbounds %"int::Int"* %.204, i64 0, i32 0, i32 0, i32 0
%.sroa.0.0.in = getelementptr inbounds %"int::Int"* %., i64 0, i32 0, i32 0, i32 0
%.sroa.839.0 = load %"ll::limb::Limb"** %.sroa.839.0.in, align 8
%.sroa.0.0 = load %"ll::limb::Limb"** %.sroa.0.0.in, align 8
%155 = inttoptr i64 %out.sroa.0.0.199 to %"ll::limb::Limb"*
invoke void @_ZN2ll3mul3mul20hc387f8a5db1f9a7ciBaE(%"ll::limb::Limb"* %155, %"ll::limb::Limb"* %.sroa.0.0, i32 %sret_slot.0.i.i132.sret_slot.0.i.i133, %"ll::limb::Limb"* %.sroa.839.0, i32 %sret_slot.0.i.i133.sret_slot.0.i.i132)
to label %normal-return23 unwind label %cond.i126
normal-return23: ; preds = %normal-return12
%156 = icmp eq i32 %153, 0
br i1 %156, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %join.lr.ph.i
join.lr.ph.i: ; preds = %normal-return23
%157 = ashr i32 %153, 31
%158 = or i32 %157, 1
br label %join.i
while_body.i: ; preds = %join.i
%159 = sub i32 %out.sroa.11.0.copyload200, %158
%160 = icmp eq i32 %out.sroa.11.0.copyload200, %158
br i1 %160, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%out.sroa.11.0.copyload200 = phi i32 [ %153, %join.lr.ph.i ], [ %159, %while_body.i ]
%161 = icmp slt i32 %out.sroa.11.0.copyload200, 0
%162 = sub i32 0, %out.sroa.11.0.copyload200
%sret_slot.0.i.i.i = select i1 %161, i32 %162, i32 %out.sroa.11.0.copyload200
%163 = add i32 %sret_slot.0.i.i.i, -1
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds %"ll::limb::Limb"* %155, i64 %164, i32 0
%166 = load i64* %165, align 8, !alias.scope !1396, !noalias !1399
%167 = icmp eq i64 %166, 0
br i1 %167, label %while_body.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit: ; preds = %join.i, %while_body.i
%out.sroa.11.0.copyload201.ph = phi i32 [ %out.sroa.11.0.copyload200, %join.i ], [ %159, %while_body.i ]
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, %normal-return23
%out.sroa.11.0.copyload201 = phi i32 [ 0, %normal-return23 ], [ %out.sroa.11.0.copyload201.ph, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit ]
%out.sroa.0.0..sroa_cast = bitcast %"int::Int"* %0 to i64*
store i64 %out.sroa.0.0.199, i64* %out.sroa.0.0..sroa_cast, align 8
%out.sroa.11.0..sroa_idx180 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %out.sroa.11.0.copyload201, i32* %out.sroa.11.0..sroa_idx180, align 8
%out.sroa.17.0..sroa_idx183 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i, i32* %out.sroa.17.0..sroa_idx183, align 4
%out.sroa.22.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %out.sroa.22.0..sroa_idx, align 8
%out.sroa.25.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%out.sroa.25.0..sroa_raw_idx = getelementptr inbounds i8* %out.sroa.25.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out.sroa.25.0..sroa_raw_idx, i8* %out.sroa.25.0..sroa_idx195, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %out.sroa.25.0..sroa_idx195)
br label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE(%"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #6 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%3 = load i32* %2, align 4
%4 = icmp ult i32 %3, %1
br i1 %4, label %then-block-14806-, label %next-block
then-block-14806-: ; preds = %entry-block
%5 = icmp eq i32 %3, 0
br i1 %5, label %else-block, label %then-block-14817-
then-block-14817-: ; preds = %then-block-14806-
%6 = bitcast %"int::Int"* %0 to i8**
%7 = load i8** %6, align 8, !alias.scope !1403
%8 = zext i32 %3 to i64
%9 = shl nuw nsw i64 %8, 3
%10 = zext i32 %1 to i64
%11 = shl nuw nsw i64 %10, 3
%12 = tail call fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %7, i64 %9, i64 %11)
br label %while_exit
else-block: ; preds = %then-block-14806-
%13 = zext i32 %1 to i64
%14 = shl nuw nsw i64 %13, 3
%15 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %14)
br label %while_exit
while_exit: ; preds = %else-block, %then-block-14817-
%.sink = phi i8* [ %12, %then-block-14817- ], [ %15, %else-block ]
%16 = zext i32 %3 to i64
%17 = add i32 %1, -1
%18 = shl nuw nsw i64 %16, 3
%scevgep = getelementptr i8* %.sink, i64 %18
%19 = sub i32 %17, %3
%20 = zext i32 %19 to i64
%21 = shl nuw nsw i64 %20, 3
%22 = add nuw nsw i64 %21, 8
call void @llvm.memset.p0i8.i64(i8* %scevgep, i8 0, i64 %22, i32 8, i1 false)
%23 = ptrtoint i8* %.sink to i64
%24 = bitcast %"int::Int"* %0 to i64*
store i64 %23, i64* %24, align 8
store i32 %1, i32* %2, align 4
br label %next-block
next-block: ; preds = %entry-block, %while_exit
ret void
}
; Function Attrs: uwtable
define void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !1406
%4 = icmp slt i32 %3, 0
%5 = sub i32 0, %3
%sret_slot.0.i.i = select i1 %4, i32 %5, i32 %3
%6 = add i32 %sret_slot.0.i.i, 1
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%8 = load i32* %7, align 4, !alias.scope !1409
%9 = icmp ult i32 %8, %6
br i1 %9, label %then-block-14806-.i, label %entry-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge
entry-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge: ; preds = %entry-block
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%.pre = load %"ll::limb::Limb"** %.phi.trans.insert, align 8
br label %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
then-block-14806-.i: ; preds = %entry-block
%10 = icmp eq i32 %8, 0
br i1 %10, label %else-block.i21, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%11 = bitcast %"int::Int"* %0 to i8**
%12 = load i8** %11, align 8, !alias.scope !1412
%13 = zext i32 %8 to i64
%14 = shl nuw nsw i64 %13, 3
%15 = zext i32 %6 to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %12, i64 %14, i64 %16), !noalias !1409
br label %while_exit.i
else-block.i21: ; preds = %then-block-14806-.i
%18 = zext i32 %6 to i64
%19 = shl nuw nsw i64 %18, 3
%20 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %19), !noalias !1409
br label %while_exit.i
while_exit.i: ; preds = %else-block.i21, %then-block-14817-.i
%.pre-phi24 = phi i64 [ 0, %else-block.i21 ], [ %14, %then-block-14817-.i ]
%.sink.i = phi i8* [ %20, %else-block.i21 ], [ %17, %then-block-14817-.i ]
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi24
%21 = sub i32 %sret_slot.0.i.i, %8
%22 = zext i32 %21 to i64
%23 = shl nuw nsw i64 %22, 3
%24 = add nuw nsw i64 %23, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %24, i32 8, i1 false), !noalias !1409
%25 = ptrtoint i8* %.sink.i to i64
%26 = bitcast %"int::Int"* %0 to i64*
store i64 %25, i64* %26, align 8, !alias.scope !1409
store i32 %6, i32* %7, align 4, !alias.scope !1409
%27 = bitcast i8* %.sink.i to %"ll::limb::Limb"*
br label %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit: ; preds = %entry-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge, %while_exit.i
%28 = phi %"ll::limb::Limb"* [ %.pre, %entry-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge ], [ %27, %while_exit.i ]
%29 = sext i32 %sret_slot.0.i.i to i64
%limb.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %29, i32 0
store i64 %1, i64* %limb.sroa.0.0..sroa_idx, align 8
%30 = load i32* %2, align 4
%31 = icmp eq i32 %30, 0
br i1 %31, label %join, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
_ZN3int3Int4sign20he27417198f6be603VJdE.exit: ; preds = %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
%32 = ashr i32 %30, 31
%33 = or i32 %32, 1
%34 = add i32 %33, %30
br label %join
join: ; preds = %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%storemerge = phi i32 [ %34, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit ], [ 1, %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit ]
store i32 %storemerge, i32* %2, align 4
ret void
}
; Function Attrs: nounwind readonly uwtable
define zeroext i1 @_ZN3int3Int11well_formed20h326255601c2501f5M4dE(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %next-block
clean_custom_: ; preds = %next-block, %entry-block, %next-block1
%sret_slot.0 = phi i1 [ %15, %next-block1 ], [ true, %entry-block ], [ false, %next-block ]
ret i1 %sret_slot.0
next-block: ; preds = %entry-block
%4 = icmp slt i32 %2, 0
%5 = sub i32 0, %2
%sret_slot.0.i.i = select i1 %4, i32 %5, i32 %2
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%7 = load i32* %6, align 4
%8 = icmp ugt i32 %sret_slot.0.i.i, %7
br i1 %8, label %clean_custom_, label %next-block1
next-block1: ; preds = %next-block
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8
%11 = add i32 %sret_slot.0.i.i, -1
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 %12, i32 0
%14 = load i64* %13, align 8
%15 = icmp ne i64 %14, 0
br label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16 = alloca [7 x i8], align 1
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !1415
%4 = icmp eq i32 %3, 0
br i1 %4, label %then-block-15139-, label %next-block
then-block-15139-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !1418
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !1418
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !1418
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !1418
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %then-block-15139-
ret void
next-block: ; preds = %entry-block
%new.sroa.16.0..sroa_idx36 = getelementptr inbounds [7 x i8]* %new.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36)
%9 = icmp slt i32 %3, 0
%10 = sub i32 0, %3
%sret_slot.0.i.i25 = select i1 %9, i32 %10, i32 %3
%11 = icmp eq i32 %sret_slot.0.i.i25, 0
br i1 %11, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %normal-return3
normal-return3: ; preds = %next-block
%12 = zext i32 %sret_slot.0.i.i25 to i64
%13 = shl nuw nsw i64 %12, 3
%14 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %13), !noalias !1423
%15 = ptrtoint i8* %14 to i64
%16 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%17 = load %"ll::limb::Limb"** %16, align 8, !alias.scope !1426
%18 = bitcast %"ll::limb::Limb"* %17 to i8*
%19 = bitcast i8* %14 to %"ll::limb::Limb"*
%20 = icmp sgt i32 %sret_slot.0.i.i25, 0
br i1 %20, label %while_body.lr.ph.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
while_body.lr.ph.i: ; preds = %normal-return3
%21 = add i32 %sret_slot.0.i.i25, -1
%22 = zext i32 %21 to i64
%23 = add nuw nsw i64 %22, 1
%end.idx = add nuw nsw i64 %22, 1
%n.vec = and i64 %23, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%24 = add i32 %sret_slot.0.i.i25, -1
%25 = zext i32 %24 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i
%scevgep42 = getelementptr %"ll::limb::Limb"* %17, i64 %25
%scevgep4243 = bitcast %"ll::limb::Limb"* %scevgep42 to i8*
%bound0 = icmp ule i8* %14, %scevgep4243
%26 = shl nuw nsw i64 %25, 3
%scevgep = getelementptr i8* %14, i64 %26
%bound1 = icmp ule i8* %18, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%27 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %index, i32 0
%28 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %index, i32 0
%29 = bitcast i64* %27 to <2 x i64>*
%wide.load = load <2 x i64>* %29, align 8
%30 = getelementptr i64* %27, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
%wide.load45 = load <2 x i64>* %31, align 8
%32 = bitcast i64* %28 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %32, align 8
%33 = getelementptr i64* %28, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
store <2 x i64> %wide.load45, <2 x i64>* %34, align 8
%index.next = add i64 %index, 4
%35 = icmp eq i64 %index.next, %n.vec
br i1 %35, label %middle.block.loopexit, label %vector.body, !llvm.loop !1429
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, label %while_body.i.preheader
while_body.i.preheader: ; preds = %middle.block
%36 = trunc i64 %resume.val to i32
%37 = sub i32 %sret_slot.0.i.i25, %36
%38 = add i32 %sret_slot.0.i.i25, -1
%39 = sub i32 %38, %36
%xtraiter = and i32 %37, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i.prol ], [ %resume.val, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%40 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.i.prol, i32 0
%41 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.i.prol, i32 0
%42 = load i64* %40, align 8
store i64 %42, i64* %41, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %21
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !1430
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val, %while_body.i.preheader ], [ %indvars.iv.next.i.prol, %while_body.i.prol ]
%43 = icmp ult i32 %39, 3
br i1 %43, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i ]
%44 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.i, i32 0
%46 = load i64* %44, align 8
store i64 %46, i64* %45, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i, i32 0
%49 = load i64* %47, align 8
store i64 %49, i64* %48, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i.1, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i.1, i32 0
%52 = load i64* %50, align 8
store i64 %52, i64* %51, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i.2, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i.2, i32 0
%55 = load i64* %53, align 8
store i64 %55, i64* %54, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %21
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit.unr-lcssa, label %while_body.i, !llvm.loop !1431
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.loopexit, %middle.block
%.pre = load i32* %2, align 4
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %next-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit, %normal-return3
%.sink.i41 = phi i32 [ %sret_slot.0.i.i25, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit ], [ %sret_slot.0.i.i25, %normal-return3 ], [ 0, %next-block ]
%new.sroa.0.0.3940 = phi i64 [ %15, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit ], [ %15, %normal-return3 ], [ 1, %next-block ]
%56 = phi i32 [ %.pre, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit ], [ %3, %normal-return3 ], [ %3, %next-block ]
%new.sroa.0.0..sroa_cast27 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940, i64* %new.sroa.0.0..sroa_cast27, align 8
%new.sroa.8.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %56, i32* %new.sroa.8.0..sroa_idx29, align 8
%new.sroa.11.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41, i32* %new.sroa.11.0..sroa_idx31, align 4
%new.sroa.14.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx, align 8
%new.sroa.16.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%new.sroa.16.0..sroa_raw_idx = getelementptr inbounds i8* %new.sroa.16.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx, i8* %new.sroa.16.0..sroa_idx36, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36)
br label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !1432
%4 = icmp eq i32 %3, 0
br i1 %4, label %then-block-15248-, label %next-block
then-block-15248-: ; preds = %entry-block
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %5, align 4
br label %clean_custom_
clean_custom_: ; preds = %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit, %then-block-15248-
ret void
next-block: ; preds = %entry-block
%6 = icmp slt i32 %3, 0
%7 = sub i32 0, %3
%sret_slot.0.i.i22 = select i1 %6, i32 %7, i32 %3
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%9 = load i32* %8, align 4, !alias.scope !1435
%10 = icmp ult i32 %9, %sret_slot.0.i.i22
br i1 %10, label %then-block-14806-.i, label %next-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge
next-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge: ; preds = %next-block
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%.pre = load %"ll::limb::Limb"** %.phi.trans.insert, align 8, !alias.scope !1438
br label %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
then-block-14806-.i: ; preds = %next-block
%11 = icmp eq i32 %9, 0
br i1 %11, label %else-block.i21, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%12 = bitcast %"int::Int"* %0 to i8**
%13 = load i8** %12, align 8, !alias.scope !1441
%14 = zext i32 %9 to i64
%15 = shl nuw nsw i64 %14, 3
%16 = zext i32 %sret_slot.0.i.i22 to i64
%17 = shl nuw nsw i64 %16, 3
%18 = tail call fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %13, i64 %15, i64 %17), !noalias !1435
br label %while_exit.i
else-block.i21: ; preds = %then-block-14806-.i
%19 = zext i32 %sret_slot.0.i.i22 to i64
%20 = shl nuw nsw i64 %19, 3
%21 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %20), !noalias !1435
br label %while_exit.i
while_exit.i: ; preds = %else-block.i21, %then-block-14817-.i
%.pre-phi26 = phi i64 [ 0, %else-block.i21 ], [ %15, %then-block-14817-.i ]
%.sink.i = phi i8* [ %21, %else-block.i21 ], [ %18, %then-block-14817-.i ]
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi26
%22 = xor i32 %9, -1
%23 = add i32 %sret_slot.0.i.i22, %22
%24 = zext i32 %23 to i64
%25 = shl nuw nsw i64 %24, 3
%26 = add nuw nsw i64 %25, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %26, i32 8, i1 false), !noalias !1435
%27 = ptrtoint i8* %.sink.i to i64
%28 = bitcast %"int::Int"* %0 to i64*
store i64 %27, i64* %28, align 8, !alias.scope !1435
store i32 %sret_slot.0.i.i22, i32* %8, align 4, !alias.scope !1435
%29 = bitcast i8* %.sink.i to %"ll::limb::Limb"*
br label %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit: ; preds = %next-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge, %while_exit.i
%30 = phi %"ll::limb::Limb"* [ %.pre, %next-block._ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit_crit_edge ], [ %29, %while_exit.i ]
%31 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%32 = load %"ll::limb::Limb"** %31, align 8, !alias.scope !1444
%33 = icmp sgt i32 %sret_slot.0.i.i22, 0
br i1 %33, label %while_body.lr.ph.i, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit
while_body.lr.ph.i: ; preds = %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
%34 = add i32 %sret_slot.0.i.i22, -1
%35 = zext i32 %34 to i64
%36 = add nuw nsw i64 %35, 1
%end.idx = add nuw nsw i64 %35, 1
%n.vec = and i64 %36, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%37 = add i32 %sret_slot.0.i.i22, -1
%38 = zext i32 %37 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i
%scevgep30 = getelementptr %"ll::limb::Limb"* %32, i64 %38
%bound0 = icmp ule %"ll::limb::Limb"* %30, %scevgep30
%scevgep = getelementptr %"ll::limb::Limb"* %30, i64 %38
%bound1 = icmp ule %"ll::limb::Limb"* %32, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%39 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %index, i32 0
%40 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %index, i32 0
%41 = bitcast i64* %39 to <2 x i64>*
%wide.load = load <2 x i64>* %41, align 8
%42 = getelementptr i64* %39, i64 2
%43 = bitcast i64* %42 to <2 x i64>*
%wide.load33 = load <2 x i64>* %43, align 8
%44 = bitcast i64* %40 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %44, align 8
%45 = getelementptr i64* %40, i64 2
%46 = bitcast i64* %45 to <2 x i64>*
store <2 x i64> %wide.load33, <2 x i64>* %46, align 8
%index.next = add i64 %index, 4
%47 = icmp eq i64 %index.next, %n.vec
br i1 %47, label %middle.block.loopexit, label %vector.body, !llvm.loop !1447
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit, label %while_body.i.preheader
while_body.i.preheader: ; preds = %middle.block
%48 = trunc i64 %resume.val to i32
%49 = sub i32 %sret_slot.0.i.i22, %48
%50 = add i32 %sret_slot.0.i.i22, -1
%51 = sub i32 %50, %48
%xtraiter = and i32 %49, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.i.preheader.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i.prol ], [ %resume.val, %while_body.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.preheader ], [ %prol.iter.sub, %while_body.i.prol ]
%52 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %indvars.iv.i.prol, i32 0
%53 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %indvars.iv.i.prol, i32 0
%54 = load i64* %52, align 8
store i64 %54, i64* %53, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %34
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.i.preheader.split, !llvm.loop !1448
while_body.i.preheader.split: ; preds = %while_body.i.prol, %while_body.i.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val, %while_body.i.preheader ], [ %indvars.iv.next.i.prol, %while_body.i.prol ]
%55 = icmp ult i32 %51, 3
br i1 %55, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit, label %while_body.i.preheader.split.split
while_body.i.preheader.split.split: ; preds = %while_body.i.preheader.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.i.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i ]
%56 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %indvars.iv.i, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %indvars.iv.i, i32 0
%58 = load i64* %56, align 8
store i64 %58, i64* %57, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%59 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %indvars.iv.next.i, i32 0
%60 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %indvars.iv.next.i, i32 0
%61 = load i64* %59, align 8
store i64 %61, i64* %60, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%62 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %indvars.iv.next.i.1, i32 0
%63 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %indvars.iv.next.i.1, i32 0
%64 = load i64* %62, align 8
store i64 %64, i64* %63, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%65 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 %indvars.iv.next.i.2, i32 0
%66 = getelementptr inbounds %"ll::limb::Limb"* %30, i64 %indvars.iv.next.i.2, i32 0
%67 = load i64* %65, align 8
store i64 %67, i64* %66, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %34
br i1 %exitcond.3, label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit.unr-lcssa, label %while_body.i, !llvm.loop !1449
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit.unr-lcssa: ; preds = %while_body.i
br label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit: ; preds = %while_body.i.preheader.split, %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit.unr-lcssa
br label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit: ; preds = %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit.loopexit, %middle.block
%.pre23 = load i32* %2, align 4
br label %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit
_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit: ; preds = %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit, %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit
%68 = phi i32 [ %.pre23, %_ZN2ll9copy_incr20hfda8bf42a8564a77YrdE.exit.loopexit ], [ %3, %_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE.exit ]
%69 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %68, i32* %69, align 4
br label %clean_custom_
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int24Int.PartialEq$LT$Int$GT$2eq20hffa9d721b80aadd1E9dE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %2, align 4
%5 = load i32* %3, align 4
%6 = icmp eq i32 %4, %5
br i1 %6, label %then-block-15419-, label %join
then-block-15419-: ; preds = %entry-block
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%8 = load %"ll::limb::Limb"** %7, align 8, !alias.scope !1450
%9 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !1453
%11 = icmp slt i32 %4, 0
%12 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %11, i32 %12, i32 %4
br label %while_cond.i
while_cond.i: ; preds = %while_body.i, %then-block-15419-
%i.0.in.i = phi i32 [ %sret_slot.0.i.i, %then-block-15419- ], [ %i.0.i, %while_body.i ]
%i.0.i = add i32 %i.0.in.i, -1
%13 = icmp sgt i32 %i.0.i, -1
br i1 %13, label %while_body.i, label %join.loopexit
while_body.i: ; preds = %while_cond.i
%14 = sext i32 %i.0.i to i64
%15 = getelementptr inbounds %"ll::limb::Limb"* %8, i64 %14, i32 0
%16 = load i64* %15, align 8
%17 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 %14, i32 0
%18 = load i64* %17, align 8
%19 = icmp eq i64 %16, %18
br i1 %19, label %while_cond.i, label %join.loopexit
join.loopexit: ; preds = %while_body.i, %while_cond.i
%sret_slot.0.ph = phi i1 [ false, %while_body.i ], [ true, %while_cond.i ]
br label %join
join: ; preds = %join.loopexit, %entry-block
%sret_slot.0 = phi i1 [ false, %entry-block ], [ %sret_slot.0.ph, %join.loopexit ]
ret i1 %sret_slot.0
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%3 = load i64* %2, align 8, !alias.scope !1456, !noalias !1459
%4 = icmp eq i64 %3, 0
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%6 = load i32* %5, align 4
%7 = icmp eq i32 %6, 0
%or.cond = and i1 %4, %7
br i1 %or.cond, label %clean_custom_, label %next-block
clean_custom_: ; preds = %entry-block, %next-block, %before_rhs2
%sret_slot.0 = phi i1 [ false, %next-block ], [ %13, %before_rhs2 ], [ true, %entry-block ]
ret i1 %sret_slot.0
next-block: ; preds = %entry-block
%8 = icmp eq i32 %6, 1
br i1 %8, label %before_rhs2, label %clean_custom_
before_rhs2: ; preds = %next-block
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !1461
%11 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%12 = load i64* %11, align 8, !alias.scope !1464, !noalias !1467
%13 = icmp eq i64 %12, %3
br label %clean_custom_
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int25Limb.PartialEq$LT$Int$GT$2eq20hd2d9c9755c250dd6XbeE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8, !alias.scope !1469, !noalias !1474
%4 = icmp eq i64 %3, 0
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !1477, !noalias !1478
%7 = icmp eq i32 %6, 0
%or.cond.i = and i1 %4, %7
br i1 %or.cond.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit", label %next-block.i
next-block.i: ; preds = %entry-block
%8 = icmp eq i32 %6, 1
br i1 %8, label %before_rhs2.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
before_rhs2.i: ; preds = %next-block.i
%9 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !1479, !noalias !1478
%11 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%12 = load i64* %11, align 8, !alias.scope !1482, !noalias !1485
%13 = icmp eq i64 %12, %3
br label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit": ; preds = %entry-block, %next-block.i, %before_rhs2.i
%sret_slot.0.i = phi i1 [ false, %next-block.i ], [ %13, %before_rhs2.i ], [ true, %entry-block ]
ret i1 %sret_slot.0.i
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i8 @_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %2, align 4
%5 = load i32* %3, align 4
%6 = icmp slt i32 %4, %5
br i1 %6, label %clean_custom_, label %else-block
else-block: ; preds = %entry-block
%7 = icmp sgt i32 %4, %5
br i1 %7, label %clean_custom_, label %else-block1
else-block1: ; preds = %else-block
%8 = icmp eq i32 %4, 0
br i1 %8, label %clean_custom_, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
clean_custom_.loopexit: ; preds = %while_cond.i39
br label %clean_custom_
clean_custom_.loopexit57: ; preds = %while_cond.i
br label %clean_custom_
clean_custom_: ; preds = %clean_custom_.loopexit57, %clean_custom_.loopexit, %then-block-13036-.i, %then-block-13036-.i42, %entry-block, %else-block, %else-block1
%llretslotptr.0.sroa.speculated = phi i8 [ 0, %else-block1 ], [ -1, %entry-block ], [ 1, %else-block ], [ %..i41, %then-block-13036-.i42 ], [ %..i, %then-block-13036-.i ], [ 0, %clean_custom_.loopexit ], [ 0, %clean_custom_.loopexit57 ]
ret i8 %llretslotptr.0.sroa.speculated
_ZN3int3Int4sign20he27417198f6be603VJdE.exit: ; preds = %else-block1
%9 = ashr i32 %4, 31
%10 = or i32 %9, 1
%11 = icmp eq i32 %10, 1
br i1 %11, label %then-block-15556-, label %else-block2
then-block-15556-: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%13 = load %"ll::limb::Limb"** %12, align 8, !alias.scope !1487
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%15 = load %"ll::limb::Limb"** %14, align 8, !alias.scope !1490
%16 = icmp slt i32 %4, 0
%17 = sub i32 0, %4
%sret_slot.0.i.i45 = select i1 %16, i32 %17, i32 %4
br label %while_cond.i39
while_cond.i39: ; preds = %while_body.i40, %then-block-15556-
%i.0.in.i37 = phi i32 [ %sret_slot.0.i.i45, %then-block-15556- ], [ %i.0.i38, %while_body.i40 ]
%i.0.i38 = add i32 %i.0.in.i37, -1
%18 = icmp sgt i32 %i.0.i38, -1
br i1 %18, label %while_body.i40, label %clean_custom_.loopexit
while_body.i40: ; preds = %while_cond.i39
%19 = sext i32 %i.0.i38 to i64
%20 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %19, i32 0
%21 = load i64* %20, align 8
%22 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %19, i32 0
%23 = load i64* %22, align 8
%24 = icmp eq i64 %21, %23
br i1 %24, label %while_cond.i39, label %then-block-13036-.i42
then-block-13036-.i42: ; preds = %while_body.i40
%.lcssa58 = phi i64 [ %23, %while_body.i40 ]
%.lcssa = phi i64 [ %21, %while_body.i40 ]
%25 = icmp ugt i64 %.lcssa, %.lcssa58
%..i41 = select i1 %25, i8 1, i8 -1
br label %clean_custom_
else-block2: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%26 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%27 = load %"ll::limb::Limb"** %26, align 8, !alias.scope !1493
%28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%29 = load %"ll::limb::Limb"** %28, align 8, !alias.scope !1496
%30 = icmp slt i32 %4, 0
%31 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %30, i32 %31, i32 %4
br label %while_cond.i
while_cond.i: ; preds = %while_body.i, %else-block2
%i.0.in.i = phi i32 [ %sret_slot.0.i.i, %else-block2 ], [ %i.0.i, %while_body.i ]
%i.0.i = add i32 %i.0.in.i, -1
%32 = icmp sgt i32 %i.0.i, -1
br i1 %32, label %while_body.i, label %clean_custom_.loopexit57
while_body.i: ; preds = %while_cond.i
%33 = sext i32 %i.0.i to i64
%34 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %33, i32 0
%35 = load i64* %34, align 8
%36 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %33, i32 0
%37 = load i64* %36, align 8
%38 = icmp eq i64 %35, %37
br i1 %38, label %while_cond.i, label %then-block-13036-.i
then-block-13036-.i: ; preds = %while_body.i
%.lcssa60 = phi i64 [ %37, %while_body.i ]
%.lcssa59 = phi i64 [ %35, %while_body.i ]
%39 = icmp ugt i64 %.lcssa59, %.lcssa60
%..i = select i1 %39, i8 1, i8 -1
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i16 @"_ZN3int25Int.PartialOrd$LT$Int$GT$11partial_cmp20h1728d83c16159ffbvdeE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%2 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %2, align 4, !alias.scope !1499, !noalias !1502
%5 = load i32* %3, align 4, !alias.scope !1502, !noalias !1499
%6 = icmp slt i32 %4, %5
br i1 %6, label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit, label %else-block.i
else-block.i: ; preds = %entry-block
%7 = icmp sgt i32 %4, %5
br i1 %7, label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit, label %else-block1.i
else-block1.i: ; preds = %else-block.i
%8 = icmp eq i32 %4, 0
br i1 %8, label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i: ; preds = %else-block1.i
%9 = ashr i32 %4, 31
%10 = or i32 %9, 1
%11 = icmp eq i32 %10, 1
br i1 %11, label %then-block-15556-.i, label %else-block2.i
then-block-15556-.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%13 = load %"ll::limb::Limb"** %12, align 8, !alias.scope !1504, !noalias !1502
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%15 = load %"ll::limb::Limb"** %14, align 8, !alias.scope !1507, !noalias !1499
%16 = icmp slt i32 %4, 0
%17 = sub i32 0, %4
%sret_slot.0.i.i45.i = select i1 %16, i32 %17, i32 %4
br label %while_cond.i39.i
while_cond.i39.i: ; preds = %while_body.i40.i, %then-block-15556-.i
%i.0.in.i37.i = phi i32 [ %sret_slot.0.i.i45.i, %then-block-15556-.i ], [ %i.0.i38.i, %while_body.i40.i ]
%i.0.i38.i = add i32 %i.0.in.i37.i, -1
%18 = icmp sgt i32 %i.0.i38.i, -1
br i1 %18, label %while_body.i40.i, label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit
while_body.i40.i: ; preds = %while_cond.i39.i
%19 = sext i32 %i.0.i38.i to i64
%20 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %19, i32 0
%21 = load i64* %20, align 8, !noalias !1510
%22 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %19, i32 0
%23 = load i64* %22, align 8, !noalias !1510
%24 = icmp eq i64 %21, %23
br i1 %24, label %while_cond.i39.i, label %then-block-13036-.i42.i
then-block-13036-.i42.i: ; preds = %while_body.i40.i
%.lcssa15 = phi i64 [ %23, %while_body.i40.i ]
%.lcssa = phi i64 [ %21, %while_body.i40.i ]
%25 = icmp ugt i64 %.lcssa, %.lcssa15
%..i41.i = select i1 %25, i16 256, i16 -256
br label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit
else-block2.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%26 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%27 = load %"ll::limb::Limb"** %26, align 8, !alias.scope !1511, !noalias !1499
%28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%29 = load %"ll::limb::Limb"** %28, align 8, !alias.scope !1514, !noalias !1502
%30 = icmp slt i32 %4, 0
%31 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %30, i32 %31, i32 %4
br label %while_cond.i.i
while_cond.i.i: ; preds = %while_body.i.i, %else-block2.i
%i.0.in.i.i = phi i32 [ %sret_slot.0.i.i.i, %else-block2.i ], [ %i.0.i.i, %while_body.i.i ]
%i.0.i.i = add i32 %i.0.in.i.i, -1
%32 = icmp sgt i32 %i.0.i.i, -1
br i1 %32, label %while_body.i.i, label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit14
while_body.i.i: ; preds = %while_cond.i.i
%33 = sext i32 %i.0.i.i to i64
%34 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %33, i32 0
%35 = load i64* %34, align 8, !noalias !1510
%36 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %33, i32 0
%37 = load i64* %36, align 8, !noalias !1510
%38 = icmp eq i64 %35, %37
br i1 %38, label %while_cond.i.i, label %then-block-13036-.i.i
then-block-13036-.i.i: ; preds = %while_body.i.i
%.lcssa17 = phi i64 [ %37, %while_body.i.i ]
%.lcssa16 = phi i64 [ %35, %while_body.i.i ]
%39 = icmp ugt i64 %.lcssa16, %.lcssa17
%..i.i = select i1 %39, i16 256, i16 -256
br label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit
_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit: ; preds = %while_cond.i39.i
br label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit
_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit14: ; preds = %while_cond.i.i
br label %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit
_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit: ; preds = %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit14, %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit, %entry-block, %else-block.i, %else-block1.i, %then-block-13036-.i42.i, %then-block-13036-.i.i
%llretslotptr.0.sroa.speculated.i = phi i16 [ 0, %else-block1.i ], [ -256, %entry-block ], [ 256, %else-block.i ], [ %..i41.i, %then-block-13036-.i42.i ], [ %..i.i, %then-block-13036-.i.i ], [ 0, %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit ], [ 0, %_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE.exit.loopexit14 ]
%sret_slot.sroa.0.0.insert.insert = or i16 %llretslotptr.0.sroa.speculated.i, 1
ret i16 %sret_slot.sroa.0.0.insert.insert
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %1, i64 0, i32 0
%3 = load i64* %2, align 8, !alias.scope !1517, !noalias !1522
%4 = icmp eq i64 %3, 0
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !1525, !noalias !1526
%7 = icmp eq i32 %6, 0
%or.cond.i = and i1 %4, %7
br i1 %or.cond.i, label %clean_custom_, label %next-block.i
next-block.i: ; preds = %entry-block
%8 = icmp eq i32 %6, 1
br i1 %8, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit", label %next-block
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit": ; preds = %next-block.i
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !1527, !noalias !1526
%11 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%12 = load i64* %11, align 8, !alias.scope !1530, !noalias !1533
%13 = icmp eq i64 %12, %3
br i1 %13, label %clean_custom_, label %else-block1
clean_custom_: ; preds = %entry-block, %match_case7.i.i, %compare_next.i.i, %match_case.i.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
%sret_slot.sroa.0.0 = phi i16 [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit" ], [ -255, %match_case7.i.i ], [ %..i.i, %compare_next.i.i ], [ 0, %match_case.i.i ], [ 1, %entry-block ]
ret i16 %sret_slot.sroa.0.0
next-block: ; preds = %next-block.i
%14 = icmp slt i32 %6, 1
%. = select i1 %14, i16 -255, i16 257
ret i16 %.
else-block1: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
%15 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%16 = load %"ll::limb::Limb"** %15, align 8, !alias.scope !1535
%17 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 0, i32 0
%18 = load i64* %17, align 8, !alias.scope !1538, !noalias !1545
%19 = icmp ule i64 %18, %3
%20 = icmp ult i64 %18, %3
br i1 %20, label %match_case.i.i, label %compare_next.i.i
match_case.i.i: ; preds = %else-block1
switch i1 %19, label %compare_next.i.i [
i1 false, label %clean_custom_
i1 true, label %match_case7.i.i
]
compare_next.i.i: ; preds = %match_case.i.i, %else-block1
%..i.i = select i1 %19, i16 1, i16 257
br label %clean_custom_
match_case7.i.i: ; preds = %match_case.i.i
br label %clean_custom_
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE"(%"ll::limb::Limb"* noalias nocapture readonly dereferenceable(8), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"ll::limb::Limb"* %0, i64 0, i32 0
%3 = load i64* %2, align 8, !alias.scope !1552, !noalias !1559
%4 = icmp eq i64 %3, 0
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !1563, !noalias !1564
%7 = icmp eq i32 %6, 0
%or.cond.i.i = and i1 %4, %7
br i1 %or.cond.i.i, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %next-block.i.i
next-block.i.i: ; preds = %entry-block
%8 = icmp eq i32 %6, 1
br i1 %8, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", label %next-block.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i": ; preds = %next-block.i.i
%9 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !1565, !noalias !1564
%11 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 0, i32 0
%12 = load i64* %11, align 8, !alias.scope !1568, !noalias !1571
%13 = icmp eq i64 %12, %3
br i1 %13, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %else-block1.i
next-block.i: ; preds = %next-block.i.i
%14 = icmp slt i32 %6, 1
%..i = select i1 %14, i16 -255, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
else-block1.i: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
%15 = icmp ule i64 %12, %3
%16 = icmp ult i64 %12, %3
br i1 %16, label %match_case.i.i.i, label %compare_next.i.i.i
match_case.i.i.i: ; preds = %else-block1.i
switch i1 %15, label %compare_next.i.i.i [
i1 false, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
i1 true, label %match_case7.i.i.i
]
compare_next.i.i.i: ; preds = %match_case.i.i.i, %else-block1.i
%..i.i.i = select i1 %15, i16 1, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
match_case7.i.i.i: ; preds = %match_case.i.i.i
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit": ; preds = %entry-block, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", %match_case.i.i.i, %compare_next.i.i.i, %match_case7.i.i.i, %next-block.i
%17 = phi i16 [ %..i, %next-block.i ], [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i" ], [ -255, %match_case7.i.i.i ], [ %..i.i.i, %compare_next.i.i.i ], [ 0, %match_case.i.i.i ], [ 1, %entry-block ]
%self.sroa.0.0.extract.trunc.i = trunc i16 %17 to i8
%cond.i = icmp eq i8 %self.sroa.0.0.extract.trunc.i, 1
br i1 %cond.i, label %match_case.i, label %"_ZN6option15Option$LT$T$GT$3map21h14766011344630792504E.exit"
match_case.i: ; preds = %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
%self.sroa.4.0.extract.shift.i = lshr i16 %17, 8
%18 = sub nsw i16 0, %self.sroa.4.0.extract.shift.i
%phitmp.i = shl i16 %18, 8
br label %"_ZN6option15Option$LT$T$GT$3map21h14766011344630792504E.exit"
"_ZN6option15Option$LT$T$GT$3map21h14766011344630792504E.exit": ; preds = %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", %match_case.i
%sret_slot.sroa.0.0.i4 = phi i16 [ 1, %match_case.i ], [ 0, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit" ]
%sret_slot.sroa.3.0.i = phi i16 [ %phitmp.i, %match_case.i ], [ 0, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit" ]
%sret_slot.sroa.0.0.insert.insert.i = or i16 %sret_slot.sroa.3.0.i, %sret_slot.sroa.0.0.i4
ret i16 %sret_slot.sroa.0.0.insert.insert.i
}
; Function Attrs: uwtable
define void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
normal-return:
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-15825-, label %next-block
unwind_custom_: ; preds = %then-block-15835-, %then-block-15906-
%4 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%6 = load i8* %5, align 1
%7 = icmp eq i8 %6, -44
br i1 %7, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%8 = load i32* %20, align 4, !alias.scope !1573
%9 = icmp eq i32 %8, 0
br i1 %9, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%10 = bitcast %"int::Int"* %1 to i8**
%11 = load i8** %10, align 8, !alias.scope !1576
%12 = zext i32 %8 to i64
%13 = shl nuw nsw i64 %12, 3
tail call void @je_sdallocx(i8* %11, i64 %13, i32 0)
store i32 0, i32* %20, align 4, !alias.scope !1573
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %14, align 4, !alias.scope !1573
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%15 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %15)
resume { i8*, i32 } %4
then-block-15825-: ; preds = %normal-return
%16 = bitcast %"int::Int"* %1 to i8*
%17 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %17, i8* %16, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %16, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
clean_custom_1: ; preds = %then-block-15835-
%18 = ptrtoint i8* %23 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %23 to i64*
store i64 %2, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !1579
%i.sroa.0.0..sroa_cast7.i = bitcast %"int::Int"* %0 to i64*
store i64 %18, i64* %i.sroa.0.0..sroa_cast7.i, align 8, !alias.scope !1579
%i.sroa.7.0..sroa_idx9.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 1, i32* %i.sroa.7.0..sroa_idx9.i, align 8, !alias.scope !1579
%i.sroa.10.0..sroa_idx11.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 1, i32* %i.sroa.10.0..sroa_idx11.i, align 4, !alias.scope !1579
%i.sroa.13.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %i.sroa.13.0..sroa_idx.i, align 8, !alias.scope !1579
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37: ; preds = %clean_custom_1, %then-block-15825-, %normal-return4, %join
%19 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %19)
ret void
next-block: ; preds = %normal-return
%20 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%21 = load i32* %20, align 4
%22 = icmp eq i32 %21, 0
br i1 %22, label %then-block-15835-, label %next-block3
then-block-15835-: ; preds = %next-block
%23 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %clean_custom_1 unwind label %unwind_custom_
next-block3: ; preds = %next-block
%24 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%25 = load i32* %24, align 4
%26 = icmp eq i32 %25, 0
br i1 %26, label %normal-return4, label %normal-return8
normal-return4: ; preds = %next-block3
%27 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%28 = load %"ll::limb::Limb"** %27, align 8, !alias.scope !1582
%29 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 0, i32 0
store i64 %2, i64* %29, align 8
store i32 1, i32* %24, align 4
%30 = bitcast %"int::Int"* %1 to i8*
%31 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %30, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %30, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
normal-return8: ; preds = %next-block3
%32 = ashr i32 %25, 31
%33 = or i32 %32, 1
%34 = icmp slt i32 %25, 0
%35 = sub i32 0, %25
%sret_slot.0.i.i46 = select i1 %34, i32 %35, i32 %25
%36 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%37 = load %"ll::limb::Limb"** %36, align 8, !alias.scope !1585
%38 = icmp eq i32 %33, 1
%39 = icmp sgt i32 %sret_slot.0.i.i46, 0
br i1 %38, label %then-block-15892-, label %else-block
then-block-15892-: ; preds = %normal-return8
br i1 %39, label %then-block-839-.i, label %join
then-block-839-.i: ; preds = %then-block-15892-
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %41, i64 %2) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
store i64 %43, i64* %40, align 8
br i1 %44, label %while_body.lr.ph.i39, label %join
while_body.lr.ph.i39: ; preds = %then-block-839-.i
%45 = sext i32 %sret_slot.0.i.i46 to i64
br label %while_body.i41
while_body.i41: ; preds = %next-block.i45, %while_body.lr.ph.i39
%indvars.iv.i40 = phi i64 [ %indvars.iv.next.i44, %next-block.i45 ], [ 1, %while_body.lr.ph.i39 ]
%46 = icmp slt i64 %indvars.iv.i40, %45
br i1 %46, label %next-block.i45, label %then-block-15906-
next-block.i45: ; preds = %while_body.i41
%47 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 %indvars.iv.i40, i32 0
%48 = load i64* %47, align 8
%49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %48, i64 1) #20
%50 = extractvalue { i64, i1 } %49, 0
%51 = extractvalue { i64, i1 } %49, 1
store i64 %50, i64* %47, align 8
%indvars.iv.next.i44 = add nuw nsw i64 %indvars.iv.i40, 1
br i1 %51, label %while_body.i41, label %join.loopexit
then-block-15906-: ; preds = %while_body.i41
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 1)
to label %join unwind label %unwind_custom_
else-block: ; preds = %normal-return8
br i1 %39, label %then-block-934-.i, label %join
then-block-934-.i: ; preds = %else-block
%52 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%53 = load i64* %52, align 8
%54 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %53, i64 %2) #20
%55 = extractvalue { i64, i1 } %54, 0
%56 = extractvalue { i64, i1 } %54, 1
store i64 %55, i64* %52, align 8
br i1 %56, label %while_body.lr.ph.i, label %join
while_body.lr.ph.i: ; preds = %then-block-934-.i
%57 = sext i32 %sret_slot.0.i.i46 to i64
br label %while_body.i
while_body.i: ; preds = %next-block.i, %while_body.lr.ph.i
%indvars.iv.i = phi i64 [ %indvars.iv.next.i, %next-block.i ], [ 1, %while_body.lr.ph.i ]
%58 = icmp slt i64 %indvars.iv.i, %57
br i1 %58, label %next-block.i, label %normal-return15
next-block.i: ; preds = %while_body.i
%59 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 %indvars.iv.i, i32 0
%60 = load i64* %59, align 8
%61 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %60, i64 1) #20
%62 = extractvalue { i64, i1 } %61, 0
%63 = extractvalue { i64, i1 } %61, 1
store i64 %62, i64* %59, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
br i1 %63, label %while_body.i, label %join.loopexit61
normal-return15: ; preds = %while_body.i
store i32 %sret_slot.0.i.i46, i32* %24, align 4
br label %join
join.loopexit: ; preds = %next-block.i45
br label %join
join.loopexit61: ; preds = %next-block.i
br label %join
join: ; preds = %join.loopexit61, %join.loopexit, %then-block-934-.i, %else-block, %then-block-839-.i, %then-block-15892-, %normal-return15, %then-block-15906-
%64 = bitcast %"int::Int"* %1 to i8*
%65 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %65, i8* %64, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %64, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
}
; Function Attrs: uwtable
define void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1588
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-16017-, label %next-block
unwind_custom_: ; preds = %else-block.i266, %then-block-14817-.i265, %else-block.i204, %then-block-14817-.i, %then-block-16135-, %then-block-16017-
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%10 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !1591
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %1 to i8**
%14 = load i8** %13, align 8, !alias.scope !1594
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !1591
store i32 0, i32* %3, align 4, !alias.scope !1591
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%17 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
resume { i8*, i32 } %6
then-block-16017-: ; preds = %entry-block
invoke void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return1 unwind label %unwind_custom_
normal-return1: ; preds = %then-block-16017-
%18 = bitcast %"int::Int"* %1 to i8*
%19 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %18, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %18, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209: ; preds = %normal-return1, %then-block-16031-, %next-block25, %match_case, %normal-return59
%20 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %20)
ret void
next-block: ; preds = %entry-block
%21 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%22 = load i32* %21, align 4, !alias.scope !1597
%23 = icmp eq i32 %22, 0
br i1 %23, label %then-block-16031-, label %normal-return6
then-block-16031-: ; preds = %next-block
%24 = bitcast %"int::Int"* %1 to i8*
%25 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %25, i8* %24, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %24, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209
normal-return6: ; preds = %next-block
%26 = ashr i32 %4, 31
%27 = or i32 %26, 1
%28 = ashr i32 %22, 31
%29 = or i32 %28, 1
%30 = icmp eq i32 %27, %29
br i1 %30, label %normal-return9, label %normal-return28
normal-return9: ; preds = %normal-return6
%31 = ashr i32 %4, 31
%32 = or i32 %31, 1
%33 = icmp slt i32 %4, 0
%34 = sub i32 0, %4
%sret_slot.0.i.i277 = select i1 %33, i32 %34, i32 %4
%35 = icmp slt i32 %22, 0
%36 = sub i32 0, %22
%sret_slot.0.i.i281 = select i1 %35, i32 %36, i32 %22
%37 = icmp slt i32 %sret_slot.0.i.i277, %sret_slot.0.i.i281
br i1 %37, label %normal-return14, label %normal-return20
normal-return14: ; preds = %normal-return9
%38 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%39 = load i32* %38, align 4, !alias.scope !1600
%40 = icmp ult i32 %39, %sret_slot.0.i.i281
br i1 %40, label %then-block-14806-.i264, label %normal-return18
then-block-14806-.i264: ; preds = %normal-return14
%41 = icmp eq i32 %39, 0
br i1 %41, label %else-block.i266, label %then-block-14817-.i265
then-block-14817-.i265: ; preds = %then-block-14806-.i264
%42 = bitcast %"int::Int"* %1 to i8**
%43 = load i8** %42, align 8, !alias.scope !1603
%44 = zext i32 %39 to i64
%45 = shl nuw nsw i64 %44, 3
%46 = zext i32 %sret_slot.0.i.i281 to i64
%47 = shl nuw nsw i64 %46, 3
%48 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %43, i64 %45, i64 %47)
to label %while_exit.i269 unwind label %unwind_custom_
else-block.i266: ; preds = %then-block-14806-.i264
%49 = zext i32 %sret_slot.0.i.i281 to i64
%50 = shl nuw nsw i64 %49, 3
%51 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %50)
to label %while_exit.i269 unwind label %unwind_custom_
while_exit.i269: ; preds = %else-block.i266, %then-block-14817-.i265
%.pre-phi305 = phi i64 [ %45, %then-block-14817-.i265 ], [ 0, %else-block.i266 ]
%.sink.i267 = phi i8* [ %48, %then-block-14817-.i265 ], [ %51, %else-block.i266 ]
%52 = add i32 %sret_slot.0.i.i281, -1
%scevgep.i268 = getelementptr i8* %.sink.i267, i64 %.pre-phi305
%53 = sub i32 %52, %39
%54 = zext i32 %53 to i64
%55 = shl nuw nsw i64 %54, 3
%56 = add nuw nsw i64 %55, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i268, i8 0, i64 %56, i32 8, i1 false), !noalias !1600
%57 = ptrtoint i8* %.sink.i267 to i64
%58 = bitcast %"int::Int"* %1 to i64*
store i64 %57, i64* %58, align 8, !alias.scope !1600
store i32 %sret_slot.0.i.i281, i32* %38, align 4, !alias.scope !1600
%.pre = load i32* %3, align 4, !alias.scope !1606
br label %normal-return18
normal-return18: ; preds = %normal-return14, %while_exit.i269
%59 = phi i32 [ %4, %normal-return14 ], [ %.pre, %while_exit.i269 ]
%60 = icmp slt i32 %59, 0
%61 = sub i32 0, %59
%sret_slot.0.i.i262 = select i1 %60, i32 %61, i32 %59
br label %normal-return20
normal-return20: ; preds = %normal-return9, %normal-return18
%.pn286 = phi %"int::Int"* [ %2, %normal-return18 ], [ %1, %normal-return9 ]
%.sroa.5.0 = phi i32 [ %sret_slot.0.i.i281, %normal-return18 ], [ %sret_slot.0.i.i277, %normal-return9 ]
%.pn287 = phi %"int::Int"* [ %1, %normal-return18 ], [ %2, %normal-return9 ]
%.sroa.11.0 = phi i32 [ %sret_slot.0.i.i262, %normal-return18 ], [ %sret_slot.0.i.i281, %normal-return9 ]
%.sroa.8156.0.in = getelementptr inbounds %"int::Int"* %.pn287, i64 0, i32 0, i32 0, i32 0
%.sroa.0152.0.in = getelementptr inbounds %"int::Int"* %.pn286, i64 0, i32 0, i32 0, i32 0
%.sroa.8156.0 = load %"ll::limb::Limb"** %.sroa.8156.0.in, align 8
%.sroa.0152.0 = load %"ll::limb::Limb"** %.sroa.0152.0.in, align 8
%62 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%63 = load %"ll::limb::Limb"** %62, align 8, !alias.scope !1609
%xl.sroa.0.0..sroa_idx43.i.i.i229 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i230 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i229, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i231 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.8156.0, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i232 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i231, align 8
%64 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i230, i64 %yl.sroa.0.0.copyload46.i.i.i232) #20
%65 = extractvalue { i64, i1 } %64, 0
%66 = extractvalue { i64, i1 } %64, 1
%.47.i.i.i233 = zext i1 %66 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i234 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 0, i32 0
store i64 %65, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i234, align 8
%67 = add i32 %.sroa.11.0, -1
%68 = icmp eq i32 %67, 0
br i1 %68, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, label %next-block.i.i.i245.preheader
next-block.i.i.i245.preheader: ; preds = %normal-return20
%69 = add i32 %.sroa.11.0, -1
%70 = add i32 %.sroa.11.0, -2
%xtraiter383 = and i32 %69, 1
%lcmp.mod384 = icmp ne i32 %xtraiter383, 0
br i1 %lcmp.mod384, label %next-block.i.i.i245.prol, label %next-block.i.i.i245.preheader.split
next-block.i.i.i245.prol: ; preds = %next-block.i.i.i245.preheader
%71 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 1
%72 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 1
%73 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.8156.0, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i239.prol = getelementptr inbounds %"ll::limb::Limb"* %72, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i240.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i239.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i241.prol = getelementptr inbounds %"ll::limb::Limb"* %73, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i242.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i241.prol, align 8
%74 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i240.prol, i64 %yl.sroa.0.0.copyload.i.i.i242.prol) #20
%75 = extractvalue { i64, i1 } %74, 0
%76 = extractvalue { i64, i1 } %74, 1
%77 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %75, i64 %.47.i.i.i233) #20
%78 = extractvalue { i64, i1 } %77, 0
%79 = extractvalue { i64, i1 } %77, 1
%80 = or i1 %76, %79
%..i.i.i243.prol = zext i1 %80 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i244.prol = getelementptr inbounds %"ll::limb::Limb"* %71, i64 0, i32 0
store i64 %78, i64* %rl.sroa.0.0..sroa_idx16.i.i.i244.prol, align 8
%81 = add i32 %67, -1
%82 = icmp eq i32 %81, 0
br label %next-block.i.i.i245.preheader.split
next-block.i.i.i245.preheader.split: ; preds = %next-block.i.i.i245.prol, %next-block.i.i.i245.preheader
%..i.i.i243.lcssa.unr = phi i64 [ 0, %next-block.i.i.i245.preheader ], [ %..i.i.i243.prol, %next-block.i.i.i245.prol ]
%.unr = phi i32 [ %67, %next-block.i.i.i245.preheader ], [ %81, %next-block.i.i.i245.prol ]
%.52.i.i.i235.unr = phi i64 [ %.47.i.i.i233, %next-block.i.i.i245.preheader ], [ %..i.i.i243.prol, %next-block.i.i.i245.prol ]
%wp.051.i.i.i236.unr = phi %"ll::limb::Limb"* [ %63, %next-block.i.i.i245.preheader ], [ %71, %next-block.i.i.i245.prol ]
%xp.050.i.i.i237.unr = phi %"ll::limb::Limb"* [ %.sroa.0152.0, %next-block.i.i.i245.preheader ], [ %72, %next-block.i.i.i245.prol ]
%yp.049.i.i.i238.unr = phi %"ll::limb::Limb"* [ %.sroa.8156.0, %next-block.i.i.i245.preheader ], [ %73, %next-block.i.i.i245.prol ]
%83 = icmp ult i32 %70, 1
br i1 %83, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, label %next-block.i.i.i245.preheader.split.split
next-block.i.i.i245.preheader.split.split: ; preds = %next-block.i.i.i245.preheader.split
br label %next-block.i.i.i245
next-block.i.i.i245: ; preds = %next-block.i.i.i245, %next-block.i.i.i245.preheader.split.split
%84 = phi i32 [ %.unr, %next-block.i.i.i245.preheader.split.split ], [ %106, %next-block.i.i.i245 ]
%.52.i.i.i235 = phi i64 [ %.52.i.i.i235.unr, %next-block.i.i.i245.preheader.split.split ], [ %..i.i.i243.1, %next-block.i.i.i245 ]
%wp.051.i.i.i236 = phi %"ll::limb::Limb"* [ %wp.051.i.i.i236.unr, %next-block.i.i.i245.preheader.split.split ], [ %96, %next-block.i.i.i245 ]
%xp.050.i.i.i237 = phi %"ll::limb::Limb"* [ %xp.050.i.i.i237.unr, %next-block.i.i.i245.preheader.split.split ], [ %97, %next-block.i.i.i245 ]
%yp.049.i.i.i238 = phi %"ll::limb::Limb"* [ %yp.049.i.i.i238.unr, %next-block.i.i.i245.preheader.split.split ], [ %98, %next-block.i.i.i245 ]
%85 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i236, i64 1
%86 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i237, i64 1
%87 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i238, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i239 = getelementptr inbounds %"ll::limb::Limb"* %86, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i240 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i239, align 8
%yl.sroa.0.0..sroa_idx.i.i.i241 = getelementptr inbounds %"ll::limb::Limb"* %87, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i242 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i241, align 8
%88 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i240, i64 %yl.sroa.0.0.copyload.i.i.i242) #20
%89 = extractvalue { i64, i1 } %88, 0
%90 = extractvalue { i64, i1 } %88, 1
%91 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %89, i64 %.52.i.i.i235) #20
%92 = extractvalue { i64, i1 } %91, 0
%93 = extractvalue { i64, i1 } %91, 1
%94 = or i1 %90, %93
%..i.i.i243 = zext i1 %94 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i244 = getelementptr inbounds %"ll::limb::Limb"* %85, i64 0, i32 0
store i64 %92, i64* %rl.sroa.0.0..sroa_idx16.i.i.i244, align 8
%95 = add i32 %84, -1
%96 = getelementptr inbounds %"ll::limb::Limb"* %85, i64 1
%97 = getelementptr inbounds %"ll::limb::Limb"* %86, i64 1
%98 = getelementptr inbounds %"ll::limb::Limb"* %87, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i239.1 = getelementptr inbounds %"ll::limb::Limb"* %97, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i240.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i239.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i241.1 = getelementptr inbounds %"ll::limb::Limb"* %98, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i242.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i241.1, align 8
%99 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i240.1, i64 %yl.sroa.0.0.copyload.i.i.i242.1) #20
%100 = extractvalue { i64, i1 } %99, 0
%101 = extractvalue { i64, i1 } %99, 1
%102 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %100, i64 %..i.i.i243) #20
%103 = extractvalue { i64, i1 } %102, 0
%104 = extractvalue { i64, i1 } %102, 1
%105 = or i1 %101, %104
%..i.i.i243.1 = zext i1 %105 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i244.1 = getelementptr inbounds %"ll::limb::Limb"* %96, i64 0, i32 0
store i64 %103, i64* %rl.sroa.0.0..sroa_idx16.i.i.i244.1, align 8
%106 = add i32 %95, -1
%107 = icmp eq i32 %106, 0
br i1 %107, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i245
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i245
%..i.i.i243.lcssa.ph = phi i64 [ %..i.i.i243.1, %next-block.i.i.i245 ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit: ; preds = %next-block.i.i.i245.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa
%..i.i.i243.lcssa = phi i64 [ %..i.i.i243.lcssa.unr, %next-block.i.i.i245.preheader.split ], [ %..i.i.i243.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, %normal-return20
%..lcssa.i.i.i246 = phi i64 [ %.47.i.i.i233, %normal-return20 ], [ %..i.i.i243.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit ]
%108 = icmp eq i64 %..lcssa.i.i.i246, 1
br i1 %108, label %loop_body.i248.preheader, label %next-block3.i254
loop_body.i248.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
br label %loop_body.i248
loop_body.i248: ; preds = %loop_body.i248.preheader, %next-block.i251
%i.0.i247 = phi i32 [ %116, %next-block.i251 ], [ %.sroa.11.0, %loop_body.i248.preheader ]
%109 = icmp slt i32 %i.0.i247, %.sroa.5.0
br i1 %109, label %next-block.i251, label %normal-return21.loopexit378
next-block.i251: ; preds = %loop_body.i248
%110 = sext i32 %i.0.i247 to i64
%111 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %110, i32 0
%112 = load i64* %111, align 8
%113 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %112, i64 1) #20
%114 = extractvalue { i64, i1 } %113, 0
%115 = extractvalue { i64, i1 } %113, 1
%x.sroa.0.0..sroa_idx6.i250 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %110, i32 0
store i64 %114, i64* %x.sroa.0.0..sroa_idx6.i250, align 8
%116 = add i32 %i.0.i247, 1
br i1 %115, label %loop_body.i248, label %next-block3.i254.loopexit
next-block3.i254.loopexit: ; preds = %next-block.i251
%.lcssa = phi i32 [ %116, %next-block.i251 ]
br label %next-block3.i254
next-block3.i254: ; preds = %next-block3.i254.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
%i.1.i252 = phi i32 [ %.sroa.11.0, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %.lcssa, %next-block3.i254.loopexit ]
%117 = icmp ne %"ll::limb::Limb"* %63, %.sroa.0152.0
%118 = icmp sgt i32 %.sroa.5.0, %i.1.i252
%..i253 = and i1 %117, %118
br i1 %..i253, label %then-block-629-.i, label %normal-return21
then-block-629-.i: ; preds = %next-block3.i254
%119 = sext i32 %i.1.i252 to i64
%120 = sub i32 %.sroa.5.0, %i.1.i252
%121 = icmp sgt i32 %120, 0
br i1 %121, label %while_body.lr.ph.i.i.i255, label %normal-return21
while_body.lr.ph.i.i.i255: ; preds = %then-block-629-.i
%122 = add i32 %.sroa.5.0, -1
%123 = sub i32 %122, %i.1.i252
%124 = zext i32 %123 to i64
%125 = add nuw nsw i64 %124, 1
%end.idx339 = add nuw nsw i64 %124, 1
%n.vec341 = and i64 %125, 8589934588
%cmp.zero343 = icmp eq i64 %n.vec341, 0
%126 = sext i32 %i.1.i252 to i64
%127 = add i32 %.sroa.5.0, -1
%128 = sub i32 %127, %i.1.i252
%129 = zext i32 %128 to i64
%130 = add nsw i64 %126, %129
br i1 %cmp.zero343, label %middle.block336, label %vector.memcheck357
vector.memcheck357: ; preds = %while_body.lr.ph.i.i.i255
%scevgep345 = getelementptr %"ll::limb::Limb"* %63, i64 %126
%scevgep351 = getelementptr %"ll::limb::Limb"* %.sroa.0152.0, i64 %130
%bound0353 = icmp ule %"ll::limb::Limb"* %scevgep345, %scevgep351
%scevgep349 = getelementptr %"ll::limb::Limb"* %.sroa.0152.0, i64 %126
%scevgep347 = getelementptr %"ll::limb::Limb"* %63, i64 %130
%bound1354 = icmp ule %"ll::limb::Limb"* %scevgep349, %scevgep347
%memcheck.conflict356 = and i1 %bound0353, %bound1354
br i1 %memcheck.conflict356, label %middle.block336, label %vector.body335.preheader
vector.body335.preheader: ; preds = %vector.memcheck357
br label %vector.body335
vector.body335: ; preds = %vector.body335.preheader, %vector.body335
%index338 = phi i64 [ %index.next363, %vector.body335 ], [ 0, %vector.body335.preheader ]
%131 = add i64 %index338, %119
%132 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %131, i32 0
%133 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %131, i32 0
%134 = bitcast i64* %132 to <2 x i64>*
%wide.load370 = load <2 x i64>* %134, align 8
%135 = getelementptr i64* %132, i64 2
%136 = bitcast i64* %135 to <2 x i64>*
%wide.load371 = load <2 x i64>* %136, align 8
%137 = bitcast i64* %133 to <2 x i64>*
store <2 x i64> %wide.load370, <2 x i64>* %137, align 8
%138 = getelementptr i64* %133, i64 2
%139 = bitcast i64* %138 to <2 x i64>*
store <2 x i64> %wide.load371, <2 x i64>* %139, align 8
%index.next363 = add i64 %index338, 4
%140 = icmp eq i64 %index.next363, %n.vec341
br i1 %140, label %middle.block336.loopexit, label %vector.body335, !llvm.loop !1612
middle.block336.loopexit: ; preds = %vector.body335
br label %middle.block336
middle.block336: ; preds = %middle.block336.loopexit, %vector.memcheck357, %while_body.lr.ph.i.i.i255
%resume.val358 = phi i64 [ 0, %while_body.lr.ph.i.i.i255 ], [ 0, %vector.memcheck357 ], [ %n.vec341, %middle.block336.loopexit ]
%cmp.n362 = icmp eq i64 %end.idx339, %resume.val358
br i1 %cmp.n362, label %normal-return21, label %while_body.i.i.i261.preheader
while_body.i.i.i261.preheader: ; preds = %middle.block336
%141 = sub i32 %.sroa.5.0, %i.1.i252
%142 = trunc i64 %resume.val358 to i32
%143 = sub i32 %141, %142
%144 = add i32 %.sroa.5.0, -1
%145 = sub i32 %144, %i.1.i252
%146 = sub i32 %145, %142
%xtraiter = and i32 %143, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.i261.prol, label %while_body.i.i.i261.preheader.split
while_body.i.i.i261.prol: ; preds = %while_body.i.i.i261.prol, %while_body.i.i.i261.preheader
%indvars.iv.i.i.i256.prol = phi i64 [ %indvars.iv.next.i.i.i258.prol, %while_body.i.i.i261.prol ], [ %resume.val358, %while_body.i.i.i261.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.i261.preheader ], [ %prol.iter.sub, %while_body.i.i.i261.prol ]
%.sum.i.i257.prol = add i64 %indvars.iv.i.i.i256.prol, %119
%147 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %.sum.i.i257.prol, i32 0
%148 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %.sum.i.i257.prol, i32 0
%149 = load i64* %147, align 8
store i64 %149, i64* %148, align 8
%indvars.iv.next.i.i.i258.prol = add nuw nsw i64 %indvars.iv.i.i.i256.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.i256.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %123
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.i261.prol, label %while_body.i.i.i261.preheader.split, !llvm.loop !1613
while_body.i.i.i261.preheader.split: ; preds = %while_body.i.i.i261.prol, %while_body.i.i.i261.preheader
%indvars.iv.i.i.i256.unr = phi i64 [ %resume.val358, %while_body.i.i.i261.preheader ], [ %indvars.iv.next.i.i.i258.prol, %while_body.i.i.i261.prol ]
%150 = icmp ult i32 %146, 3
br i1 %150, label %normal-return21.loopexit, label %while_body.i.i.i261.preheader.split.split
while_body.i.i.i261.preheader.split.split: ; preds = %while_body.i.i.i261.preheader.split
br label %while_body.i.i.i261
while_body.i.i.i261: ; preds = %while_body.i.i.i261, %while_body.i.i.i261.preheader.split.split
%indvars.iv.i.i.i256 = phi i64 [ %indvars.iv.i.i.i256.unr, %while_body.i.i.i261.preheader.split.split ], [ %indvars.iv.next.i.i.i258.3, %while_body.i.i.i261 ]
%.sum.i.i257 = add i64 %indvars.iv.i.i.i256, %119
%151 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %.sum.i.i257, i32 0
%152 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %.sum.i.i257, i32 0
%153 = load i64* %151, align 8
store i64 %153, i64* %152, align 8
%indvars.iv.next.i.i.i258 = add nuw nsw i64 %indvars.iv.i.i.i256, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i256 to i32
%.sum.i.i257.1 = add i64 %indvars.iv.next.i.i.i258, %119
%154 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %.sum.i.i257.1, i32 0
%155 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %.sum.i.i257.1, i32 0
%156 = load i64* %154, align 8
store i64 %156, i64* %155, align 8
%indvars.iv.next.i.i.i258.1 = add nuw nsw i64 %indvars.iv.next.i.i.i258, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i258 to i32
%.sum.i.i257.2 = add i64 %indvars.iv.next.i.i.i258.1, %119
%157 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %.sum.i.i257.2, i32 0
%158 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %.sum.i.i257.2, i32 0
%159 = load i64* %157, align 8
store i64 %159, i64* %158, align 8
%indvars.iv.next.i.i.i258.2 = add nuw nsw i64 %indvars.iv.next.i.i.i258.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.i258.1 to i32
%.sum.i.i257.3 = add i64 %indvars.iv.next.i.i.i258.2, %119
%160 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0152.0, i64 %.sum.i.i257.3, i32 0
%161 = getelementptr inbounds %"ll::limb::Limb"* %63, i64 %.sum.i.i257.3, i32 0
%162 = load i64* %160, align 8
store i64 %162, i64* %161, align 8
%indvars.iv.next.i.i.i258.3 = add nuw nsw i64 %indvars.iv.next.i.i.i258.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.i258.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %123
br i1 %exitcond.3, label %normal-return21.loopexit.unr-lcssa, label %while_body.i.i.i261, !llvm.loop !1614
normal-return21.loopexit.unr-lcssa: ; preds = %while_body.i.i.i261
br label %normal-return21.loopexit
normal-return21.loopexit: ; preds = %while_body.i.i.i261.preheader.split, %normal-return21.loopexit.unr-lcssa
br label %normal-return21
normal-return21.loopexit378: ; preds = %loop_body.i248
br label %normal-return21
normal-return21: ; preds = %normal-return21.loopexit378, %normal-return21.loopexit, %middle.block336, %then-block-629-.i, %next-block3.i254
%sret_slot.sroa.0.0.i249 = phi i64 [ 0, %next-block3.i254 ], [ 0, %then-block-629-.i ], [ 0, %middle.block336 ], [ 0, %normal-return21.loopexit ], [ 1, %normal-return21.loopexit378 ]
%163 = mul i32 %.sroa.5.0, %32
store i32 %163, i32* %3, align 4
%164 = icmp eq i32 %163, 0
br i1 %164, label %normal-return23, label %join.lr.ph.i223
join.lr.ph.i223: ; preds = %normal-return21
%165 = ashr i32 %163, 31
%166 = or i32 %165, 1
%167 = load %"ll::limb::Limb"** %62, align 8, !alias.scope !1615
br label %join.i227
while_body.i225: ; preds = %join.i227
%168 = sub i32 %170, %166
store i32 %168, i32* %3, align 4, !alias.scope !1615
%169 = icmp eq i32 %170, %166
br i1 %169, label %normal-return23.loopexit, label %join.i227
join.i227: ; preds = %while_body.i225, %join.lr.ph.i223
%170 = phi i32 [ %163, %join.lr.ph.i223 ], [ %168, %while_body.i225 ]
%171 = icmp slt i32 %170, 0
%172 = sub i32 0, %170
%sret_slot.0.i.i.i226 = select i1 %171, i32 %172, i32 %170
%173 = add i32 %sret_slot.0.i.i.i226, -1
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds %"ll::limb::Limb"* %167, i64 %174, i32 0
%176 = load i64* %175, align 8, !alias.scope !1618, !noalias !1621
%177 = icmp eq i64 %176, 0
br i1 %177, label %while_body.i225, label %normal-return23.loopexit
normal-return23.loopexit: ; preds = %join.i227, %while_body.i225
br label %normal-return23
normal-return23: ; preds = %normal-return23.loopexit, %normal-return21
%178 = icmp eq i64 %sret_slot.sroa.0.0.i249, 0
br i1 %178, label %next-block25, label %then-block-16135-
then-block-16135-: ; preds = %normal-return23
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 %sret_slot.sroa.0.0.i249)
to label %next-block25 unwind label %unwind_custom_
next-block25: ; preds = %normal-return23, %then-block-16135-
%179 = bitcast %"int::Int"* %1 to i8*
%180 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %180, i8* %179, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %179, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209
normal-return28: ; preds = %normal-return6
%181 = icmp slt i32 %4, 0
%182 = sub i32 0, %4
%sret_slot.0.i.i219 = select i1 %181, i32 %182, i32 %4
%183 = icmp slt i32 %22, 0
%184 = sub i32 0, %22
%sret_slot.0.i.i218 = select i1 %183, i32 %184, i32 %22
%185 = icmp sgt i32 %sret_slot.0.i.i219, %sret_slot.0.i.i218
br i1 %185, label %normal-return30, label %normal-return33
normal-return30: ; preds = %normal-return28
%186 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%187 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
br label %normal-return57
normal-return33: ; preds = %normal-return28
%188 = icmp slt i32 %sret_slot.0.i.i219, %sret_slot.0.i.i218
br i1 %188, label %normal-return34, label %else-block1.i
normal-return34: ; preds = %normal-return33
%189 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%190 = load i32* %189, align 4, !alias.scope !1623
%191 = icmp ult i32 %190, %sret_slot.0.i.i218
br i1 %191, label %then-block-14806-.i, label %normal-return37
then-block-14806-.i: ; preds = %normal-return34
%192 = icmp eq i32 %190, 0
br i1 %192, label %else-block.i204, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%193 = bitcast %"int::Int"* %1 to i8**
%194 = load i8** %193, align 8, !alias.scope !1626
%195 = zext i32 %190 to i64
%196 = shl nuw nsw i64 %195, 3
%197 = zext i32 %sret_slot.0.i.i218 to i64
%198 = shl nuw nsw i64 %197, 3
%199 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %194, i64 %196, i64 %198)
to label %while_exit.i unwind label %unwind_custom_
else-block.i204: ; preds = %then-block-14806-.i
%200 = zext i32 %sret_slot.0.i.i218 to i64
%201 = shl nuw nsw i64 %200, 3
%202 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %201)
to label %while_exit.i unwind label %unwind_custom_
while_exit.i: ; preds = %else-block.i204, %then-block-14817-.i
%.pre-phi309 = phi i64 [ %196, %then-block-14817-.i ], [ 0, %else-block.i204 ]
%.sink.i = phi i8* [ %199, %then-block-14817-.i ], [ %202, %else-block.i204 ]
%203 = add i32 %sret_slot.0.i.i218, -1
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi309
%204 = sub i32 %203, %190
%205 = zext i32 %204 to i64
%206 = shl nuw nsw i64 %205, 3
%207 = add nuw nsw i64 %206, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %207, i32 8, i1 false), !noalias !1623
%208 = ptrtoint i8* %.sink.i to i64
%209 = bitcast %"int::Int"* %1 to i64*
store i64 %208, i64* %209, align 8, !alias.scope !1623
store i32 %sret_slot.0.i.i218, i32* %189, align 4, !alias.scope !1623
br label %normal-return37
normal-return37: ; preds = %while_exit.i, %normal-return34
%210 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%211 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
br label %normal-return57
else-block1.i: ; preds = %normal-return33
%212 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%213 = load %"ll::limb::Limb"** %212, align 8, !alias.scope !1629, !noalias !1634
%214 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%215 = load %"ll::limb::Limb"** %214, align 8, !alias.scope !1636, !noalias !1639
br label %while_cond.i.i
while_cond.i.i: ; preds = %while_body.i.i, %else-block1.i
%i.0.in.i.i = phi i32 [ %sret_slot.0.i.i219, %else-block1.i ], [ %i.0.i.i, %while_body.i.i ]
%i.0.i.i = add i32 %i.0.in.i.i, -1
%216 = icmp sgt i32 %i.0.i.i, -1
br i1 %216, label %while_body.i.i, label %match_case
while_body.i.i: ; preds = %while_cond.i.i
%217 = sext i32 %i.0.i.i to i64
%218 = getelementptr inbounds %"ll::limb::Limb"* %213, i64 %217, i32 0
%219 = load i64* %218, align 8, !noalias !1640
%220 = getelementptr inbounds %"ll::limb::Limb"* %215, i64 %217, i32 0
%221 = load i64* %220, align 8, !noalias !1640
%222 = icmp eq i64 %219, %221
br i1 %222, label %while_cond.i.i, label %normal-return39
normal-return39: ; preds = %while_body.i.i
%.lcssa382 = phi i64 [ %221, %while_body.i.i ]
%.lcssa381 = phi i64 [ %219, %while_body.i.i ]
%223 = icmp ugt i64 %.lcssa381, %.lcssa382
%. = select i1 %223, %"int::Int"* %1, %"int::Int"* %2
%.288 = select i1 %223, i32* %3, i32* %21
%.289 = select i1 %223, %"int::Int"* %2, %"int::Int"* %1
%.sroa.12117.0.in = getelementptr inbounds %"int::Int"* %.289, i64 0, i32 0, i32 0, i32 0
%.sroa.0.0.in = getelementptr inbounds %"int::Int"* %., i64 0, i32 0, i32 0, i32 0
%.sroa.7.0 = load i32* %.288, align 4
%.sroa.17.0.in = getelementptr inbounds %"int::Int"* %.289, i64 0, i32 1
br label %normal-return57
match_case: ; preds = %while_cond.i.i
store i32 0, i32* %3, align 4
%224 = bitcast %"int::Int"* %1 to i8*
%225 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %225, i8* %224, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %224, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209
normal-return57: ; preds = %normal-return30, %normal-return39, %normal-return37
%.sroa.0.1.in = phi %"ll::limb::Limb"** [ %186, %normal-return30 ], [ %210, %normal-return37 ], [ %.sroa.0.0.in, %normal-return39 ]
%.sroa.7.1 = phi i32 [ %4, %normal-return30 ], [ %22, %normal-return37 ], [ %.sroa.7.0, %normal-return39 ]
%.sroa.12117.1.in = phi %"ll::limb::Limb"** [ %187, %normal-return30 ], [ %211, %normal-return37 ], [ %.sroa.12117.0.in, %normal-return39 ]
%.sroa.17.1.in = phi i32* [ %21, %normal-return30 ], [ %3, %normal-return37 ], [ %.sroa.17.0.in, %normal-return39 ]
%.sroa.12117.1 = load %"ll::limb::Limb"** %.sroa.12117.1.in, align 8
%.sroa.0.1 = load %"ll::limb::Limb"** %.sroa.0.1.in, align 8
%.sroa.17.1 = load i32* %.sroa.17.1.in, align 4
%226 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%227 = load %"ll::limb::Limb"** %226, align 8, !alias.scope !1641
%228 = icmp slt i32 %.sroa.7.1, 0
%229 = sub i32 0, %.sroa.7.1
%sret_slot.0.i200 = select i1 %228, i32 %229, i32 %.sroa.7.1
%230 = icmp slt i32 %.sroa.17.1, 0
%231 = sub i32 0, %.sroa.17.1
%sret_slot.0.i199 = select i1 %230, i32 %231, i32 %.sroa.17.1
%xl.sroa.0.0..sroa_idx43.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %.sroa.12117.1, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i, align 8
%232 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i, i64 %yl.sroa.0.0.copyload46.i.i.i) #20
%233 = extractvalue { i64, i1 } %232, 0
%234 = extractvalue { i64, i1 } %232, 1
%.47.i.i.i = zext i1 %234 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %227, i64 0, i32 0
store i64 %233, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%235 = add i32 %sret_slot.0.i199, -1
%236 = icmp eq i32 %235, 0
br i1 %236, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %normal-return57
%237 = add i32 %sret_slot.0.i199, -1
%238 = add i32 %sret_slot.0.i199, -2
%xtraiter388 = and i32 %237, 1
%lcmp.mod389 = icmp ne i32 %xtraiter388, 0
br i1 %lcmp.mod389, label %next-block.i.i.i.prol, label %next-block.i.i.i.preheader.split
next-block.i.i.i.prol: ; preds = %next-block.i.i.i.preheader
%239 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 1
%240 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 1
%241 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.12117.1, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %240, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %241, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%242 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.i.prol) #20
%243 = extractvalue { i64, i1 } %242, 0
%244 = extractvalue { i64, i1 } %242, 1
%245 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %243, i64 %.47.i.i.i) #20
%246 = extractvalue { i64, i1 } %245, 0
%247 = extractvalue { i64, i1 } %245, 1
%248 = or i1 %244, %247
%..i.i.i.prol = zext i1 %248 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %239, i64 0, i32 0
store i64 %246, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.prol, align 8
%249 = add i32 %235, -1
%250 = icmp eq i32 %249, 0
br label %next-block.i.i.i.preheader.split
next-block.i.i.i.preheader.split: ; preds = %next-block.i.i.i.prol, %next-block.i.i.i.preheader
%..i.i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%.unr390 = phi i32 [ %235, %next-block.i.i.i.preheader ], [ %249, %next-block.i.i.i.prol ]
%.52.i.i.i.unr = phi i64 [ %.47.i.i.i, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%wp.051.i.i.i.unr = phi %"ll::limb::Limb"* [ %227, %next-block.i.i.i.preheader ], [ %239, %next-block.i.i.i.prol ]
%xp.050.i.i.i.unr = phi %"ll::limb::Limb"* [ %.sroa.0.1, %next-block.i.i.i.preheader ], [ %240, %next-block.i.i.i.prol ]
%yp.049.i.i.i.unr = phi %"ll::limb::Limb"* [ %.sroa.12117.1, %next-block.i.i.i.preheader ], [ %241, %next-block.i.i.i.prol ]
%251 = icmp ult i32 %238, 1
br i1 %251, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, label %next-block.i.i.i.preheader.split.split
next-block.i.i.i.preheader.split.split: ; preds = %next-block.i.i.i.preheader.split
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i, %next-block.i.i.i.preheader.split.split
%252 = phi i32 [ %.unr390, %next-block.i.i.i.preheader.split.split ], [ %274, %next-block.i.i.i ]
%.52.i.i.i = phi i64 [ %.52.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %..i.i.i.1, %next-block.i.i.i ]
%wp.051.i.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %264, %next-block.i.i.i ]
%xp.050.i.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %265, %next-block.i.i.i ]
%yp.049.i.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %266, %next-block.i.i.i ]
%253 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i, i64 1
%254 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i, i64 1
%255 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %254, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %255, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i.i, align 8
%256 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %yl.sroa.0.0.copyload.i.i.i) #20
%257 = extractvalue { i64, i1 } %256, 0
%258 = extractvalue { i64, i1 } %256, 1
%259 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %257, i64 %.52.i.i.i) #20
%260 = extractvalue { i64, i1 } %259, 0
%261 = extractvalue { i64, i1 } %259, 1
%262 = or i1 %258, %261
%..i.i.i = zext i1 %262 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %253, i64 0, i32 0
store i64 %260, i64* %rl.sroa.0.0..sroa_idx16.i.i.i, align 8
%263 = add i32 %252, -1
%264 = getelementptr inbounds %"ll::limb::Limb"* %253, i64 1
%265 = getelementptr inbounds %"ll::limb::Limb"* %254, i64 1
%266 = getelementptr inbounds %"ll::limb::Limb"* %255, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %265, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %266, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%267 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.i.1) #20
%268 = extractvalue { i64, i1 } %267, 0
%269 = extractvalue { i64, i1 } %267, 1
%270 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %268, i64 %..i.i.i) #20
%271 = extractvalue { i64, i1 } %270, 0
%272 = extractvalue { i64, i1 } %270, 1
%273 = or i1 %269, %272
%..i.i.i.1 = zext i1 %273 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %264, i64 0, i32 0
store i64 %271, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.1, align 8
%274 = add i32 %263, -1
%275 = icmp eq i32 %274, 0
br i1 %275, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i
%..i.i.i.lcssa.ph = phi i64 [ %..i.i.i.1, %next-block.i.i.i ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit: ; preds = %next-block.i.i.i.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa
%..i.i.i.lcssa = phi i64 [ %..i.i.i.lcssa.unr, %next-block.i.i.i.preheader.split ], [ %..i.i.i.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, %normal-return57
%..lcssa.i.i.i = phi i64 [ %.47.i.i.i, %normal-return57 ], [ %..i.i.i.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit ]
%276 = icmp eq i64 %..lcssa.i.i.i, 1
br i1 %276, label %loop_body.i.preheader, label %next-block3.i
loop_body.i.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
br label %loop_body.i
loop_body.i: ; preds = %loop_body.i.preheader, %next-block.i
%i.0.i = phi i32 [ %284, %next-block.i ], [ %sret_slot.0.i199, %loop_body.i.preheader ]
%277 = icmp slt i32 %i.0.i, %sret_slot.0.i200
br i1 %277, label %next-block.i, label %normal-return58.loopexit379
next-block.i: ; preds = %loop_body.i
%278 = sext i32 %i.0.i to i64
%279 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %278, i32 0
%280 = load i64* %279, align 8
%281 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %280, i64 1) #20
%282 = extractvalue { i64, i1 } %281, 0
%283 = extractvalue { i64, i1 } %281, 1
%x.sroa.0.0..sroa_idx6.i = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %278, i32 0
store i64 %282, i64* %x.sroa.0.0..sroa_idx6.i, align 8
%284 = add i32 %i.0.i, 1
br i1 %283, label %loop_body.i, label %next-block3.i.loopexit
next-block3.i.loopexit: ; preds = %next-block.i
%.lcssa380 = phi i32 [ %284, %next-block.i ]
br label %next-block3.i
next-block3.i: ; preds = %next-block3.i.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
%i.1.i = phi i32 [ %sret_slot.0.i199, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i ], [ %.lcssa380, %next-block3.i.loopexit ]
%285 = icmp ne %"ll::limb::Limb"* %227, %.sroa.0.1
%286 = icmp sgt i32 %sret_slot.0.i200, %i.1.i
%..i = and i1 %285, %286
br i1 %..i, label %then-block-803-.i, label %normal-return58
then-block-803-.i: ; preds = %next-block3.i
%287 = sext i32 %i.1.i to i64
%288 = sub i32 %sret_slot.0.i200, %i.1.i
%289 = icmp sgt i32 %288, 0
br i1 %289, label %while_body.lr.ph.i.i.i, label %normal-return58
while_body.lr.ph.i.i.i: ; preds = %then-block-803-.i
%290 = add i32 %sret_slot.0.i200, -1
%291 = sub i32 %290, %i.1.i
%292 = zext i32 %291 to i64
%293 = add nuw nsw i64 %292, 1
%end.idx = add nuw nsw i64 %292, 1
%n.vec = and i64 %293, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%294 = sext i32 %i.1.i to i64
%295 = add i32 %sret_slot.0.i200, -1
%296 = sub i32 %295, %i.1.i
%297 = zext i32 %296 to i64
%298 = add nsw i64 %294, %297
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %227, i64 %294
%scevgep320 = getelementptr %"ll::limb::Limb"* %.sroa.0.1, i64 %298
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep320
%scevgep318 = getelementptr %"ll::limb::Limb"* %.sroa.0.1, i64 %294
%scevgep316 = getelementptr %"ll::limb::Limb"* %227, i64 %298
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep318, %scevgep316
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%299 = add i64 %index, %287
%300 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %299, i32 0
%301 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %299, i32 0
%302 = bitcast i64* %300 to <2 x i64>*
%wide.load = load <2 x i64>* %302, align 8
%303 = getelementptr i64* %300, i64 2
%304 = bitcast i64* %303 to <2 x i64>*
%wide.load325 = load <2 x i64>* %304, align 8
%305 = bitcast i64* %301 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %305, align 8
%306 = getelementptr i64* %301, i64 2
%307 = bitcast i64* %306 to <2 x i64>*
store <2 x i64> %wide.load325, <2 x i64>* %307, align 8
%index.next = add i64 %index, 4
%308 = icmp eq i64 %index.next, %n.vec
br i1 %308, label %middle.block.loopexit, label %vector.body, !llvm.loop !1644
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %normal-return58, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block
%309 = sub i32 %sret_slot.0.i200, %i.1.i
%310 = trunc i64 %resume.val to i32
%311 = sub i32 %309, %310
%312 = add i32 %sret_slot.0.i200, -1
%313 = sub i32 %312, %i.1.i
%314 = sub i32 %313, %310
%xtraiter385 = and i32 %311, 3
%lcmp.mod386 = icmp ne i32 %xtraiter385, 0
br i1 %lcmp.mod386, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val, %while_body.i.i.i.preheader ]
%prol.iter387 = phi i32 [ %xtraiter385, %while_body.i.i.i.preheader ], [ %prol.iter387.sub, %while_body.i.i.i.prol ]
%.sum.i.i.prol = add i64 %indvars.iv.i.i.i.prol, %287
%315 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %.sum.i.i.prol, i32 0
%316 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %.sum.i.i.prol, i32 0
%317 = load i64* %315, align 8
store i64 %317, i64* %316, align 8
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv300.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond301.prol = icmp eq i32 %lftr.wideiv300.prol, %291
%prol.iter387.sub = sub i32 %prol.iter387, 1
%prol.iter387.cmp = icmp ne i32 %prol.iter387.sub, 0
br i1 %prol.iter387.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !1645
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%318 = icmp ult i32 %314, 3
br i1 %318, label %normal-return58.loopexit, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%.sum.i.i = add i64 %indvars.iv.i.i.i, %287
%319 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %.sum.i.i, i32 0
%320 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %.sum.i.i, i32 0
%321 = load i64* %319, align 8
store i64 %321, i64* %320, align 8
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv300 = trunc i64 %indvars.iv.i.i.i to i32
%.sum.i.i.1 = add i64 %indvars.iv.next.i.i.i, %287
%322 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %.sum.i.i.1, i32 0
%323 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %.sum.i.i.1, i32 0
%324 = load i64* %322, align 8
store i64 %324, i64* %323, align 8
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv300.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%.sum.i.i.2 = add i64 %indvars.iv.next.i.i.i.1, %287
%325 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %.sum.i.i.2, i32 0
%326 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %.sum.i.i.2, i32 0
%327 = load i64* %325, align 8
store i64 %327, i64* %326, align 8
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv300.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%.sum.i.i.3 = add i64 %indvars.iv.next.i.i.i.2, %287
%328 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.1, i64 %.sum.i.i.3, i32 0
%329 = getelementptr inbounds %"ll::limb::Limb"* %227, i64 %.sum.i.i.3, i32 0
%330 = load i64* %328, align 8
store i64 %330, i64* %329, align 8
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv300.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond301.3 = icmp eq i32 %lftr.wideiv300.3, %291
br i1 %exitcond301.3, label %normal-return58.loopexit.unr-lcssa, label %while_body.i.i.i, !llvm.loop !1646
normal-return58.loopexit.unr-lcssa: ; preds = %while_body.i.i.i
br label %normal-return58.loopexit
normal-return58.loopexit: ; preds = %while_body.i.i.i.preheader.split, %normal-return58.loopexit.unr-lcssa
br label %normal-return58
normal-return58.loopexit379: ; preds = %loop_body.i
br label %normal-return58
normal-return58: ; preds = %normal-return58.loopexit379, %normal-return58.loopexit, %middle.block, %then-block-803-.i, %next-block3.i
store i32 %.sroa.7.1, i32* %3, align 4
%331 = icmp eq i32 %.sroa.7.1, 0
br i1 %331, label %normal-return59, label %join.lr.ph.i
join.lr.ph.i: ; preds = %normal-return58
%332 = ashr i32 %.sroa.7.1, 31
%333 = or i32 %332, 1
%334 = load %"ll::limb::Limb"** %226, align 8, !alias.scope !1647
br label %join.i
while_body.i: ; preds = %join.i
%335 = sub i32 %337, %333
store i32 %335, i32* %3, align 4, !alias.scope !1647
%336 = icmp eq i32 %337, %333
br i1 %336, label %normal-return59.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%337 = phi i32 [ %.sroa.7.1, %join.lr.ph.i ], [ %335, %while_body.i ]
%338 = icmp slt i32 %337, 0
%339 = sub i32 0, %337
%sret_slot.0.i.i.i = select i1 %338, i32 %339, i32 %337
%340 = add i32 %sret_slot.0.i.i.i, -1
%341 = sext i32 %340 to i64
%342 = getelementptr inbounds %"ll::limb::Limb"* %334, i64 %341, i32 0
%343 = load i64* %342, align 8, !alias.scope !1650, !noalias !1653
%344 = icmp eq i64 %343, 0
br i1 %344, label %while_body.i, label %normal-return59.loopexit
normal-return59.loopexit: ; preds = %while_body.i, %join.i
br label %normal-return59
normal-return59: ; preds = %normal-return59.loopexit, %normal-return58
%345 = bitcast %"int::Int"* %1 to i8*
%346 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %346, i8* %345, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %345, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit209
}
; Function Attrs: uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Add$LT$Int$GT$3add20h9e5a5e9aa1847e44QpeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %entry-block
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %5
}
; Function Attrs: uwtable
define void @"_ZN3int18Int.Add$LT$Int$GT$3add20h250902f991380a3ddqeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%.sroa.14 = alloca [7 x i8], align 1
%x.sroa.16 = alloca [7 x i8], align 1
%arg = alloca %"int::Int", align 8
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1655
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-16387-, label %next-block
clean_custom_: ; preds = %"_ZN53_$LP$int..Int$C$$u20$$RF$$u27$static$u20$int..Int$RP$9drop.977017he9df3e213cef6e68E.exit"
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %x.sroa.16.0..sroa_idx)
%7 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i26, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28
cond.i26: ; preds = %clean_custom_
%10 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !1658
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28, label %then-block-15297-.i.i27
then-block-15297-.i.i27: ; preds = %cond.i26
%13 = bitcast %"int::Int"* %2 to i8**
%14 = load i8** %13, align 8, !alias.scope !1661
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !1658
store i32 0, i32* %54, align 4, !alias.scope !1658
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28: ; preds = %clean_custom_, %cond.i26, %then-block-15297-.i.i27
%17 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%19 = load i8* %18, align 1
%20 = icmp eq i8 %19, -44
br i1 %20, label %cond.i29, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31
cond.i29: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28
%21 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%22 = load i32* %21, align 4, !alias.scope !1664
%23 = icmp eq i32 %22, 0
br i1 %23, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31, label %then-block-15297-.i.i30
then-block-15297-.i.i30: ; preds = %cond.i29
%24 = bitcast %"int::Int"* %1 to i8**
%25 = load i8** %24, align 8, !alias.scope !1667
%26 = zext i32 %22 to i64
%27 = shl nuw nsw i64 %26, 3
tail call void @je_sdallocx(i8* %25, i64 %27, i32 0)
store i32 0, i32* %21, align 4, !alias.scope !1664
store i32 0, i32* %3, align 4, !alias.scope !1664
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit28, %cond.i29, %then-block-15297-.i.i30
%28 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %28)
resume { i8*, i32 } %6
then-block-16387-: ; preds = %entry-block
%29 = bitcast %"int::Int"* %2 to i8*
%30 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %29, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %29, i8 29, i64 24, i32 8, i1 false)
br label %clean_custom_1
clean_custom_1: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit43, %then-block-16397-, %then-block-16387-
%31 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%32 = load i8* %31, align 1
%33 = icmp eq i8 %32, -44
br i1 %33, label %cond.i32, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34
cond.i32: ; preds = %clean_custom_1
%34 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%35 = load i32* %34, align 4, !alias.scope !1670
%36 = icmp eq i32 %35, 0
br i1 %36, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34, label %then-block-15297-.i.i33
then-block-15297-.i.i33: ; preds = %cond.i32
%37 = bitcast %"int::Int"* %2 to i8**
%38 = load i8** %37, align 8, !alias.scope !1673
%39 = zext i32 %35 to i64
%40 = shl nuw nsw i64 %39, 3
tail call void @je_sdallocx(i8* %38, i64 %40, i32 0)
store i32 0, i32* %34, align 4, !alias.scope !1670
%41 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %41, align 4, !alias.scope !1670
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34: ; preds = %clean_custom_1, %cond.i32, %then-block-15297-.i.i33
%42 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %42)
%43 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%44 = load i8* %43, align 1
%45 = icmp eq i8 %44, -44
br i1 %45, label %cond.i35, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
cond.i35: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34
%46 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%47 = load i32* %46, align 4, !alias.scope !1676
%48 = icmp eq i32 %47, 0
br i1 %48, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37, label %then-block-15297-.i.i36
then-block-15297-.i.i36: ; preds = %cond.i35
%49 = bitcast %"int::Int"* %1 to i8**
%50 = load i8** %49, align 8, !alias.scope !1679
%51 = zext i32 %47 to i64
%52 = shl nuw nsw i64 %51, 3
tail call void @je_sdallocx(i8* %50, i64 %52, i32 0)
store i32 0, i32* %46, align 4, !alias.scope !1676
store i32 0, i32* %3, align 4, !alias.scope !1676
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit37: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit34, %cond.i35, %then-block-15297-.i.i36
%53 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %53)
ret void
next-block: ; preds = %entry-block
%54 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%55 = load i32* %54, align 4, !alias.scope !1682
%56 = icmp eq i32 %55, 0
br i1 %56, label %then-block-16397-, label %normal-return5
then-block-16397-: ; preds = %next-block
%57 = bitcast %"int::Int"* %1 to i8*
%58 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %58, i8* %57, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %57, i8 29, i64 24, i32 8, i1 false)
br label %clean_custom_1
normal-return5: ; preds = %next-block
%.sroa.14.0..sroa_idx98 = getelementptr inbounds [7 x i8]* %.sroa.14, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.14.0..sroa_idx98)
%59 = icmp slt i32 %4, 0
%60 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %59, i32 %60, i32 %4
%61 = icmp slt i32 %55, 0
%62 = sub i32 0, %55
%sret_slot.0.i.i44 = select i1 %61, i32 %62, i32 %55
%63 = icmp slt i32 %sret_slot.0.i.i, %sret_slot.0.i.i44
br i1 %63, label %else-block, label %then-block-16412-
then-block-16412-: ; preds = %normal-return5
%64 = bitcast %"int::Int"* %1 to i8*
%.sroa.0.0..sroa_cast78 = bitcast %"int::Int"* %1 to i8**
%.sroa.0.0.copyload79 = load i8** %.sroa.0.0..sroa_cast78, align 8
%.sroa.9.0..sroa_idx86 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%.sroa.9.0.copyload87 = load i32* %.sroa.9.0..sroa_idx86, align 4
%.sroa.12.0..sroa_idx88 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%.sroa.12.0.copyload89 = load i8* %.sroa.12.0..sroa_idx88, align 8
%.sroa.14.0..sroa_raw_idx94 = getelementptr inbounds i8* %64, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_idx98, i8* %.sroa.14.0..sroa_raw_idx94, i64 7, i32 1, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %64, i8 29, i64 24, i32 8, i1 false)
br label %"_ZN53_$LP$int..Int$C$$u20$$RF$$u27$static$u20$int..Int$RP$9drop.977017he9df3e213cef6e68E.exit"
else-block: ; preds = %normal-return5
%65 = bitcast %"int::Int"* %2 to i8*
%.sroa.0.0..sroa_cast77 = bitcast %"int::Int"* %2 to i8**
%.sroa.0.0.copyload = load i8** %.sroa.0.0..sroa_cast77, align 8
%.sroa.9.0..sroa_idx85 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%.sroa.9.0.copyload = load i32* %.sroa.9.0..sroa_idx85, align 4
%.sroa.12.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%.sroa.12.0.copyload = load i8* %.sroa.12.0..sroa_idx, align 8
%.sroa.14.0..sroa_raw_idx = getelementptr inbounds i8* %65, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_idx98, i8* %.sroa.14.0..sroa_raw_idx, i64 7, i32 1, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %65, i8 29, i64 24, i32 8, i1 false)
br label %"_ZN53_$LP$int..Int$C$$u20$$RF$$u27$static$u20$int..Int$RP$9drop.977017he9df3e213cef6e68E.exit"
"_ZN53_$LP$int..Int$C$$u20$$RF$$u27$static$u20$int..Int$RP$9drop.977017he9df3e213cef6e68E.exit": ; preds = %then-block-16412-, %else-block
%.sroa.15.24.107 = phi %"int::Int"* [ %1, %else-block ], [ %2, %then-block-16412- ]
%.sroa.12.0.copyload106 = phi i8 [ %.sroa.12.0.copyload, %else-block ], [ %.sroa.12.0.copyload89, %then-block-16412- ]
%.sroa.9.0.copyload105 = phi i32 [ %.sroa.9.0.copyload, %else-block ], [ %.sroa.9.0.copyload87, %then-block-16412- ]
%.sroa.7.0.copyload104 = phi i32 [ %55, %else-block ], [ %4, %then-block-16412- ]
%.sroa.0.0.103 = phi i8* [ %.sroa.0.0.copyload, %else-block ], [ %.sroa.0.0.copyload79, %then-block-16412- ]
%x.sroa.16.0..sroa_idx = getelementptr inbounds [7 x i8]* %x.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %x.sroa.16.0..sroa_idx)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %x.sroa.16.0..sroa_idx, i8* %.sroa.14.0..sroa_idx98, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.14.0..sroa_idx98)
%66 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %66)
%x.sroa.0.0..sroa_cast47 = bitcast %"int::Int"* %arg to i8**
store i8* %.sroa.0.0.103, i8** %x.sroa.0.0..sroa_cast47, align 8
%x.sroa.8.0..sroa_idx52 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 1
store i32 %.sroa.7.0.copyload104, i32* %x.sroa.8.0..sroa_idx52, align 8
%x.sroa.10.0..sroa_idx57 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 2
store i32 %.sroa.9.0.copyload105, i32* %x.sroa.10.0..sroa_idx57, align 4
%x.sroa.14.0..sroa_idx62 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 3
store i8 %.sroa.12.0.copyload106, i8* %x.sroa.14.0..sroa_idx62, align 8
%x.sroa.16.0..sroa_raw_idx67 = getelementptr inbounds i8* %66, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %x.sroa.16.0..sroa_raw_idx67, i8* %x.sroa.16.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %x.sroa.16.0..sroa_idx, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %.sroa.15.24.107)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit43 unwind label %clean_custom_
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit43: ; preds = %"_ZN53_$LP$int..Int$C$$u20$$RF$$u27$static$u20$int..Int$RP$9drop.977017he9df3e213cef6e68E.exit"
call void @llvm.lifetime.end(i64 24, i8* %66)
call void @llvm.lifetime.end(i64 7, i8* %x.sroa.16.0..sroa_idx)
br label %clean_custom_1
}
; Function Attrs: uwtable
define void @"_ZN3int49_$RF$$u27$b$u20$Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20ha72e7346b591e942freE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = alloca %"int::Int", align 8
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !1685
%7 = icmp eq i32 %6, 0
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%9 = load i32* %8, align 4
%10 = icmp eq i32 %9, 0
br i1 %7, label %then-block-16453-, label %next-block
then-block-16453-: ; preds = %entry-block
br i1 %10, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %then-block-16453-
%11 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %11, align 8, !alias.scope !1688, !noalias !1695
%12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %12, align 8, !alias.scope !1688, !noalias !1695
%13 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %13, align 4, !alias.scope !1688, !noalias !1695
%14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %14, align 8, !alias.scope !1688, !noalias !1695
br label %clean_custom_
next-block.i: ; preds = %then-block-16453-
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%15 = icmp slt i32 %9, 0
%16 = sub i32 0, %9
%sret_slot.0.i.i25.i = select i1 %15, i32 %16, i32 %9
%17 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%18 = zext i32 %sret_slot.0.i.i25.i to i64
%19 = shl nuw nsw i64 %18, 3
%20 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %19), !noalias !1697
%21 = ptrtoint i8* %20 to i64
%22 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%23 = load %"ll::limb::Limb"** %22, align 8, !alias.scope !1700, !noalias !1703
%24 = bitcast %"ll::limb::Limb"* %23 to i8*
%25 = bitcast i8* %20 to %"ll::limb::Limb"*
%26 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %26, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
%29 = add nuw nsw i64 %28, 1
%end.idx206 = add nuw nsw i64 %28, 1
%n.vec208 = and i64 %29, 8589934588
%cmp.zero210 = icmp eq i64 %n.vec208, 0
%30 = add i32 %sret_slot.0.i.i25.i, -1
%31 = zext i32 %30 to i64
br i1 %cmp.zero210, label %middle.block203, label %vector.memcheck219
vector.memcheck219: ; preds = %while_body.lr.ph.i.i
%scevgep213 = getelementptr %"ll::limb::Limb"* %23, i64 %31
%scevgep213214 = bitcast %"ll::limb::Limb"* %scevgep213 to i8*
%bound0215 = icmp ule i8* %20, %scevgep213214
%32 = shl nuw nsw i64 %31, 3
%scevgep212 = getelementptr i8* %20, i64 %32
%bound1216 = icmp ule i8* %24, %scevgep212
%memcheck.conflict218 = and i1 %bound0215, %bound1216
br i1 %memcheck.conflict218, label %middle.block203, label %vector.body202.preheader
vector.body202.preheader: ; preds = %vector.memcheck219
br label %vector.body202
vector.body202: ; preds = %vector.body202.preheader, %vector.body202
%index205 = phi i64 [ %index.next225, %vector.body202 ], [ 0, %vector.body202.preheader ]
%33 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %index205, i32 0
%34 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %index205, i32 0
%35 = bitcast i64* %33 to <2 x i64>*
%wide.load230 = load <2 x i64>* %35, align 8, !noalias !1704
%36 = getelementptr i64* %33, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
%wide.load231 = load <2 x i64>* %37, align 8, !noalias !1704
%38 = bitcast i64* %34 to <2 x i64>*
store <2 x i64> %wide.load230, <2 x i64>* %38, align 8, !noalias !1704
%39 = getelementptr i64* %34, i64 2
%40 = bitcast i64* %39 to <2 x i64>*
store <2 x i64> %wide.load231, <2 x i64>* %40, align 8, !noalias !1704
%index.next225 = add i64 %index205, 4
%41 = icmp eq i64 %index.next225, %n.vec208
br i1 %41, label %middle.block203.loopexit, label %vector.body202, !llvm.loop !1705
middle.block203.loopexit: ; preds = %vector.body202
br label %middle.block203
middle.block203: ; preds = %middle.block203.loopexit, %vector.memcheck219, %while_body.lr.ph.i.i
%resume.val220 = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck219 ], [ %n.vec208, %middle.block203.loopexit ]
%cmp.n224 = icmp eq i64 %end.idx206, %resume.val220
br i1 %cmp.n224, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block203
%42 = trunc i64 %resume.val220 to i32
%43 = sub i32 %sret_slot.0.i.i25.i, %42
%44 = add i32 %sret_slot.0.i.i25.i, -1
%45 = sub i32 %44, %42
%xtraiter = and i32 %43, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val220, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%46 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.i.i.prol, i32 0
%47 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.i.i.prol, i32 0
%48 = load i64* %46, align 8, !noalias !1704
store i64 %48, i64* %47, align 8, !noalias !1704
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %27
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !1706
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val220, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%49 = icmp ult i32 %45, 3
br i1 %49, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%50 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !1704
store i64 %52, i64* %51, align 8, !noalias !1704
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i, i32 0
%55 = load i64* %53, align 8, !noalias !1704
store i64 %55, i64* %54, align 8, !noalias !1704
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i.1, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i.1, i32 0
%58 = load i64* %56, align 8, !noalias !1704
store i64 %58, i64* %57, align 8, !noalias !1704
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%59 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i.2, i32 0
%60 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i.2, i32 0
%61 = load i64* %59, align 8, !noalias !1704
store i64 %61, i64* %60, align 8, !noalias !1704
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %27
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !1707
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i.loopexit, %middle.block203
%.pre.i = load i32* %8, align 4, !alias.scope !1695, !noalias !1703
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i ], [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ]
%new.sroa.0.0.3940.i = phi i64 [ %21, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i ], [ %21, %normal-return3.i ], [ 1, %next-block.i ]
%62 = phi i32 [ %.pre.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i ], [ %9, %normal-return3.i ], [ %9, %next-block.i ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !1703, !noalias !1695
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %62, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !1703, !noalias !1695
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !1703, !noalias !1695
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !1703, !noalias !1695
%new.sroa.16.0..sroa_raw_cast.i = bitcast %"int::Int"* %0 to i8*
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %new.sroa.16.0..sroa_raw_cast.i, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !1695
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i71, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, %then-block-15139-.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit97, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit48
ret void
next-block: ; preds = %entry-block
br i1 %10, label %next-block.i53, label %next-block1
next-block.i53: ; preds = %next-block
%new.sroa.16.0..sroa_idx36.i51 = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i51)
%63 = icmp slt i32 %6, 0
%64 = sub i32 0, %6
%sret_slot.0.i.i25.i52 = select i1 %63, i32 %64, i32 %6
%65 = icmp eq i32 %sret_slot.0.i.i25.i52, 0
br i1 %65, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i71, label %normal-return3.i54
normal-return3.i54: ; preds = %next-block.i53
%66 = zext i32 %sret_slot.0.i.i25.i52 to i64
%67 = shl nuw nsw i64 %66, 3
%68 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %67), !noalias !1708
%69 = ptrtoint i8* %68 to i64
%70 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%71 = load %"ll::limb::Limb"** %70, align 8, !alias.scope !1714, !noalias !1717
%72 = bitcast %"ll::limb::Limb"* %71 to i8*
%73 = bitcast i8* %68 to %"ll::limb::Limb"*
%74 = icmp sgt i32 %sret_slot.0.i.i25.i52, 0
br i1 %74, label %while_body.lr.ph.i.i55, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i71
while_body.lr.ph.i.i55: ; preds = %normal-return3.i54
%75 = add i32 %sret_slot.0.i.i25.i52, -1
%76 = zext i32 %75 to i64
%77 = add nuw nsw i64 %76, 1
%end.idx167 = add nuw nsw i64 %76, 1
%n.vec169 = and i64 %77, 8589934588
%cmp.zero171 = icmp eq i64 %n.vec169, 0
%78 = add i32 %sret_slot.0.i.i25.i52, -1
%79 = zext i32 %78 to i64
br i1 %cmp.zero171, label %middle.block164, label %vector.memcheck180
vector.memcheck180: ; preds = %while_body.lr.ph.i.i55
%scevgep174 = getelementptr %"ll::limb::Limb"* %71, i64 %79
%scevgep174175 = bitcast %"ll::limb::Limb"* %scevgep174 to i8*
%bound0176 = icmp ule i8* %68, %scevgep174175
%80 = shl nuw nsw i64 %79, 3
%scevgep173 = getelementptr i8* %68, i64 %80
%bound1177 = icmp ule i8* %72, %scevgep173
%memcheck.conflict179 = and i1 %bound0176, %bound1177
br i1 %memcheck.conflict179, label %middle.block164, label %vector.body163.preheader
vector.body163.preheader: ; preds = %vector.memcheck180
br label %vector.body163
vector.body163: ; preds = %vector.body163.preheader, %vector.body163
%index166 = phi i64 [ %index.next186, %vector.body163 ], [ 0, %vector.body163.preheader ]
%81 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %index166, i32 0
%82 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %index166, i32 0
%83 = bitcast i64* %81 to <2 x i64>*
%wide.load191 = load <2 x i64>* %83, align 8, !noalias !1718
%84 = getelementptr i64* %81, i64 2
%85 = bitcast i64* %84 to <2 x i64>*
%wide.load192 = load <2 x i64>* %85, align 8, !noalias !1718
%86 = bitcast i64* %82 to <2 x i64>*
store <2 x i64> %wide.load191, <2 x i64>* %86, align 8, !noalias !1718
%87 = getelementptr i64* %82, i64 2
%88 = bitcast i64* %87 to <2 x i64>*
store <2 x i64> %wide.load192, <2 x i64>* %88, align 8, !noalias !1718
%index.next186 = add i64 %index166, 4
%89 = icmp eq i64 %index.next186, %n.vec169
br i1 %89, label %middle.block164.loopexit, label %vector.body163, !llvm.loop !1719
middle.block164.loopexit: ; preds = %vector.body163
br label %middle.block164
middle.block164: ; preds = %middle.block164.loopexit, %vector.memcheck180, %while_body.lr.ph.i.i55
%resume.val181 = phi i64 [ 0, %while_body.lr.ph.i.i55 ], [ 0, %vector.memcheck180 ], [ %n.vec169, %middle.block164.loopexit ]
%cmp.n185 = icmp eq i64 %end.idx167, %resume.val181
br i1 %cmp.n185, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62, label %while_body.i.i60.preheader
while_body.i.i60.preheader: ; preds = %middle.block164
%90 = trunc i64 %resume.val181 to i32
%91 = sub i32 %sret_slot.0.i.i25.i52, %90
%92 = add i32 %sret_slot.0.i.i25.i52, -1
%93 = sub i32 %92, %90
%xtraiter238 = and i32 %91, 3
%lcmp.mod239 = icmp ne i32 %xtraiter238, 0
br i1 %lcmp.mod239, label %while_body.i.i60.prol, label %while_body.i.i60.preheader.split
while_body.i.i60.prol: ; preds = %while_body.i.i60.prol, %while_body.i.i60.preheader
%indvars.iv.i.i56.prol = phi i64 [ %indvars.iv.next.i.i57.prol, %while_body.i.i60.prol ], [ %resume.val181, %while_body.i.i60.preheader ]
%prol.iter240 = phi i32 [ %xtraiter238, %while_body.i.i60.preheader ], [ %prol.iter240.sub, %while_body.i.i60.prol ]
%94 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.i.i56.prol, i32 0
%95 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %indvars.iv.i.i56.prol, i32 0
%96 = load i64* %94, align 8, !noalias !1718
store i64 %96, i64* %95, align 8, !noalias !1718
%indvars.iv.next.i.i57.prol = add nuw nsw i64 %indvars.iv.i.i56.prol, 1
%lftr.wideiv105.prol = trunc i64 %indvars.iv.i.i56.prol to i32
%exitcond106.prol = icmp eq i32 %lftr.wideiv105.prol, %75
%prol.iter240.sub = sub i32 %prol.iter240, 1
%prol.iter240.cmp = icmp ne i32 %prol.iter240.sub, 0
br i1 %prol.iter240.cmp, label %while_body.i.i60.prol, label %while_body.i.i60.preheader.split, !llvm.loop !1720
while_body.i.i60.preheader.split: ; preds = %while_body.i.i60.prol, %while_body.i.i60.preheader
%indvars.iv.i.i56.unr = phi i64 [ %resume.val181, %while_body.i.i60.preheader ], [ %indvars.iv.next.i.i57.prol, %while_body.i.i60.prol ]
%97 = icmp ult i32 %93, 3
br i1 %97, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit, label %while_body.i.i60.preheader.split.split
while_body.i.i60.preheader.split.split: ; preds = %while_body.i.i60.preheader.split
br label %while_body.i.i60
while_body.i.i60: ; preds = %while_body.i.i60, %while_body.i.i60.preheader.split.split
%indvars.iv.i.i56 = phi i64 [ %indvars.iv.i.i56.unr, %while_body.i.i60.preheader.split.split ], [ %indvars.iv.next.i.i57.3, %while_body.i.i60 ]
%98 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.i.i56, i32 0
%99 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %indvars.iv.i.i56, i32 0
%100 = load i64* %98, align 8, !noalias !1718
store i64 %100, i64* %99, align 8, !noalias !1718
%indvars.iv.next.i.i57 = add nuw nsw i64 %indvars.iv.i.i56, 1
%lftr.wideiv105 = trunc i64 %indvars.iv.i.i56 to i32
%101 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i57, i32 0
%102 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %indvars.iv.next.i.i57, i32 0
%103 = load i64* %101, align 8, !noalias !1718
store i64 %103, i64* %102, align 8, !noalias !1718
%indvars.iv.next.i.i57.1 = add nuw nsw i64 %indvars.iv.next.i.i57, 1
%lftr.wideiv105.1 = trunc i64 %indvars.iv.next.i.i57 to i32
%104 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i57.1, i32 0
%105 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %indvars.iv.next.i.i57.1, i32 0
%106 = load i64* %104, align 8, !noalias !1718
store i64 %106, i64* %105, align 8, !noalias !1718
%indvars.iv.next.i.i57.2 = add nuw nsw i64 %indvars.iv.next.i.i57.1, 1
%lftr.wideiv105.2 = trunc i64 %indvars.iv.next.i.i57.1 to i32
%107 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i57.2, i32 0
%108 = getelementptr inbounds %"ll::limb::Limb"* %73, i64 %indvars.iv.next.i.i57.2, i32 0
%109 = load i64* %107, align 8, !noalias !1718
store i64 %109, i64* %108, align 8, !noalias !1718
%indvars.iv.next.i.i57.3 = add nuw nsw i64 %indvars.iv.next.i.i57.2, 1
%lftr.wideiv105.3 = trunc i64 %indvars.iv.next.i.i57.2 to i32
%exitcond106.3 = icmp eq i32 %lftr.wideiv105.3, %75
br i1 %exitcond106.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit.unr-lcssa, label %while_body.i.i60, !llvm.loop !1721
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit.unr-lcssa: ; preds = %while_body.i.i60
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit: ; preds = %while_body.i.i60.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62.loopexit, %middle.block164
%.pre.i61 = load i32* %5, align 4, !alias.scope !1722, !noalias !1717
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i71
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i71: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62, %normal-return3.i54, %next-block.i53
%.sink.i41.i63 = phi i32 [ %sret_slot.0.i.i25.i52, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62 ], [ %sret_slot.0.i.i25.i52, %normal-return3.i54 ], [ 0, %next-block.i53 ]
%new.sroa.0.0.3940.i64 = phi i64 [ %69, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62 ], [ %69, %normal-return3.i54 ], [ 1, %next-block.i53 ]
%110 = phi i32 [ %.pre.i61, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i62 ], [ %6, %normal-return3.i54 ], [ %6, %next-block.i53 ]
%new.sroa.0.0..sroa_cast27.i65 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i64, i64* %new.sroa.0.0..sroa_cast27.i65, align 8, !alias.scope !1717, !noalias !1722
%new.sroa.8.0..sroa_idx29.i66 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %110, i32* %new.sroa.8.0..sroa_idx29.i66, align 8, !alias.scope !1717, !noalias !1722
%new.sroa.11.0..sroa_idx31.i67 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i63, i32* %new.sroa.11.0..sroa_idx31.i67, align 4, !alias.scope !1717, !noalias !1722
%new.sroa.14.0..sroa_idx.i68 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i68, align 8, !alias.scope !1717, !noalias !1722
%new.sroa.16.0..sroa_raw_cast.i69 = bitcast %"int::Int"* %0 to i8*
%new.sroa.16.0..sroa_raw_idx.i70 = getelementptr inbounds i8* %new.sroa.16.0..sroa_raw_cast.i69, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i70, i8* %new.sroa.16.0..sroa_idx36.i51, i64 7, i32 1, i1 false), !noalias !1722
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i51)
br label %clean_custom_
next-block1: ; preds = %next-block
%111 = icmp slt i32 %6, 0
%112 = sub i32 0, %6
%sret_slot.0.i.i = select i1 %111, i32 %112, i32 %6
%113 = icmp slt i32 %9, 0
%114 = sub i32 0, %9
%sret_slot.0.i.i73 = select i1 %113, i32 %114, i32 %9
%115 = icmp slt i32 %sret_slot.0.i.i, %sret_slot.0.i.i73
br i1 %115, label %next-block.i29, label %next-block.i78
next-block.i78: ; preds = %next-block1
%116 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %116)
%new.sroa.16.0..sroa_idx36.i76 = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i76)
%117 = icmp eq i32 %sret_slot.0.i.i, 0
br i1 %117, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit97, label %normal-return3.i79
normal-return3.i79: ; preds = %next-block.i78
%118 = zext i32 %sret_slot.0.i.i to i64
%119 = shl nuw nsw i64 %118, 3
%120 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %119), !noalias !1723
%121 = ptrtoint i8* %120 to i64
%122 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%123 = load %"ll::limb::Limb"** %122, align 8, !alias.scope !1729, !noalias !1732
%124 = bitcast %"ll::limb::Limb"* %123 to i8*
%125 = bitcast i8* %120 to %"ll::limb::Limb"*
%126 = icmp sgt i32 %sret_slot.0.i.i, 0
br i1 %126, label %while_body.lr.ph.i.i80, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit97
while_body.lr.ph.i.i80: ; preds = %normal-return3.i79
%127 = add i32 %sret_slot.0.i.i, -1
%128 = zext i32 %127 to i64
%129 = add nuw nsw i64 %128, 1
%end.idx = add nuw nsw i64 %128, 1
%n.vec = and i64 %129, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%130 = add i32 %sret_slot.0.i.i, -1
%131 = zext i32 %130 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i80
%scevgep111 = getelementptr %"ll::limb::Limb"* %123, i64 %131
%scevgep111112 = bitcast %"ll::limb::Limb"* %scevgep111 to i8*
%bound0 = icmp ule i8* %120, %scevgep111112
%132 = shl nuw nsw i64 %131, 3
%scevgep = getelementptr i8* %120, i64 %132
%bound1 = icmp ule i8* %124, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%133 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %index, i32 0
%134 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %index, i32 0
%135 = bitcast i64* %133 to <2 x i64>*
%wide.load = load <2 x i64>* %135, align 8, !noalias !1733
%136 = getelementptr i64* %133, i64 2
%137 = bitcast i64* %136 to <2 x i64>*
%wide.load114 = load <2 x i64>* %137, align 8, !noalias !1733
%138 = bitcast i64* %134 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %138, align 8, !noalias !1733
%139 = getelementptr i64* %134, i64 2
%140 = bitcast i64* %139 to <2 x i64>*
store <2 x i64> %wide.load114, <2 x i64>* %140, align 8, !noalias !1733
%index.next = add i64 %index, 4
%141 = icmp eq i64 %index.next, %n.vec
br i1 %141, label %middle.block.loopexit, label %vector.body, !llvm.loop !1734
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i80
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i80 ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87, label %while_body.i.i85.preheader
while_body.i.i85.preheader: ; preds = %middle.block
%142 = trunc i64 %resume.val to i32
%143 = sub i32 %sret_slot.0.i.i, %142
%144 = add i32 %sret_slot.0.i.i, -1
%145 = sub i32 %144, %142
%xtraiter244 = and i32 %143, 3
%lcmp.mod245 = icmp ne i32 %xtraiter244, 0
br i1 %lcmp.mod245, label %while_body.i.i85.prol, label %while_body.i.i85.preheader.split
while_body.i.i85.prol: ; preds = %while_body.i.i85.prol, %while_body.i.i85.preheader
%indvars.iv.i.i81.prol = phi i64 [ %indvars.iv.next.i.i82.prol, %while_body.i.i85.prol ], [ %resume.val, %while_body.i.i85.preheader ]
%prol.iter246 = phi i32 [ %xtraiter244, %while_body.i.i85.preheader ], [ %prol.iter246.sub, %while_body.i.i85.prol ]
%146 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %indvars.iv.i.i81.prol, i32 0
%147 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %indvars.iv.i.i81.prol, i32 0
%148 = load i64* %146, align 8, !noalias !1733
store i64 %148, i64* %147, align 8, !noalias !1733
%indvars.iv.next.i.i82.prol = add nuw nsw i64 %indvars.iv.i.i81.prol, 1
%lftr.wideiv109.prol = trunc i64 %indvars.iv.i.i81.prol to i32
%exitcond110.prol = icmp eq i32 %lftr.wideiv109.prol, %127
%prol.iter246.sub = sub i32 %prol.iter246, 1
%prol.iter246.cmp = icmp ne i32 %prol.iter246.sub, 0
br i1 %prol.iter246.cmp, label %while_body.i.i85.prol, label %while_body.i.i85.preheader.split, !llvm.loop !1735
while_body.i.i85.preheader.split: ; preds = %while_body.i.i85.prol, %while_body.i.i85.preheader
%indvars.iv.i.i81.unr = phi i64 [ %resume.val, %while_body.i.i85.preheader ], [ %indvars.iv.next.i.i82.prol, %while_body.i.i85.prol ]
%149 = icmp ult i32 %145, 3
br i1 %149, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit, label %while_body.i.i85.preheader.split.split
while_body.i.i85.preheader.split.split: ; preds = %while_body.i.i85.preheader.split
br label %while_body.i.i85
while_body.i.i85: ; preds = %while_body.i.i85, %while_body.i.i85.preheader.split.split
%indvars.iv.i.i81 = phi i64 [ %indvars.iv.i.i81.unr, %while_body.i.i85.preheader.split.split ], [ %indvars.iv.next.i.i82.3, %while_body.i.i85 ]
%150 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %indvars.iv.i.i81, i32 0
%151 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %indvars.iv.i.i81, i32 0
%152 = load i64* %150, align 8, !noalias !1733
store i64 %152, i64* %151, align 8, !noalias !1733
%indvars.iv.next.i.i82 = add nuw nsw i64 %indvars.iv.i.i81, 1
%lftr.wideiv109 = trunc i64 %indvars.iv.i.i81 to i32
%153 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %indvars.iv.next.i.i82, i32 0
%154 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %indvars.iv.next.i.i82, i32 0
%155 = load i64* %153, align 8, !noalias !1733
store i64 %155, i64* %154, align 8, !noalias !1733
%indvars.iv.next.i.i82.1 = add nuw nsw i64 %indvars.iv.next.i.i82, 1
%lftr.wideiv109.1 = trunc i64 %indvars.iv.next.i.i82 to i32
%156 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %indvars.iv.next.i.i82.1, i32 0
%157 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %indvars.iv.next.i.i82.1, i32 0
%158 = load i64* %156, align 8, !noalias !1733
store i64 %158, i64* %157, align 8, !noalias !1733
%indvars.iv.next.i.i82.2 = add nuw nsw i64 %indvars.iv.next.i.i82.1, 1
%lftr.wideiv109.2 = trunc i64 %indvars.iv.next.i.i82.1 to i32
%159 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 %indvars.iv.next.i.i82.2, i32 0
%160 = getelementptr inbounds %"ll::limb::Limb"* %125, i64 %indvars.iv.next.i.i82.2, i32 0
%161 = load i64* %159, align 8, !noalias !1733
store i64 %161, i64* %160, align 8, !noalias !1733
%indvars.iv.next.i.i82.3 = add nuw nsw i64 %indvars.iv.next.i.i82.2, 1
%lftr.wideiv109.3 = trunc i64 %indvars.iv.next.i.i82.2 to i32
%exitcond110.3 = icmp eq i32 %lftr.wideiv109.3, %127
br i1 %exitcond110.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit.unr-lcssa, label %while_body.i.i85, !llvm.loop !1736
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit.unr-lcssa: ; preds = %while_body.i.i85
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit: ; preds = %while_body.i.i85.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87.loopexit, %middle.block
%.pre.i86 = load i32* %5, align 4, !alias.scope !1737, !noalias !1732
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit97
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit97: ; preds = %next-block.i78, %normal-return3.i79, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87
%.sink.i41.i88 = phi i32 [ %sret_slot.0.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87 ], [ %sret_slot.0.i.i, %normal-return3.i79 ], [ 0, %next-block.i78 ]
%new.sroa.0.0.3940.i89 = phi i64 [ %121, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87 ], [ %121, %normal-return3.i79 ], [ 1, %next-block.i78 ]
%162 = phi i32 [ %.pre.i86, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i87 ], [ %6, %normal-return3.i79 ], [ %6, %next-block.i78 ]
%new.sroa.0.0..sroa_cast27.i90 = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i89, i64* %new.sroa.0.0..sroa_cast27.i90, align 8, !alias.scope !1732, !noalias !1737
%new.sroa.8.0..sroa_idx29.i91 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %162, i32* %new.sroa.8.0..sroa_idx29.i91, align 8, !alias.scope !1732, !noalias !1737
%new.sroa.11.0..sroa_idx31.i92 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i88, i32* %new.sroa.11.0..sroa_idx31.i92, align 4, !alias.scope !1732, !noalias !1737
%new.sroa.14.0..sroa_idx.i93 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i93, align 8, !alias.scope !1732, !noalias !1737
%new.sroa.16.0..sroa_raw_idx.i95 = getelementptr inbounds i8* %116, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i95, i8* %new.sroa.16.0..sroa_idx36.i76, i64 7, i32 1, i1 false), !noalias !1737
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i76)
call void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2)
call void @llvm.lifetime.end(i64 24, i8* %116)
br label %clean_custom_
next-block.i29: ; preds = %next-block1
%163 = bitcast %"int::Int"* %4 to i8*
call void @llvm.lifetime.start(i64 24, i8* %163)
%new.sroa.16.0..sroa_idx36.i27 = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i27)
%164 = icmp eq i32 %sret_slot.0.i.i73, 0
br i1 %164, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit48, label %normal-return3.i30
normal-return3.i30: ; preds = %next-block.i29
%165 = zext i32 %sret_slot.0.i.i73 to i64
%166 = shl nuw nsw i64 %165, 3
%167 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %166), !noalias !1738
%168 = ptrtoint i8* %167 to i64
%169 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%170 = load %"ll::limb::Limb"** %169, align 8, !alias.scope !1744, !noalias !1747
%171 = bitcast %"ll::limb::Limb"* %170 to i8*
%172 = bitcast i8* %167 to %"ll::limb::Limb"*
%173 = icmp sgt i32 %sret_slot.0.i.i73, 0
br i1 %173, label %while_body.lr.ph.i.i31, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit48
while_body.lr.ph.i.i31: ; preds = %normal-return3.i30
%174 = add i32 %sret_slot.0.i.i73, -1
%175 = zext i32 %174 to i64
%176 = add nuw nsw i64 %175, 1
%end.idx128 = add nuw nsw i64 %175, 1
%n.vec130 = and i64 %176, 8589934588
%cmp.zero132 = icmp eq i64 %n.vec130, 0
%177 = add i32 %sret_slot.0.i.i73, -1
%178 = zext i32 %177 to i64
br i1 %cmp.zero132, label %middle.block125, label %vector.memcheck141
vector.memcheck141: ; preds = %while_body.lr.ph.i.i31
%scevgep135 = getelementptr %"ll::limb::Limb"* %170, i64 %178
%scevgep135136 = bitcast %"ll::limb::Limb"* %scevgep135 to i8*
%bound0137 = icmp ule i8* %167, %scevgep135136
%179 = shl nuw nsw i64 %178, 3
%scevgep134 = getelementptr i8* %167, i64 %179
%bound1138 = icmp ule i8* %171, %scevgep134
%memcheck.conflict140 = and i1 %bound0137, %bound1138
br i1 %memcheck.conflict140, label %middle.block125, label %vector.body124.preheader
vector.body124.preheader: ; preds = %vector.memcheck141
br label %vector.body124
vector.body124: ; preds = %vector.body124.preheader, %vector.body124
%index127 = phi i64 [ %index.next147, %vector.body124 ], [ 0, %vector.body124.preheader ]
%180 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %index127, i32 0
%181 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %index127, i32 0
%182 = bitcast i64* %180 to <2 x i64>*
%wide.load152 = load <2 x i64>* %182, align 8, !noalias !1748
%183 = getelementptr i64* %180, i64 2
%184 = bitcast i64* %183 to <2 x i64>*
%wide.load153 = load <2 x i64>* %184, align 8, !noalias !1748
%185 = bitcast i64* %181 to <2 x i64>*
store <2 x i64> %wide.load152, <2 x i64>* %185, align 8, !noalias !1748
%186 = getelementptr i64* %181, i64 2
%187 = bitcast i64* %186 to <2 x i64>*
store <2 x i64> %wide.load153, <2 x i64>* %187, align 8, !noalias !1748
%index.next147 = add i64 %index127, 4
%188 = icmp eq i64 %index.next147, %n.vec130
br i1 %188, label %middle.block125.loopexit, label %vector.body124, !llvm.loop !1749
middle.block125.loopexit: ; preds = %vector.body124
br label %middle.block125
middle.block125: ; preds = %middle.block125.loopexit, %vector.memcheck141, %while_body.lr.ph.i.i31
%resume.val142 = phi i64 [ 0, %while_body.lr.ph.i.i31 ], [ 0, %vector.memcheck141 ], [ %n.vec130, %middle.block125.loopexit ]
%cmp.n146 = icmp eq i64 %end.idx128, %resume.val142
br i1 %cmp.n146, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38, label %while_body.i.i36.preheader
while_body.i.i36.preheader: ; preds = %middle.block125
%189 = trunc i64 %resume.val142 to i32
%190 = sub i32 %sret_slot.0.i.i73, %189
%191 = add i32 %sret_slot.0.i.i73, -1
%192 = sub i32 %191, %189
%xtraiter241 = and i32 %190, 3
%lcmp.mod242 = icmp ne i32 %xtraiter241, 0
br i1 %lcmp.mod242, label %while_body.i.i36.prol, label %while_body.i.i36.preheader.split
while_body.i.i36.prol: ; preds = %while_body.i.i36.prol, %while_body.i.i36.preheader
%indvars.iv.i.i32.prol = phi i64 [ %indvars.iv.next.i.i33.prol, %while_body.i.i36.prol ], [ %resume.val142, %while_body.i.i36.preheader ]
%prol.iter243 = phi i32 [ %xtraiter241, %while_body.i.i36.preheader ], [ %prol.iter243.sub, %while_body.i.i36.prol ]
%193 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %indvars.iv.i.i32.prol, i32 0
%194 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %indvars.iv.i.i32.prol, i32 0
%195 = load i64* %193, align 8, !noalias !1748
store i64 %195, i64* %194, align 8, !noalias !1748
%indvars.iv.next.i.i33.prol = add nuw nsw i64 %indvars.iv.i.i32.prol, 1
%lftr.wideiv107.prol = trunc i64 %indvars.iv.i.i32.prol to i32
%exitcond108.prol = icmp eq i32 %lftr.wideiv107.prol, %174
%prol.iter243.sub = sub i32 %prol.iter243, 1
%prol.iter243.cmp = icmp ne i32 %prol.iter243.sub, 0
br i1 %prol.iter243.cmp, label %while_body.i.i36.prol, label %while_body.i.i36.preheader.split, !llvm.loop !1750
while_body.i.i36.preheader.split: ; preds = %while_body.i.i36.prol, %while_body.i.i36.preheader
%indvars.iv.i.i32.unr = phi i64 [ %resume.val142, %while_body.i.i36.preheader ], [ %indvars.iv.next.i.i33.prol, %while_body.i.i36.prol ]
%196 = icmp ult i32 %192, 3
br i1 %196, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit, label %while_body.i.i36.preheader.split.split
while_body.i.i36.preheader.split.split: ; preds = %while_body.i.i36.preheader.split
br label %while_body.i.i36
while_body.i.i36: ; preds = %while_body.i.i36, %while_body.i.i36.preheader.split.split
%indvars.iv.i.i32 = phi i64 [ %indvars.iv.i.i32.unr, %while_body.i.i36.preheader.split.split ], [ %indvars.iv.next.i.i33.3, %while_body.i.i36 ]
%197 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %indvars.iv.i.i32, i32 0
%198 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %indvars.iv.i.i32, i32 0
%199 = load i64* %197, align 8, !noalias !1748
store i64 %199, i64* %198, align 8, !noalias !1748
%indvars.iv.next.i.i33 = add nuw nsw i64 %indvars.iv.i.i32, 1
%lftr.wideiv107 = trunc i64 %indvars.iv.i.i32 to i32
%200 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %indvars.iv.next.i.i33, i32 0
%201 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %indvars.iv.next.i.i33, i32 0
%202 = load i64* %200, align 8, !noalias !1748
store i64 %202, i64* %201, align 8, !noalias !1748
%indvars.iv.next.i.i33.1 = add nuw nsw i64 %indvars.iv.next.i.i33, 1
%lftr.wideiv107.1 = trunc i64 %indvars.iv.next.i.i33 to i32
%203 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %indvars.iv.next.i.i33.1, i32 0
%204 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %indvars.iv.next.i.i33.1, i32 0
%205 = load i64* %203, align 8, !noalias !1748
store i64 %205, i64* %204, align 8, !noalias !1748
%indvars.iv.next.i.i33.2 = add nuw nsw i64 %indvars.iv.next.i.i33.1, 1
%lftr.wideiv107.2 = trunc i64 %indvars.iv.next.i.i33.1 to i32
%206 = getelementptr inbounds %"ll::limb::Limb"* %170, i64 %indvars.iv.next.i.i33.2, i32 0
%207 = getelementptr inbounds %"ll::limb::Limb"* %172, i64 %indvars.iv.next.i.i33.2, i32 0
%208 = load i64* %206, align 8, !noalias !1748
store i64 %208, i64* %207, align 8, !noalias !1748
%indvars.iv.next.i.i33.3 = add nuw nsw i64 %indvars.iv.next.i.i33.2, 1
%lftr.wideiv107.3 = trunc i64 %indvars.iv.next.i.i33.2 to i32
%exitcond108.3 = icmp eq i32 %lftr.wideiv107.3, %174
br i1 %exitcond108.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit.unr-lcssa, label %while_body.i.i36, !llvm.loop !1751
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit.unr-lcssa: ; preds = %while_body.i.i36
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit: ; preds = %while_body.i.i36.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38.loopexit, %middle.block125
%.pre.i37 = load i32* %8, align 4, !alias.scope !1752, !noalias !1747
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit48
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit48: ; preds = %next-block.i29, %normal-return3.i30, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38
%.sink.i41.i39 = phi i32 [ %sret_slot.0.i.i73, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38 ], [ %sret_slot.0.i.i73, %normal-return3.i30 ], [ 0, %next-block.i29 ]
%new.sroa.0.0.3940.i40 = phi i64 [ %168, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38 ], [ %168, %normal-return3.i30 ], [ 1, %next-block.i29 ]
%209 = phi i32 [ %.pre.i37, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.loopexit.i38 ], [ %9, %normal-return3.i30 ], [ %9, %next-block.i29 ]
%new.sroa.0.0..sroa_cast27.i41 = bitcast %"int::Int"* %4 to i64*
store i64 %new.sroa.0.0.3940.i40, i64* %new.sroa.0.0..sroa_cast27.i41, align 8, !alias.scope !1747, !noalias !1752
%new.sroa.8.0..sroa_idx29.i42 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 1
store i32 %209, i32* %new.sroa.8.0..sroa_idx29.i42, align 8, !alias.scope !1747, !noalias !1752
%new.sroa.11.0..sroa_idx31.i43 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 2
store i32 %.sink.i41.i39, i32* %new.sroa.11.0..sroa_idx31.i43, align 4, !alias.scope !1747, !noalias !1752
%new.sroa.14.0..sroa_idx.i44 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i44, align 8, !alias.scope !1747, !noalias !1752
%new.sroa.16.0..sroa_raw_idx.i46 = getelementptr inbounds i8* %163, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i46, i8* %new.sroa.16.0..sroa_idx36.i27, i64 7, i32 1, i1 false), !noalias !1752
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i27)
call void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %4, %"int::Int"* noalias readonly dereferenceable(24) %1)
call void @llvm.lifetime.end(i64 24, i8* %163)
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
normal-return:
%new.sroa.14 = alloca [7 x i8], align 1
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-16543-, label %next-block
unwind_custom_: ; preds = %then-block-16553-, %then-block-16636-
%4 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%6 = load i8* %5, align 1
%7 = icmp eq i8 %6, -44
br i1 %7, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%8 = load i32* %20, align 4, !alias.scope !1753
%9 = icmp eq i32 %8, 0
br i1 %9, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%10 = bitcast %"int::Int"* %1 to i8**
%11 = load i8** %10, align 8, !alias.scope !1756
%12 = zext i32 %8 to i64
%13 = shl nuw nsw i64 %12, 3
tail call void @je_sdallocx(i8* %11, i64 %13, i32 0)
store i32 0, i32* %20, align 4, !alias.scope !1753
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %14, align 4, !alias.scope !1753
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%15 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %15)
resume { i8*, i32 } %4
then-block-16543-: ; preds = %normal-return
%16 = bitcast %"int::Int"* %1 to i8*
%17 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %17, i8* %16, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %16, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit40
clean_custom_1: ; preds = %then-block-16553-
%18 = ptrtoint i8* %23 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %23 to i64*
store i64 %2, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !1759
%new.sroa.0.0..sroa_cast56 = bitcast %"int::Int"* %0 to i64*
store i64 %18, i64* %new.sroa.0.0..sroa_cast56, align 8
%new.sroa.6.0..sroa_idx58 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 -1, i32* %new.sroa.6.0..sroa_idx58, align 8
%new.sroa.9.0..sroa_idx60 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 1, i32* %new.sroa.9.0..sroa_idx60, align 4
%new.sroa.12.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %new.sroa.12.0..sroa_idx, align 8
%new.sroa.14.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%new.sroa.14.0..sroa_raw_idx = getelementptr inbounds i8* %new.sroa.14.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.14.0..sroa_raw_idx, i8* %new.sroa.14.0..sroa_idx65, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.14.0..sroa_idx65)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit40
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit40: ; preds = %clean_custom_1, %then-block-16543-, %normal-return4, %join
%19 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %19)
ret void
next-block: ; preds = %normal-return
%20 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%21 = load i32* %20, align 4
%22 = icmp eq i32 %21, 0
br i1 %22, label %then-block-16553-, label %next-block3
then-block-16553-: ; preds = %next-block
%new.sroa.14.0..sroa_idx65 = getelementptr inbounds [7 x i8]* %new.sroa.14, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.14.0..sroa_idx65)
%23 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %clean_custom_1 unwind label %unwind_custom_
next-block3: ; preds = %next-block
%24 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%25 = load i32* %24, align 4
%26 = icmp eq i32 %25, 0
br i1 %26, label %normal-return4, label %normal-return8
normal-return4: ; preds = %next-block3
%27 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%28 = load %"ll::limb::Limb"** %27, align 8, !alias.scope !1762
%29 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 0, i32 0
store i64 %2, i64* %29, align 8
store i32 -1, i32* %24, align 4
%30 = bitcast %"int::Int"* %1 to i8*
%31 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %31, i8* %30, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %30, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit40
normal-return8: ; preds = %next-block3
%32 = ashr i32 %25, 31
%33 = or i32 %32, 1
%34 = icmp slt i32 %25, 0
%35 = sub i32 0, %25
%sret_slot.0.i.i52 = select i1 %34, i32 %35, i32 %25
%36 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%37 = load %"ll::limb::Limb"** %36, align 8, !alias.scope !1765
%38 = icmp eq i32 %33, -1
%39 = icmp sgt i32 %sret_slot.0.i.i52, 0
br i1 %38, label %then-block-16622-, label %else-block
then-block-16622-: ; preds = %normal-return8
br i1 %39, label %then-block-839-.i, label %join
then-block-839-.i: ; preds = %then-block-16622-
%40 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%41 = load i64* %40, align 8
%42 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %41, i64 %2) #20
%43 = extractvalue { i64, i1 } %42, 0
%44 = extractvalue { i64, i1 } %42, 1
store i64 %43, i64* %40, align 8
br i1 %44, label %while_body.lr.ph.i45, label %join
while_body.lr.ph.i45: ; preds = %then-block-839-.i
%45 = sext i32 %sret_slot.0.i.i52 to i64
br label %while_body.i47
while_body.i47: ; preds = %next-block.i51, %while_body.lr.ph.i45
%indvars.iv.i46 = phi i64 [ %indvars.iv.next.i50, %next-block.i51 ], [ 1, %while_body.lr.ph.i45 ]
%46 = icmp slt i64 %indvars.iv.i46, %45
br i1 %46, label %next-block.i51, label %then-block-16636-
next-block.i51: ; preds = %while_body.i47
%47 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 %indvars.iv.i46, i32 0
%48 = load i64* %47, align 8
%49 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %48, i64 1) #20
%50 = extractvalue { i64, i1 } %49, 0
%51 = extractvalue { i64, i1 } %49, 1
store i64 %50, i64* %47, align 8
%indvars.iv.next.i50 = add nuw nsw i64 %indvars.iv.i46, 1
br i1 %51, label %while_body.i47, label %join.loopexit
then-block-16636-: ; preds = %while_body.i47
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 1)
to label %join unwind label %unwind_custom_
else-block: ; preds = %normal-return8
br i1 %39, label %then-block-934-.i, label %join.lr.ph.i
then-block-934-.i: ; preds = %else-block
%52 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 0, i32 0
%53 = load i64* %52, align 8
%54 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %53, i64 %2) #20
%55 = extractvalue { i64, i1 } %54, 0
%56 = extractvalue { i64, i1 } %54, 1
store i64 %55, i64* %52, align 8
br i1 %56, label %while_body.lr.ph.i, label %join.lr.ph.i
while_body.lr.ph.i: ; preds = %then-block-934-.i
%57 = sext i32 %sret_slot.0.i.i52 to i64
br label %while_body.i37
while_body.i37: ; preds = %next-block.i, %while_body.lr.ph.i
%indvars.iv.i = phi i64 [ %indvars.iv.next.i, %next-block.i ], [ 1, %while_body.lr.ph.i ]
%58 = icmp slt i64 %indvars.iv.i, %57
br i1 %58, label %next-block.i, label %join.lr.ph.i.loopexit
next-block.i: ; preds = %while_body.i37
%59 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 %indvars.iv.i, i32 0
%60 = load i64* %59, align 8
%61 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %60, i64 1) #20
%62 = extractvalue { i64, i1 } %61, 0
%63 = extractvalue { i64, i1 } %61, 1
store i64 %62, i64* %59, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
br i1 %63, label %while_body.i37, label %join.lr.ph.i.loopexit
join.lr.ph.i.loopexit: ; preds = %next-block.i, %while_body.i37
%sret_slot.sroa.0.0.i.ph = phi i64 [ 0, %next-block.i ], [ 1, %while_body.i37 ]
br label %join.lr.ph.i
join.lr.ph.i: ; preds = %join.lr.ph.i.loopexit, %else-block, %then-block-934-.i
%sret_slot.sroa.0.0.i = phi i64 [ 0, %else-block ], [ 0, %then-block-934-.i ], [ %sret_slot.sroa.0.0.i.ph, %join.lr.ph.i.loopexit ]
br label %join.i
while_body.i: ; preds = %join.i
%64 = sub i32 %66, %33
store i32 %64, i32* %24, align 4, !alias.scope !1768
%65 = icmp eq i32 %66, %33
br i1 %65, label %normal-return16, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%66 = phi i32 [ %25, %join.lr.ph.i ], [ %64, %while_body.i ]
%67 = icmp slt i32 %66, 0
%68 = sub i32 0, %66
%sret_slot.0.i.i.i = select i1 %67, i32 %68, i32 %66
%69 = add i32 %sret_slot.0.i.i.i, -1
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds %"ll::limb::Limb"* %37, i64 %70, i32 0
%72 = load i64* %71, align 8, !alias.scope !1771, !noalias !1774
%73 = icmp eq i64 %72, 0
br i1 %73, label %while_body.i, label %normal-return16
normal-return16: ; preds = %while_body.i, %join.i
%74 = phi i32 [ %66, %join.i ], [ %64, %while_body.i ]
%75 = icmp eq i64 %sret_slot.sroa.0.0.i, 0
br i1 %75, label %join, label %normal-return17
normal-return17: ; preds = %normal-return16
%76 = icmp slt i32 %74, 0
%77 = sub i32 0, %74
%sret_slot.0.i.i = select i1 %76, i32 %77, i32 %74
%78 = sub i32 0, %sret_slot.0.i.i
store i32 %78, i32* %24, align 4
br label %join
join.loopexit: ; preds = %next-block.i51
br label %join
join: ; preds = %join.loopexit, %normal-return16, %then-block-839-.i, %then-block-16622-, %normal-return17, %then-block-16636-
%79 = bitcast %"int::Int"* %1 to i8*
%80 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %80, i8* %79, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %79, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit40
}
; Function Attrs: uwtable
define void @"_ZN3int33Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20hdde029ee1de90c10AveE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%arg.sroa.7 = alloca [12 x i8], align 4
%res = alloca %"int::Int", align 8
%3 = alloca %"int::Int", align 8
%arg26.sroa.7 = alloca [12 x i8], align 4
%arg29.sroa.7 = alloca [12 x i8], align 4
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !1776
%6 = icmp eq i32 %5, 0
br i1 %6, label %then-block-16780-, label %next-block
clean_custom_: ; preds = %then-block-16780-, %normal-return27, %then-block-17055-, %then-block-14817-.i, %else-block.i182, %then-block-14817-.i256, %else-block.i257
%7 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%9 = load i8* %8, align 1
%10 = icmp eq i8 %9, -44
br i1 %10, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %clean_custom_
%11 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%12 = load i32* %11, align 4, !alias.scope !1779
%13 = icmp eq i32 %12, 0
br i1 %13, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%14 = bitcast %"int::Int"* %1 to i8**
%15 = load i8** %14, align 8, !alias.scope !1782
%16 = zext i32 %12 to i64
%17 = shl nuw nsw i64 %16, 3
tail call void @je_sdallocx(i8* %15, i64 %17, i32 0)
store i32 0, i32* %11, align 4, !alias.scope !1779
store i32 0, i32* %4, align 4, !alias.scope !1779
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %clean_custom_, %cond.i, %then-block-15297-.i.i
%18 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %18)
resume { i8*, i32 } %7
then-block-16780-: ; preds = %entry-block
invoke void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return2 unwind label %clean_custom_
normal-return2: ; preds = %then-block-16780-
%arg.sroa.7.0..sroa_idx322 = getelementptr inbounds [12 x i8]* %arg.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.7.0..sroa_idx322)
%19 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.5.0.copyload = load i32* %4, align 8
%arg.sroa.7.0..sroa_idx315 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx315 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_idx322, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %19, i8 29, i64 24, i32 8, i1 false)
%20 = sub i32 0, %arg.sroa.5.0.copyload
%arg.sroa.0.0..sroa_idx307 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx307, align 8
%arg.sroa.5.0..sroa_idx312 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %20, i32* %arg.sroa.5.0..sroa_idx312, align 8
%arg.sroa.7.0..sroa_idx318 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.7.0..sroa_cast319 = bitcast i32* %arg.sroa.7.0..sroa_idx318 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_cast319, i8* %arg.sroa.7.0..sroa_idx322, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx322)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx322)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
clean_custom_3: ; preds = %normal-return27
call void @llvm.lifetime.end(i64 24, i8* %206)
%arg29.sroa.7.0..sroa_idx284 = getelementptr inbounds [12 x i8]* %arg29.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg29.sroa.7.0..sroa_idx284)
%arg29.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %res, i64 0, i32 0, i32 0, i32 0
%arg29.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg29.sroa.0.0..sroa_idx, align 8
%arg29.sroa.5.0..sroa_idx272 = getelementptr inbounds %"int::Int"* %res, i64 0, i32 1
%arg29.sroa.5.0.copyload = load i32* %arg29.sroa.5.0..sroa_idx272, align 8
%arg29.sroa.7.0..sroa_idx277 = getelementptr inbounds %"int::Int"* %res, i64 0, i32 2
%arg29.sroa.7.0..sroa_cast = bitcast i32* %arg29.sroa.7.0..sroa_idx277 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg29.sroa.7.0..sroa_idx284, i8* %arg29.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
%21 = sub i32 0, %arg29.sroa.5.0.copyload
%arg29.sroa.0.0..sroa_idx269 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg29.sroa.0.0.copyload, %"ll::limb::Limb"** %arg29.sroa.0.0..sroa_idx269, align 8
%arg29.sroa.5.0..sroa_idx274 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %21, i32* %arg29.sroa.5.0..sroa_idx274, align 8
%arg29.sroa.7.0..sroa_idx280 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg29.sroa.7.0..sroa_cast281 = bitcast i32* %arg29.sroa.7.0..sroa_idx280 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg29.sroa.7.0..sroa_cast281, i8* %arg29.sroa.7.0..sroa_idx284, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg29.sroa.7.0..sroa_idx284)
call void @llvm.lifetime.end(i64 12, i8* %arg29.sroa.7.0..sroa_idx284)
call void @llvm.lifetime.end(i64 24, i8* %205)
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%.pre345 = load i8* %.phi.trans.insert, align 1
%phitmp = icmp eq i8 %.pre345, -44
br i1 %phitmp, label %cond.i185, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
cond.i185: ; preds = %clean_custom_3
%22 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%23 = load i32* %22, align 4, !alias.scope !1785
%24 = icmp eq i32 %23, 0
br i1 %24, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187, label %then-block-15297-.i.i186
then-block-15297-.i.i186: ; preds = %cond.i185
%25 = bitcast %"int::Int"* %1 to i8**
%26 = load i8** %25, align 8, !alias.scope !1788
%27 = zext i32 %23 to i64
%28 = shl nuw nsw i64 %27, 3
tail call void @je_sdallocx(i8* %26, i64 %28, i32 0)
store i32 0, i32* %22, align 4, !alias.scope !1785
store i32 0, i32* %4, align 4, !alias.scope !1785
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187: ; preds = %normal-return2, %then-block-16795-, %match_case, %normal-return23, %next-block57, %clean_custom_3, %cond.i185, %then-block-15297-.i.i186
%29 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %29)
ret void
next-block: ; preds = %entry-block
%30 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%31 = load i32* %30, align 4, !alias.scope !1791
%32 = icmp eq i32 %31, 0
br i1 %32, label %then-block-16795-, label %normal-return7
then-block-16795-: ; preds = %next-block
%33 = bitcast %"int::Int"* %1 to i8*
%34 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %34, i8* %33, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %33, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
normal-return7: ; preds = %next-block
%35 = ashr i32 %5, 31
%36 = or i32 %35, 1
%37 = ashr i32 %31, 31
%38 = or i32 %37, 1
%39 = icmp eq i32 %36, %38
br i1 %39, label %then-block-16805-, label %normal-return25
then-block-16805-: ; preds = %normal-return7
%40 = icmp slt i32 %5, 0
%41 = sub i32 0, %5
%sret_slot.0.i.i.i208 = select i1 %40, i32 %41, i32 %5
%42 = icmp slt i32 %31, 0
%43 = sub i32 0, %31
%sret_slot.0.i.i32.i = select i1 %42, i32 %43, i32 %31
%44 = icmp sgt i32 %sret_slot.0.i.i.i208, %sret_slot.0.i.i32.i
br i1 %44, label %normal-return20, label %else-block.i209
else-block.i209: ; preds = %then-block-16805-
%45 = icmp slt i32 %sret_slot.0.i.i.i208, %sret_slot.0.i.i32.i
br i1 %45, label %normal-return12, label %else-block1.i
else-block1.i: ; preds = %else-block.i209
%46 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%47 = load %"ll::limb::Limb"** %46, align 8, !alias.scope !1794, !noalias !1799
%48 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%49 = load %"ll::limb::Limb"** %48, align 8, !alias.scope !1801, !noalias !1804
br label %while_cond.i.i
while_cond.i.i: ; preds = %while_body.i.i, %else-block1.i
%i.0.in.i.i = phi i32 [ %sret_slot.0.i.i.i208, %else-block1.i ], [ %i.0.i.i, %while_body.i.i ]
%i.0.i.i = add i32 %i.0.in.i.i, -1
%50 = icmp sgt i32 %i.0.i.i, -1
br i1 %50, label %while_body.i.i, label %match_case
while_body.i.i: ; preds = %while_cond.i.i
%51 = sext i32 %i.0.i.i to i64
%52 = getelementptr inbounds %"ll::limb::Limb"* %47, i64 %51, i32 0
%53 = load i64* %52, align 8, !noalias !1805
%54 = getelementptr inbounds %"ll::limb::Limb"* %49, i64 %51, i32 0
%55 = load i64* %54, align 8, !noalias !1805
%56 = icmp eq i64 %53, %55
br i1 %56, label %while_cond.i.i, label %normal-return8
normal-return8: ; preds = %while_body.i.i
%.lcssa424 = phi i64 [ %55, %while_body.i.i ]
%.lcssa423 = phi i64 [ %53, %while_body.i.i ]
%57 = icmp ugt i64 %.lcssa423, %.lcssa424
br i1 %57, label %normal-return20, label %normal-return12
match_case: ; preds = %while_cond.i.i
store i32 0, i32* %4, align 4
%58 = bitcast %"int::Int"* %1 to i8*
%59 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* %58, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %58, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
normal-return12: ; preds = %normal-return8, %else-block.i209
%60 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%61 = load i32* %60, align 4, !alias.scope !1806
%62 = icmp ult i32 %61, %sret_slot.0.i.i32.i
br i1 %62, label %then-block-14806-.i255, label %normal-return20
then-block-14806-.i255: ; preds = %normal-return12
%63 = icmp eq i32 %61, 0
br i1 %63, label %else-block.i257, label %then-block-14817-.i256
then-block-14817-.i256: ; preds = %then-block-14806-.i255
%64 = bitcast %"int::Int"* %1 to i8**
%65 = load i8** %64, align 8, !alias.scope !1809
%66 = zext i32 %61 to i64
%67 = shl nuw nsw i64 %66, 3
%68 = zext i32 %sret_slot.0.i.i32.i to i64
%69 = shl nuw nsw i64 %68, 3
%70 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %65, i64 %67, i64 %69)
to label %while_exit.i260 unwind label %clean_custom_
else-block.i257: ; preds = %then-block-14806-.i255
%71 = zext i32 %sret_slot.0.i.i32.i to i64
%72 = shl nuw nsw i64 %71, 3
%73 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %72)
to label %while_exit.i260 unwind label %clean_custom_
while_exit.i260: ; preds = %else-block.i257, %then-block-14817-.i256
%.pre-phi348 = phi i64 [ %67, %then-block-14817-.i256 ], [ 0, %else-block.i257 ]
%.sink.i258 = phi i8* [ %70, %then-block-14817-.i256 ], [ %73, %else-block.i257 ]
%scevgep.i259 = getelementptr i8* %.sink.i258, i64 %.pre-phi348
%74 = xor i32 %61, -1
%75 = add i32 %sret_slot.0.i.i32.i, %74
%76 = zext i32 %75 to i64
%77 = shl nuw nsw i64 %76, 3
%78 = add nuw nsw i64 %77, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i259, i8 0, i64 %78, i32 8, i1 false), !noalias !1806
%79 = ptrtoint i8* %.sink.i258 to i64
%80 = bitcast %"int::Int"* %1 to i64*
store i64 %79, i64* %80, align 8, !alias.scope !1806
store i32 %sret_slot.0.i.i32.i, i32* %60, align 4, !alias.scope !1806
br label %normal-return20
normal-return20: ; preds = %then-block-16805-, %normal-return8, %while_exit.i260, %normal-return12
%.pn329 = phi %"int::Int"* [ %2, %normal-return12 ], [ %2, %while_exit.i260 ], [ %1, %normal-return8 ], [ %1, %then-block-16805- ]
%.sroa.5135.0.in = phi i32* [ %30, %normal-return12 ], [ %30, %while_exit.i260 ], [ %4, %normal-return8 ], [ %4, %then-block-16805- ]
%.pn330 = phi %"int::Int"* [ %1, %normal-return12 ], [ %1, %while_exit.i260 ], [ %2, %normal-return8 ], [ %2, %then-block-16805- ]
%.sroa.14143.0 = phi i1 [ true, %normal-return12 ], [ true, %while_exit.i260 ], [ false, %normal-return8 ], [ false, %then-block-16805- ]
%.sroa.8139.0.in = getelementptr inbounds %"int::Int"* %.pn330, i64 0, i32 0, i32 0, i32 0
%.sroa.0133.0.in = getelementptr inbounds %"int::Int"* %.pn329, i64 0, i32 0, i32 0, i32 0
%.sroa.8139.0 = load %"ll::limb::Limb"** %.sroa.8139.0.in, align 8
%.sroa.5135.0 = load i32* %.sroa.5135.0.in, align 4
%.sroa.0133.0 = load %"ll::limb::Limb"** %.sroa.0133.0.in, align 8
%.sroa.11141.0.in = getelementptr inbounds %"int::Int"* %.pn330, i64 0, i32 1
%.sroa.11141.0 = load i32* %.sroa.11141.0.in, align 4
%81 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%82 = load %"ll::limb::Limb"** %81, align 8, !alias.scope !1812
%83 = icmp slt i32 %.sroa.5135.0, 0
%84 = sub i32 0, %.sroa.5135.0
%sret_slot.0.i254 = select i1 %83, i32 %84, i32 %.sroa.5135.0
%85 = icmp slt i32 %.sroa.11141.0, 0
%86 = sub i32 0, %.sroa.11141.0
%sret_slot.0.i253 = select i1 %85, i32 %86, i32 %.sroa.11141.0
%xl.sroa.0.0..sroa_idx43.i.i.i220 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i221 = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i220, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i222 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.8139.0, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i223 = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i222, align 8
%87 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i221, i64 %yl.sroa.0.0.copyload46.i.i.i223) #20
%88 = extractvalue { i64, i1 } %87, 0
%89 = extractvalue { i64, i1 } %87, 1
%.47.i.i.i224 = zext i1 %89 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i225 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 0, i32 0
store i64 %88, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i225, align 8
%90 = add i32 %sret_slot.0.i253, -1
%91 = icmp eq i32 %90, 0
br i1 %91, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i, label %next-block.i.i.i236.preheader
next-block.i.i.i236.preheader: ; preds = %normal-return20
%92 = add i32 %sret_slot.0.i253, -1
%93 = add i32 %sret_slot.0.i253, -2
%xtraiter426 = and i32 %92, 1
%lcmp.mod427 = icmp ne i32 %xtraiter426, 0
br i1 %lcmp.mod427, label %next-block.i.i.i236.prol, label %next-block.i.i.i236.preheader.split
next-block.i.i.i236.prol: ; preds = %next-block.i.i.i236.preheader
%94 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 1
%95 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 1
%96 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.8139.0, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i230.prol = getelementptr inbounds %"ll::limb::Limb"* %95, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i231.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i230.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i232.prol = getelementptr inbounds %"ll::limb::Limb"* %96, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i233.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i232.prol, align 8
%97 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i231.prol, i64 %yl.sroa.0.0.copyload.i.i.i233.prol) #20
%98 = extractvalue { i64, i1 } %97, 0
%99 = extractvalue { i64, i1 } %97, 1
%100 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %98, i64 %.47.i.i.i224) #20
%101 = extractvalue { i64, i1 } %100, 0
%102 = extractvalue { i64, i1 } %100, 1
%103 = or i1 %99, %102
%..i.i.i234.prol = zext i1 %103 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i235.prol = getelementptr inbounds %"ll::limb::Limb"* %94, i64 0, i32 0
store i64 %101, i64* %rl.sroa.0.0..sroa_idx16.i.i.i235.prol, align 8
%104 = add i32 %90, -1
%105 = icmp eq i32 %104, 0
br label %next-block.i.i.i236.preheader.split
next-block.i.i.i236.preheader.split: ; preds = %next-block.i.i.i236.prol, %next-block.i.i.i236.preheader
%..i.i.i234.lcssa.unr = phi i64 [ 0, %next-block.i.i.i236.preheader ], [ %..i.i.i234.prol, %next-block.i.i.i236.prol ]
%.unr = phi i32 [ %90, %next-block.i.i.i236.preheader ], [ %104, %next-block.i.i.i236.prol ]
%.52.i.i.i226.unr = phi i64 [ %.47.i.i.i224, %next-block.i.i.i236.preheader ], [ %..i.i.i234.prol, %next-block.i.i.i236.prol ]
%wp.051.i.i.i227.unr = phi %"ll::limb::Limb"* [ %82, %next-block.i.i.i236.preheader ], [ %94, %next-block.i.i.i236.prol ]
%xp.050.i.i.i228.unr = phi %"ll::limb::Limb"* [ %.sroa.0133.0, %next-block.i.i.i236.preheader ], [ %95, %next-block.i.i.i236.prol ]
%yp.049.i.i.i229.unr = phi %"ll::limb::Limb"* [ %.sroa.8139.0, %next-block.i.i.i236.preheader ], [ %96, %next-block.i.i.i236.prol ]
%106 = icmp ult i32 %93, 1
br i1 %106, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, label %next-block.i.i.i236.preheader.split.split
next-block.i.i.i236.preheader.split.split: ; preds = %next-block.i.i.i236.preheader.split
br label %next-block.i.i.i236
next-block.i.i.i236: ; preds = %next-block.i.i.i236, %next-block.i.i.i236.preheader.split.split
%107 = phi i32 [ %.unr, %next-block.i.i.i236.preheader.split.split ], [ %129, %next-block.i.i.i236 ]
%.52.i.i.i226 = phi i64 [ %.52.i.i.i226.unr, %next-block.i.i.i236.preheader.split.split ], [ %..i.i.i234.1, %next-block.i.i.i236 ]
%wp.051.i.i.i227 = phi %"ll::limb::Limb"* [ %wp.051.i.i.i227.unr, %next-block.i.i.i236.preheader.split.split ], [ %119, %next-block.i.i.i236 ]
%xp.050.i.i.i228 = phi %"ll::limb::Limb"* [ %xp.050.i.i.i228.unr, %next-block.i.i.i236.preheader.split.split ], [ %120, %next-block.i.i.i236 ]
%yp.049.i.i.i229 = phi %"ll::limb::Limb"* [ %yp.049.i.i.i229.unr, %next-block.i.i.i236.preheader.split.split ], [ %121, %next-block.i.i.i236 ]
%108 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i227, i64 1
%109 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i228, i64 1
%110 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i229, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i230 = getelementptr inbounds %"ll::limb::Limb"* %109, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i231 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i230, align 8
%yl.sroa.0.0..sroa_idx.i.i.i232 = getelementptr inbounds %"ll::limb::Limb"* %110, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i233 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i232, align 8
%111 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i231, i64 %yl.sroa.0.0.copyload.i.i.i233) #20
%112 = extractvalue { i64, i1 } %111, 0
%113 = extractvalue { i64, i1 } %111, 1
%114 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %112, i64 %.52.i.i.i226) #20
%115 = extractvalue { i64, i1 } %114, 0
%116 = extractvalue { i64, i1 } %114, 1
%117 = or i1 %113, %116
%..i.i.i234 = zext i1 %117 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i235 = getelementptr inbounds %"ll::limb::Limb"* %108, i64 0, i32 0
store i64 %115, i64* %rl.sroa.0.0..sroa_idx16.i.i.i235, align 8
%118 = add i32 %107, -1
%119 = getelementptr inbounds %"ll::limb::Limb"* %108, i64 1
%120 = getelementptr inbounds %"ll::limb::Limb"* %109, i64 1
%121 = getelementptr inbounds %"ll::limb::Limb"* %110, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i230.1 = getelementptr inbounds %"ll::limb::Limb"* %120, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i231.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i230.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i232.1 = getelementptr inbounds %"ll::limb::Limb"* %121, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i233.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i232.1, align 8
%122 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i231.1, i64 %yl.sroa.0.0.copyload.i.i.i233.1) #20
%123 = extractvalue { i64, i1 } %122, 0
%124 = extractvalue { i64, i1 } %122, 1
%125 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %123, i64 %..i.i.i234) #20
%126 = extractvalue { i64, i1 } %125, 0
%127 = extractvalue { i64, i1 } %125, 1
%128 = or i1 %124, %127
%..i.i.i234.1 = zext i1 %128 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i235.1 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 0, i32 0
store i64 %126, i64* %rl.sroa.0.0..sroa_idx16.i.i.i235.1, align 8
%129 = add i32 %118, -1
%130 = icmp eq i32 %129, 0
br i1 %130, label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i236
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i236
%..i.i.i234.lcssa.ph = phi i64 [ %..i.i.i234.1, %next-block.i.i.i236 ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit: ; preds = %next-block.i.i.i236.preheader.split, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa
%..i.i.i234.lcssa = phi i64 [ %..i.i.i234.lcssa.unr, %next-block.i.i.i236.preheader.split ], [ %..i.i.i234.lcssa.ph, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit, %normal-return20
%..lcssa.i.i.i237 = phi i64 [ %.47.i.i.i224, %normal-return20 ], [ %..i.i.i234.lcssa, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i.loopexit ]
%131 = icmp eq i64 %..lcssa.i.i.i237, 1
br i1 %131, label %loop_body.i239.preheader, label %next-block3.i245
loop_body.i239.preheader: ; preds = %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
br label %loop_body.i239
loop_body.i239: ; preds = %loop_body.i239.preheader, %next-block.i242
%i.0.i238 = phi i32 [ %139, %next-block.i242 ], [ %sret_slot.0.i253, %loop_body.i239.preheader ]
%132 = icmp slt i32 %i.0.i238, %sret_slot.0.i254
br i1 %132, label %next-block.i242, label %normal-return21.loopexit421
next-block.i242: ; preds = %loop_body.i239
%133 = sext i32 %i.0.i238 to i64
%134 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %133, i32 0
%135 = load i64* %134, align 8
%136 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %135, i64 1) #20
%137 = extractvalue { i64, i1 } %136, 0
%138 = extractvalue { i64, i1 } %136, 1
%x.sroa.0.0..sroa_idx6.i241 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %133, i32 0
store i64 %137, i64* %x.sroa.0.0..sroa_idx6.i241, align 8
%139 = add i32 %i.0.i238, 1
br i1 %138, label %loop_body.i239, label %next-block3.i245.loopexit
next-block3.i245.loopexit: ; preds = %next-block.i242
%.lcssa = phi i32 [ %139, %next-block.i242 ]
br label %next-block3.i245
next-block3.i245: ; preds = %next-block3.i245.loopexit, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i
%i.1.i243 = phi i32 [ %sret_slot.0.i253, %_ZN2ll6addsub5sub_n20h645c6b90f709f713jhaE.exit.i ], [ %.lcssa, %next-block3.i245.loopexit ]
%140 = icmp ne %"ll::limb::Limb"* %82, %.sroa.0133.0
%141 = icmp sgt i32 %sret_slot.0.i254, %i.1.i243
%..i244 = and i1 %140, %141
br i1 %..i244, label %then-block-803-.i, label %normal-return21
then-block-803-.i: ; preds = %next-block3.i245
%142 = sext i32 %i.1.i243 to i64
%143 = sub i32 %sret_slot.0.i254, %i.1.i243
%144 = icmp sgt i32 %143, 0
br i1 %144, label %while_body.lr.ph.i.i.i246, label %normal-return21
while_body.lr.ph.i.i.i246: ; preds = %then-block-803-.i
%145 = add i32 %sret_slot.0.i254, -1
%146 = sub i32 %145, %i.1.i243
%147 = zext i32 %146 to i64
%148 = add nuw nsw i64 %147, 1
%end.idx382 = add nuw nsw i64 %147, 1
%n.vec384 = and i64 %148, 8589934588
%cmp.zero386 = icmp eq i64 %n.vec384, 0
%149 = sext i32 %i.1.i243 to i64
%150 = add i32 %sret_slot.0.i254, -1
%151 = sub i32 %150, %i.1.i243
%152 = zext i32 %151 to i64
%153 = add nsw i64 %149, %152
br i1 %cmp.zero386, label %middle.block379, label %vector.memcheck400
vector.memcheck400: ; preds = %while_body.lr.ph.i.i.i246
%scevgep388 = getelementptr %"ll::limb::Limb"* %82, i64 %149
%scevgep394 = getelementptr %"ll::limb::Limb"* %.sroa.0133.0, i64 %153
%bound0396 = icmp ule %"ll::limb::Limb"* %scevgep388, %scevgep394
%scevgep392 = getelementptr %"ll::limb::Limb"* %.sroa.0133.0, i64 %149
%scevgep390 = getelementptr %"ll::limb::Limb"* %82, i64 %153
%bound1397 = icmp ule %"ll::limb::Limb"* %scevgep392, %scevgep390
%memcheck.conflict399 = and i1 %bound0396, %bound1397
br i1 %memcheck.conflict399, label %middle.block379, label %vector.body378.preheader
vector.body378.preheader: ; preds = %vector.memcheck400
br label %vector.body378
vector.body378: ; preds = %vector.body378.preheader, %vector.body378
%index381 = phi i64 [ %index.next406, %vector.body378 ], [ 0, %vector.body378.preheader ]
%154 = add i64 %index381, %142
%155 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %154, i32 0
%156 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %154, i32 0
%157 = bitcast i64* %155 to <2 x i64>*
%wide.load413 = load <2 x i64>* %157, align 8
%158 = getelementptr i64* %155, i64 2
%159 = bitcast i64* %158 to <2 x i64>*
%wide.load414 = load <2 x i64>* %159, align 8
%160 = bitcast i64* %156 to <2 x i64>*
store <2 x i64> %wide.load413, <2 x i64>* %160, align 8
%161 = getelementptr i64* %156, i64 2
%162 = bitcast i64* %161 to <2 x i64>*
store <2 x i64> %wide.load414, <2 x i64>* %162, align 8
%index.next406 = add i64 %index381, 4
%163 = icmp eq i64 %index.next406, %n.vec384
br i1 %163, label %middle.block379.loopexit, label %vector.body378, !llvm.loop !1815
middle.block379.loopexit: ; preds = %vector.body378
br label %middle.block379
middle.block379: ; preds = %middle.block379.loopexit, %vector.memcheck400, %while_body.lr.ph.i.i.i246
%resume.val401 = phi i64 [ 0, %while_body.lr.ph.i.i.i246 ], [ 0, %vector.memcheck400 ], [ %n.vec384, %middle.block379.loopexit ]
%cmp.n405 = icmp eq i64 %end.idx382, %resume.val401
br i1 %cmp.n405, label %normal-return21, label %while_body.i.i.i252.preheader
while_body.i.i.i252.preheader: ; preds = %middle.block379
%164 = sub i32 %sret_slot.0.i254, %i.1.i243
%165 = trunc i64 %resume.val401 to i32
%166 = sub i32 %164, %165
%167 = add i32 %sret_slot.0.i254, -1
%168 = sub i32 %167, %i.1.i243
%169 = sub i32 %168, %165
%xtraiter = and i32 %166, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.i252.prol, label %while_body.i.i.i252.preheader.split
while_body.i.i.i252.prol: ; preds = %while_body.i.i.i252.prol, %while_body.i.i.i252.preheader
%indvars.iv.i.i.i247.prol = phi i64 [ %indvars.iv.next.i.i.i249.prol, %while_body.i.i.i252.prol ], [ %resume.val401, %while_body.i.i.i252.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.i252.preheader ], [ %prol.iter.sub, %while_body.i.i.i252.prol ]
%.sum.i.i248.prol = add i64 %indvars.iv.i.i.i247.prol, %142
%170 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %.sum.i.i248.prol, i32 0
%171 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %.sum.i.i248.prol, i32 0
%172 = load i64* %170, align 8
store i64 %172, i64* %171, align 8
%indvars.iv.next.i.i.i249.prol = add nuw nsw i64 %indvars.iv.i.i.i247.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.i247.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %146
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.i252.prol, label %while_body.i.i.i252.preheader.split, !llvm.loop !1816
while_body.i.i.i252.preheader.split: ; preds = %while_body.i.i.i252.prol, %while_body.i.i.i252.preheader
%indvars.iv.i.i.i247.unr = phi i64 [ %resume.val401, %while_body.i.i.i252.preheader ], [ %indvars.iv.next.i.i.i249.prol, %while_body.i.i.i252.prol ]
%173 = icmp ult i32 %169, 3
br i1 %173, label %normal-return21.loopexit, label %while_body.i.i.i252.preheader.split.split
while_body.i.i.i252.preheader.split.split: ; preds = %while_body.i.i.i252.preheader.split
br label %while_body.i.i.i252
while_body.i.i.i252: ; preds = %while_body.i.i.i252, %while_body.i.i.i252.preheader.split.split
%indvars.iv.i.i.i247 = phi i64 [ %indvars.iv.i.i.i247.unr, %while_body.i.i.i252.preheader.split.split ], [ %indvars.iv.next.i.i.i249.3, %while_body.i.i.i252 ]
%.sum.i.i248 = add i64 %indvars.iv.i.i.i247, %142
%174 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %.sum.i.i248, i32 0
%175 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %.sum.i.i248, i32 0
%176 = load i64* %174, align 8
store i64 %176, i64* %175, align 8
%indvars.iv.next.i.i.i249 = add nuw nsw i64 %indvars.iv.i.i.i247, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i247 to i32
%.sum.i.i248.1 = add i64 %indvars.iv.next.i.i.i249, %142
%177 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %.sum.i.i248.1, i32 0
%178 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %.sum.i.i248.1, i32 0
%179 = load i64* %177, align 8
store i64 %179, i64* %178, align 8
%indvars.iv.next.i.i.i249.1 = add nuw nsw i64 %indvars.iv.next.i.i.i249, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i249 to i32
%.sum.i.i248.2 = add i64 %indvars.iv.next.i.i.i249.1, %142
%180 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %.sum.i.i248.2, i32 0
%181 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %.sum.i.i248.2, i32 0
%182 = load i64* %180, align 8
store i64 %182, i64* %181, align 8
%indvars.iv.next.i.i.i249.2 = add nuw nsw i64 %indvars.iv.next.i.i.i249.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.i249.1 to i32
%.sum.i.i248.3 = add i64 %indvars.iv.next.i.i.i249.2, %142
%183 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0133.0, i64 %.sum.i.i248.3, i32 0
%184 = getelementptr inbounds %"ll::limb::Limb"* %82, i64 %.sum.i.i248.3, i32 0
%185 = load i64* %183, align 8
store i64 %185, i64* %184, align 8
%indvars.iv.next.i.i.i249.3 = add nuw nsw i64 %indvars.iv.next.i.i.i249.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.i249.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %146
br i1 %exitcond.3, label %normal-return21.loopexit.unr-lcssa, label %while_body.i.i.i252, !llvm.loop !1817
normal-return21.loopexit.unr-lcssa: ; preds = %while_body.i.i.i252
br label %normal-return21.loopexit
normal-return21.loopexit: ; preds = %while_body.i.i.i252.preheader.split, %normal-return21.loopexit.unr-lcssa
br label %normal-return21
normal-return21.loopexit421: ; preds = %loop_body.i239
br label %normal-return21
normal-return21: ; preds = %normal-return21.loopexit421, %normal-return21.loopexit, %middle.block379, %then-block-803-.i, %next-block3.i245
%.0 = select i1 %.sroa.14143.0, i32 %84, i32 %.sroa.5135.0
store i32 %.0, i32* %4, align 4
%186 = icmp eq i32 %.0, 0
br i1 %186, label %normal-return23, label %join.lr.ph.i214
join.lr.ph.i214: ; preds = %normal-return21
%187 = ashr i32 %.0, 31
%188 = or i32 %187, 1
%189 = load %"ll::limb::Limb"** %81, align 8, !alias.scope !1818
br label %join.i218
while_body.i216: ; preds = %join.i218
%190 = sub i32 %192, %188
store i32 %190, i32* %4, align 4, !alias.scope !1818
%191 = icmp eq i32 %192, %188
br i1 %191, label %normal-return23.loopexit, label %join.i218
join.i218: ; preds = %while_body.i216, %join.lr.ph.i214
%192 = phi i32 [ %.0, %join.lr.ph.i214 ], [ %190, %while_body.i216 ]
%193 = icmp slt i32 %192, 0
%194 = sub i32 0, %192
%sret_slot.0.i.i.i217 = select i1 %193, i32 %194, i32 %192
%195 = add i32 %sret_slot.0.i.i.i217, -1
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds %"ll::limb::Limb"* %189, i64 %196, i32 0
%198 = load i64* %197, align 8, !alias.scope !1821, !noalias !1824
%199 = icmp eq i64 %198, 0
br i1 %199, label %while_body.i216, label %normal-return23.loopexit
normal-return23.loopexit: ; preds = %while_body.i216, %join.i218
br label %normal-return23
normal-return23: ; preds = %normal-return23.loopexit, %normal-return21
%200 = bitcast %"int::Int"* %1 to i8*
%201 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %201, i8* %200, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %200, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
normal-return25: ; preds = %normal-return7
%202 = ashr i32 %5, 31
%203 = or i32 %202, 1
%204 = icmp eq i32 %203, -1
br i1 %204, label %normal-return27, label %normal-return34
normal-return27: ; preds = %normal-return25
%205 = bitcast %"int::Int"* %res to i8*
call void @llvm.lifetime.start(i64 24, i8* %205)
%206 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %206)
%arg26.sroa.7.0..sroa_idx303 = getelementptr inbounds [12 x i8]* %arg26.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg26.sroa.7.0..sroa_idx303)
%207 = bitcast %"int::Int"* %1 to i8*
%arg26.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg26.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg26.sroa.0.0..sroa_idx, align 8
%arg26.sroa.7.0..sroa_idx296 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg26.sroa.7.0..sroa_cast = bitcast i32* %arg26.sroa.7.0..sroa_idx296 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg26.sroa.7.0..sroa_idx303, i8* %arg26.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %207, i8 29, i64 24, i32 8, i1 false)
%208 = sub i32 0, %5
%arg26.sroa.0.0..sroa_idx288 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg26.sroa.0.0.copyload, %"ll::limb::Limb"** %arg26.sroa.0.0..sroa_idx288, align 8
%arg26.sroa.5.0..sroa_idx293 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %208, i32* %arg26.sroa.5.0..sroa_idx293, align 8
%arg26.sroa.7.0..sroa_idx299 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
%arg26.sroa.7.0..sroa_cast300 = bitcast i32* %arg26.sroa.7.0..sroa_idx299 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg26.sroa.7.0..sroa_cast300, i8* %arg26.sroa.7.0..sroa_idx303, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg26.sroa.7.0..sroa_idx303)
call void @llvm.lifetime.end(i64 12, i8* %arg26.sroa.7.0..sroa_idx303)
invoke void @"_ZN3int33Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h22286002c48fd3c8hjeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %res, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %clean_custom_3 unwind label %clean_custom_
normal-return34: ; preds = %normal-return25
%209 = icmp slt i32 %5, 0
%210 = sub i32 0, %5
%sret_slot.0.i.i198 = select i1 %209, i32 %210, i32 %5
%211 = icmp slt i32 %31, 0
%212 = sub i32 0, %31
%sret_slot.0.i.i197 = select i1 %211, i32 %212, i32 %31
%213 = icmp slt i32 %sret_slot.0.i.i198, %sret_slot.0.i.i197
br i1 %213, label %normal-return40, label %normal-return52
normal-return40: ; preds = %normal-return34
%214 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%215 = load i32* %214, align 4, !alias.scope !1826
%216 = icmp ult i32 %215, %sret_slot.0.i.i197
br i1 %216, label %then-block-14806-.i, label %normal-return44
then-block-14806-.i: ; preds = %normal-return40
%217 = icmp eq i32 %215, 0
br i1 %217, label %else-block.i182, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%218 = bitcast %"int::Int"* %1 to i8**
%219 = load i8** %218, align 8, !alias.scope !1829
%220 = zext i32 %215 to i64
%221 = shl nuw nsw i64 %220, 3
%222 = zext i32 %sret_slot.0.i.i197 to i64
%223 = shl nuw nsw i64 %222, 3
%224 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %219, i64 %221, i64 %223)
to label %while_exit.i unwind label %clean_custom_
else-block.i182: ; preds = %then-block-14806-.i
%225 = zext i32 %sret_slot.0.i.i197 to i64
%226 = shl nuw nsw i64 %225, 3
%227 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %226)
to label %while_exit.i unwind label %clean_custom_
while_exit.i: ; preds = %else-block.i182, %then-block-14817-.i
%.pre-phi352 = phi i64 [ %221, %then-block-14817-.i ], [ 0, %else-block.i182 ]
%.sink.i = phi i8* [ %224, %then-block-14817-.i ], [ %227, %else-block.i182 ]
%228 = add i32 %sret_slot.0.i.i197, -1
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi352
%229 = sub i32 %228, %215
%230 = zext i32 %229 to i64
%231 = shl nuw nsw i64 %230, 3
%232 = add nuw nsw i64 %231, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %232, i32 8, i1 false), !noalias !1826
%233 = ptrtoint i8* %.sink.i to i64
%234 = bitcast %"int::Int"* %1 to i64*
store i64 %233, i64* %234, align 8, !alias.scope !1826
store i32 %sret_slot.0.i.i197, i32* %214, align 4, !alias.scope !1826
%.pre = load i32* %30, align 4, !alias.scope !1832
%.pre344 = load i32* %4, align 4, !alias.scope !1835
br label %normal-return44
normal-return44: ; preds = %normal-return40, %while_exit.i
%235 = phi i32 [ %5, %normal-return40 ], [ %.pre344, %while_exit.i ]
%236 = phi i32 [ %31, %normal-return40 ], [ %.pre, %while_exit.i ]
%237 = icmp slt i32 %236, 0
%238 = sub i32 0, %236
%sret_slot.0.i.i181 = select i1 %237, i32 %238, i32 %236
%239 = icmp slt i32 %235, 0
%240 = sub i32 0, %235
%sret_slot.0.i.i = select i1 %239, i32 %240, i32 %235
br label %normal-return52
normal-return52: ; preds = %normal-return34, %normal-return44
%.pn327 = phi %"int::Int"* [ %2, %normal-return44 ], [ %1, %normal-return34 ]
%.sroa.5.0 = phi i32 [ %sret_slot.0.i.i181, %normal-return44 ], [ %sret_slot.0.i.i198, %normal-return34 ]
%.pn328 = phi %"int::Int"* [ %1, %normal-return44 ], [ %2, %normal-return34 ]
%.sroa.11.0 = phi i32 [ %sret_slot.0.i.i, %normal-return44 ], [ %sret_slot.0.i.i197, %normal-return34 ]
%.sroa.891.0.in = getelementptr inbounds %"int::Int"* %.pn328, i64 0, i32 0, i32 0, i32 0
%.sroa.0.0.in = getelementptr inbounds %"int::Int"* %.pn327, i64 0, i32 0, i32 0, i32 0
%.sroa.891.0 = load %"ll::limb::Limb"** %.sroa.891.0.in, align 8
%.sroa.0.0 = load %"ll::limb::Limb"** %.sroa.0.0.in, align 8
%241 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%242 = load %"ll::limb::Limb"** %241, align 8, !alias.scope !1838
%xl.sroa.0.0..sroa_idx43.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 0, i32 0
%xl.sroa.0.0.copyload44.i.i.i = load i64* %xl.sroa.0.0..sroa_idx43.i.i.i, align 8
%yl.sroa.0.0..sroa_idx45.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %.sroa.891.0, i64 0, i32 0
%yl.sroa.0.0.copyload46.i.i.i = load i64* %yl.sroa.0.0..sroa_idx45.i.i.i, align 8
%243 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload44.i.i.i, i64 %yl.sroa.0.0.copyload46.i.i.i) #20
%244 = extractvalue { i64, i1 } %243, 0
%245 = extractvalue { i64, i1 } %243, 1
%.47.i.i.i = zext i1 %245 to i64
%rl.sroa.0.0..sroa_idx1648.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %242, i64 0, i32 0
store i64 %244, i64* %rl.sroa.0.0..sroa_idx1648.i.i.i, align 8
%246 = add i32 %.sroa.11.0, -1
%247 = icmp eq i32 %246, 0
br i1 %247, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i, label %next-block.i.i.i.preheader
next-block.i.i.i.preheader: ; preds = %normal-return52
%248 = add i32 %.sroa.11.0, -1
%249 = add i32 %.sroa.11.0, -2
%xtraiter431 = and i32 %248, 1
%lcmp.mod432 = icmp ne i32 %xtraiter431, 0
br i1 %lcmp.mod432, label %next-block.i.i.i.prol, label %next-block.i.i.i.preheader.split
next-block.i.i.i.prol: ; preds = %next-block.i.i.i.preheader
%250 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 1
%251 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 1
%252 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.891.0, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %251, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.prol = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %252, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.prol = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.prol, align 8
%253 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.prol, i64 %yl.sroa.0.0.copyload.i.i.i.prol) #20
%254 = extractvalue { i64, i1 } %253, 0
%255 = extractvalue { i64, i1 } %253, 1
%256 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %254, i64 %.47.i.i.i) #20
%257 = extractvalue { i64, i1 } %256, 0
%258 = extractvalue { i64, i1 } %256, 1
%259 = or i1 %255, %258
%..i.i.i.prol = zext i1 %259 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.prol = getelementptr inbounds %"ll::limb::Limb"* %250, i64 0, i32 0
store i64 %257, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.prol, align 8
%260 = add i32 %246, -1
%261 = icmp eq i32 %260, 0
br label %next-block.i.i.i.preheader.split
next-block.i.i.i.preheader.split: ; preds = %next-block.i.i.i.prol, %next-block.i.i.i.preheader
%..i.i.i.lcssa.unr = phi i64 [ 0, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%.unr433 = phi i32 [ %246, %next-block.i.i.i.preheader ], [ %260, %next-block.i.i.i.prol ]
%.52.i.i.i.unr = phi i64 [ %.47.i.i.i, %next-block.i.i.i.preheader ], [ %..i.i.i.prol, %next-block.i.i.i.prol ]
%wp.051.i.i.i.unr = phi %"ll::limb::Limb"* [ %242, %next-block.i.i.i.preheader ], [ %250, %next-block.i.i.i.prol ]
%xp.050.i.i.i.unr = phi %"ll::limb::Limb"* [ %.sroa.0.0, %next-block.i.i.i.preheader ], [ %251, %next-block.i.i.i.prol ]
%yp.049.i.i.i.unr = phi %"ll::limb::Limb"* [ %.sroa.891.0, %next-block.i.i.i.preheader ], [ %252, %next-block.i.i.i.prol ]
%262 = icmp ult i32 %249, 1
br i1 %262, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, label %next-block.i.i.i.preheader.split.split
next-block.i.i.i.preheader.split.split: ; preds = %next-block.i.i.i.preheader.split
br label %next-block.i.i.i
next-block.i.i.i: ; preds = %next-block.i.i.i, %next-block.i.i.i.preheader.split.split
%263 = phi i32 [ %.unr433, %next-block.i.i.i.preheader.split.split ], [ %285, %next-block.i.i.i ]
%.52.i.i.i = phi i64 [ %.52.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %..i.i.i.1, %next-block.i.i.i ]
%wp.051.i.i.i = phi %"ll::limb::Limb"* [ %wp.051.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %275, %next-block.i.i.i ]
%xp.050.i.i.i = phi %"ll::limb::Limb"* [ %xp.050.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %276, %next-block.i.i.i ]
%yp.049.i.i.i = phi %"ll::limb::Limb"* [ %yp.049.i.i.i.unr, %next-block.i.i.i.preheader.split.split ], [ %277, %next-block.i.i.i ]
%264 = getelementptr inbounds %"ll::limb::Limb"* %wp.051.i.i.i, i64 1
%265 = getelementptr inbounds %"ll::limb::Limb"* %xp.050.i.i.i, i64 1
%266 = getelementptr inbounds %"ll::limb::Limb"* %yp.049.i.i.i, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %265, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i = load i64* %xl.sroa.0.0..sroa_idx.i.i.i, align 8
%yl.sroa.0.0..sroa_idx.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %266, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i = load i64* %yl.sroa.0.0..sroa_idx.i.i.i, align 8
%267 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i, i64 %yl.sroa.0.0.copyload.i.i.i) #20
%268 = extractvalue { i64, i1 } %267, 0
%269 = extractvalue { i64, i1 } %267, 1
%270 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %268, i64 %.52.i.i.i) #20
%271 = extractvalue { i64, i1 } %270, 0
%272 = extractvalue { i64, i1 } %270, 1
%273 = or i1 %269, %272
%..i.i.i = zext i1 %273 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i = getelementptr inbounds %"ll::limb::Limb"* %264, i64 0, i32 0
store i64 %271, i64* %rl.sroa.0.0..sroa_idx16.i.i.i, align 8
%274 = add i32 %263, -1
%275 = getelementptr inbounds %"ll::limb::Limb"* %264, i64 1
%276 = getelementptr inbounds %"ll::limb::Limb"* %265, i64 1
%277 = getelementptr inbounds %"ll::limb::Limb"* %266, i64 1
%xl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %276, i64 0, i32 0
%xl.sroa.0.0.copyload.i.i.i.1 = load i64* %xl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%yl.sroa.0.0..sroa_idx.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %277, i64 0, i32 0
%yl.sroa.0.0.copyload.i.i.i.1 = load i64* %yl.sroa.0.0..sroa_idx.i.i.i.1, align 8
%278 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %xl.sroa.0.0.copyload.i.i.i.1, i64 %yl.sroa.0.0.copyload.i.i.i.1) #20
%279 = extractvalue { i64, i1 } %278, 0
%280 = extractvalue { i64, i1 } %278, 1
%281 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %279, i64 %..i.i.i) #20
%282 = extractvalue { i64, i1 } %281, 0
%283 = extractvalue { i64, i1 } %281, 1
%284 = or i1 %280, %283
%..i.i.i.1 = zext i1 %284 to i64
%rl.sroa.0.0..sroa_idx16.i.i.i.1 = getelementptr inbounds %"ll::limb::Limb"* %275, i64 0, i32 0
store i64 %282, i64* %rl.sroa.0.0..sroa_idx16.i.i.i.1, align 8
%285 = add i32 %274, -1
%286 = icmp eq i32 %285, 0
br i1 %286, label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa, label %next-block.i.i.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa: ; preds = %next-block.i.i.i
%..i.i.i.lcssa.ph = phi i64 [ %..i.i.i.1, %next-block.i.i.i ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit: ; preds = %next-block.i.i.i.preheader.split, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa
%..i.i.i.lcssa = phi i64 [ %..i.i.i.lcssa.unr, %next-block.i.i.i.preheader.split ], [ %..i.i.i.lcssa.ph, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit.unr-lcssa ]
br label %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit, %normal-return52
%..lcssa.i.i.i = phi i64 [ %.47.i.i.i, %normal-return52 ], [ %..i.i.i.lcssa, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i.loopexit ]
%287 = icmp eq i64 %..lcssa.i.i.i, 1
br i1 %287, label %loop_body.i.preheader, label %next-block3.i
loop_body.i.preheader: ; preds = %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
br label %loop_body.i
loop_body.i: ; preds = %loop_body.i.preheader, %next-block.i
%i.0.i = phi i32 [ %295, %next-block.i ], [ %.sroa.11.0, %loop_body.i.preheader ]
%288 = icmp slt i32 %i.0.i, %.sroa.5.0
br i1 %288, label %next-block.i, label %normal-return53.loopexit422
next-block.i: ; preds = %loop_body.i
%289 = sext i32 %i.0.i to i64
%290 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %289, i32 0
%291 = load i64* %290, align 8
%292 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %291, i64 1) #20
%293 = extractvalue { i64, i1 } %292, 0
%294 = extractvalue { i64, i1 } %292, 1
%x.sroa.0.0..sroa_idx6.i = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %289, i32 0
store i64 %293, i64* %x.sroa.0.0..sroa_idx6.i, align 8
%295 = add i32 %i.0.i, 1
br i1 %294, label %loop_body.i, label %next-block3.i.loopexit
next-block3.i.loopexit: ; preds = %next-block.i
%.lcssa425 = phi i32 [ %295, %next-block.i ]
br label %next-block3.i
next-block3.i: ; preds = %next-block3.i.loopexit, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i
%i.1.i = phi i32 [ %.sroa.11.0, %_ZN2ll6addsub5add_n20h8bb77a9374decb4a6baE.exit.i ], [ %.lcssa425, %next-block3.i.loopexit ]
%296 = icmp ne %"ll::limb::Limb"* %242, %.sroa.0.0
%297 = icmp sgt i32 %.sroa.5.0, %i.1.i
%..i = and i1 %296, %297
br i1 %..i, label %then-block-629-.i, label %normal-return53
then-block-629-.i: ; preds = %next-block3.i
%298 = sext i32 %i.1.i to i64
%299 = sub i32 %.sroa.5.0, %i.1.i
%300 = icmp sgt i32 %299, 0
br i1 %300, label %while_body.lr.ph.i.i.i, label %normal-return53
while_body.lr.ph.i.i.i: ; preds = %then-block-629-.i
%301 = add i32 %.sroa.5.0, -1
%302 = sub i32 %301, %i.1.i
%303 = zext i32 %302 to i64
%304 = add nuw nsw i64 %303, 1
%end.idx = add nuw nsw i64 %303, 1
%n.vec = and i64 %304, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%305 = sext i32 %i.1.i to i64
%306 = add i32 %.sroa.5.0, -1
%307 = sub i32 %306, %i.1.i
%308 = zext i32 %307 to i64
%309 = add nsw i64 %305, %308
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %242, i64 %305
%scevgep363 = getelementptr %"ll::limb::Limb"* %.sroa.0.0, i64 %309
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep363
%scevgep361 = getelementptr %"ll::limb::Limb"* %.sroa.0.0, i64 %305
%scevgep359 = getelementptr %"ll::limb::Limb"* %242, i64 %309
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep361, %scevgep359
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%310 = add i64 %index, %298
%311 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %310, i32 0
%312 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %310, i32 0
%313 = bitcast i64* %311 to <2 x i64>*
%wide.load = load <2 x i64>* %313, align 8
%314 = getelementptr i64* %311, i64 2
%315 = bitcast i64* %314 to <2 x i64>*
%wide.load368 = load <2 x i64>* %315, align 8
%316 = bitcast i64* %312 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %316, align 8
%317 = getelementptr i64* %312, i64 2
%318 = bitcast i64* %317 to <2 x i64>*
store <2 x i64> %wide.load368, <2 x i64>* %318, align 8
%index.next = add i64 %index, 4
%319 = icmp eq i64 %index.next, %n.vec
br i1 %319, label %middle.block.loopexit, label %vector.body, !llvm.loop !1841
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %normal-return53, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block
%320 = sub i32 %.sroa.5.0, %i.1.i
%321 = trunc i64 %resume.val to i32
%322 = sub i32 %320, %321
%323 = add i32 %.sroa.5.0, -1
%324 = sub i32 %323, %i.1.i
%325 = sub i32 %324, %321
%xtraiter428 = and i32 %322, 3
%lcmp.mod429 = icmp ne i32 %xtraiter428, 0
br i1 %lcmp.mod429, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val, %while_body.i.i.i.preheader ]
%prol.iter430 = phi i32 [ %xtraiter428, %while_body.i.i.i.preheader ], [ %prol.iter430.sub, %while_body.i.i.i.prol ]
%.sum.i.i.prol = add i64 %indvars.iv.i.i.i.prol, %298
%326 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %.sum.i.i.prol, i32 0
%327 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %.sum.i.i.prol, i32 0
%328 = load i64* %326, align 8
store i64 %328, i64* %327, align 8
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv341.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond342.prol = icmp eq i32 %lftr.wideiv341.prol, %302
%prol.iter430.sub = sub i32 %prol.iter430, 1
%prol.iter430.cmp = icmp ne i32 %prol.iter430.sub, 0
br i1 %prol.iter430.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !1842
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%329 = icmp ult i32 %325, 3
br i1 %329, label %normal-return53.loopexit, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%.sum.i.i = add i64 %indvars.iv.i.i.i, %298
%330 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %.sum.i.i, i32 0
%331 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %.sum.i.i, i32 0
%332 = load i64* %330, align 8
store i64 %332, i64* %331, align 8
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv341 = trunc i64 %indvars.iv.i.i.i to i32
%.sum.i.i.1 = add i64 %indvars.iv.next.i.i.i, %298
%333 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %.sum.i.i.1, i32 0
%334 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %.sum.i.i.1, i32 0
%335 = load i64* %333, align 8
store i64 %335, i64* %334, align 8
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv341.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%.sum.i.i.2 = add i64 %indvars.iv.next.i.i.i.1, %298
%336 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %.sum.i.i.2, i32 0
%337 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %.sum.i.i.2, i32 0
%338 = load i64* %336, align 8
store i64 %338, i64* %337, align 8
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv341.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%.sum.i.i.3 = add i64 %indvars.iv.next.i.i.i.2, %298
%339 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0.0, i64 %.sum.i.i.3, i32 0
%340 = getelementptr inbounds %"ll::limb::Limb"* %242, i64 %.sum.i.i.3, i32 0
%341 = load i64* %339, align 8
store i64 %341, i64* %340, align 8
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv341.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond342.3 = icmp eq i32 %lftr.wideiv341.3, %302
br i1 %exitcond342.3, label %normal-return53.loopexit.unr-lcssa, label %while_body.i.i.i, !llvm.loop !1843
normal-return53.loopexit.unr-lcssa: ; preds = %while_body.i.i.i
br label %normal-return53.loopexit
normal-return53.loopexit: ; preds = %while_body.i.i.i.preheader.split, %normal-return53.loopexit.unr-lcssa
br label %normal-return53
normal-return53.loopexit422: ; preds = %loop_body.i
br label %normal-return53
normal-return53: ; preds = %normal-return53.loopexit422, %normal-return53.loopexit, %middle.block, %then-block-629-.i, %next-block3.i
%sret_slot.sroa.0.0.i = phi i64 [ 0, %next-block3.i ], [ 0, %then-block-629-.i ], [ 0, %middle.block ], [ 0, %normal-return53.loopexit ], [ 1, %normal-return53.loopexit422 ]
store i32 %.sroa.5.0, i32* %4, align 4
%342 = icmp eq i32 %.sroa.5.0, 0
br i1 %342, label %normal-return55, label %join.lr.ph.i
join.lr.ph.i: ; preds = %normal-return53
%343 = ashr i32 %.sroa.5.0, 31
%344 = or i32 %343, 1
%345 = load %"ll::limb::Limb"** %241, align 8, !alias.scope !1844
br label %join.i
while_body.i: ; preds = %join.i
%346 = sub i32 %348, %344
store i32 %346, i32* %4, align 4, !alias.scope !1844
%347 = icmp eq i32 %348, %344
br i1 %347, label %normal-return55.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%348 = phi i32 [ %.sroa.5.0, %join.lr.ph.i ], [ %346, %while_body.i ]
%349 = icmp slt i32 %348, 0
%350 = sub i32 0, %348
%sret_slot.0.i.i.i = select i1 %349, i32 %350, i32 %348
%351 = add i32 %sret_slot.0.i.i.i, -1
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds %"ll::limb::Limb"* %345, i64 %352, i32 0
%354 = load i64* %353, align 8, !alias.scope !1847, !noalias !1850
%355 = icmp eq i64 %354, 0
br i1 %355, label %while_body.i, label %normal-return55.loopexit
normal-return55.loopexit: ; preds = %join.i, %while_body.i
br label %normal-return55
normal-return55: ; preds = %normal-return55.loopexit, %normal-return53
%356 = icmp eq i64 %sret_slot.sroa.0.0.i, 0
br i1 %356, label %next-block57, label %then-block-17055-
then-block-17055-: ; preds = %normal-return55
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 %sret_slot.sroa.0.0.i)
to label %next-block57 unwind label %clean_custom_
next-block57: ; preds = %normal-return55, %then-block-17055-
%357 = bitcast %"int::Int"* %1 to i8*
%358 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %358, i8* %357, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %357, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit187
}
; Function Attrs: inlinehint uwtable
define void @_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit:
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4
%4 = sub i32 0, %3
store i32 %4, i32* %2, align 4
%5 = bitcast %"int::Int"* %1 to i8*
%6 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %5, i64 24, i32 8, i1 false)
tail call void @llvm.lifetime.end(i64 24, i8* %5)
ret void
}
; Function Attrs: uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Sub$LT$Int$GT$3sub20h84b7549c639f9853xBeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%arg.sroa.7 = alloca [12 x i8], align 4
%arg5.sroa.7 = alloca [12 x i8], align 4
%3 = alloca %"int::Int", align 8
%arg8 = alloca %"int::Int", align 8
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !1852
%6 = icmp eq i32 %5, 0
br i1 %6, label %normal-return1, label %next-block
unwind_custom_: ; preds = %next-block7, %then-block-17100-
%7 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%9 = load i8* %8, align 1
%10 = icmp eq i8 %9, -44
br i1 %10, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%11 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%12 = load i32* %11, align 4, !alias.scope !1855
%13 = icmp eq i32 %12, 0
br i1 %13, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%14 = bitcast %"int::Int"* %2 to i8**
%15 = load i8** %14, align 8, !alias.scope !1858
%16 = zext i32 %12 to i64
%17 = shl nuw nsw i64 %16, 3
tail call void @je_sdallocx(i8* %15, i64 %17, i32 0)
store i32 0, i32* %11, align 4, !alias.scope !1855
store i32 0, i32* %22, align 4, !alias.scope !1855
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%18 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %18)
resume { i8*, i32 } %7
normal-return1: ; preds = %entry-block
%arg.sroa.7.0..sroa_idx62 = getelementptr inbounds [12 x i8]* %arg.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.7.0..sroa_idx62)
%19 = bitcast %"int::Int"* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.5.0..sroa_idx50 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%arg.sroa.5.0.copyload = load i32* %arg.sroa.5.0..sroa_idx50, align 8
%arg.sroa.7.0..sroa_idx55 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx55 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_idx62, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %19, i8 29, i64 24, i32 8, i1 false)
%20 = sub i32 0, %arg.sroa.5.0.copyload
%arg.sroa.0.0..sroa_idx47 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx47, align 8
%arg.sroa.5.0..sroa_idx52 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %20, i32* %arg.sroa.5.0..sroa_idx52, align 8
%arg.sroa.7.0..sroa_idx58 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.7.0..sroa_cast59 = bitcast i32* %arg.sroa.7.0..sroa_idx58 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_cast59, i8* %arg.sroa.7.0..sroa_idx62, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx62)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx62)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23: ; preds = %normal-return1, %normal-return6, %normal-return10
%21 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %21)
ret void
next-block: ; preds = %entry-block
%22 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%23 = load i32* %22, align 4, !alias.scope !1861
%24 = icmp eq i32 %23, 0
br i1 %24, label %then-block-17100-, label %next-block7
then-block-17100-: ; preds = %next-block
invoke void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %normal-return6 unwind label %unwind_custom_
normal-return6: ; preds = %then-block-17100-
%arg5.sroa.7.0..sroa_idx43 = getelementptr inbounds [12 x i8]* %arg5.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg5.sroa.7.0..sroa_idx43)
%25 = bitcast %"int::Int"* %2 to i8*
%arg5.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg5.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg5.sroa.0.0..sroa_idx, align 8
%arg5.sroa.5.0.copyload = load i32* %22, align 8
%arg5.sroa.7.0..sroa_idx36 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg5.sroa.7.0..sroa_cast = bitcast i32* %arg5.sroa.7.0..sroa_idx36 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg5.sroa.7.0..sroa_idx43, i8* %arg5.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %25, i8 29, i64 24, i32 8, i1 false)
%26 = sub i32 0, %arg5.sroa.5.0.copyload
%arg5.sroa.0.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg5.sroa.0.0.copyload, %"ll::limb::Limb"** %arg5.sroa.0.0..sroa_idx28, align 8
%arg5.sroa.5.0..sroa_idx33 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %26, i32* %arg5.sroa.5.0..sroa_idx33, align 8
%arg5.sroa.7.0..sroa_idx39 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg5.sroa.7.0..sroa_cast40 = bitcast i32* %arg5.sroa.7.0..sroa_idx39 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg5.sroa.7.0..sroa_cast40, i8* %arg5.sroa.7.0..sroa_idx43, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg5.sroa.7.0..sroa_idx43)
call void @llvm.lifetime.end(i64 12, i8* %arg5.sroa.7.0..sroa_idx43)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
next-block7: ; preds = %next-block
%27 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %27)
%28 = bitcast %"int::Int"* %arg8 to i8*
call void @llvm.lifetime.start(i64 24, i8* %28)
%29 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %28, i8* %29, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %29, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int33Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20hdde029ee1de90c10AveE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg8, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %normal-return10 unwind label %unwind_custom_
normal-return10: ; preds = %next-block7
call void @llvm.lifetime.end(i64 24, i8* %28)
%30 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%31 = load i32* %30, align 8, !alias.scope !1864, !noalias !1867
%32 = sub i32 0, %31
store i32 %32, i32* %30, align 8, !alias.scope !1864, !noalias !1867
%33 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %27, i64 24, i32 8, i1 false), !alias.scope !1869
call void @llvm.lifetime.end(i64 24, i8* %27), !alias.scope !1864, !noalias !1867
call void @llvm.lifetime.end(i64 24, i8* %27)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit23
}
; Function Attrs: uwtable
define void @"_ZN3int18Int.Sub$LT$Int$GT$3sub20h72b7e00297dae24cmCeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%arg.sroa.7 = alloca [12 x i8], align 4
%arg5 = alloca %"int::Int", align 8
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1870
%5 = icmp eq i32 %4, 0
br i1 %5, label %normal-return1, label %next-block
unwind_custom_: ; preds = %next-block4
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15
cond.i: ; preds = %unwind_custom_
%10 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !1873
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %2 to i8**
%14 = load i8** %13, align 8, !alias.scope !1876
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !1873
store i32 0, i32* %43, align 4, !alias.scope !1873
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15: ; preds = %then-block-15297-.i.i, %cond.i, %unwind_custom_
%17 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
tail call void @llvm.lifetime.end(i64 24, i8* %49)
resume { i8*, i32 } %6
normal-return1: ; preds = %entry-block
%arg.sroa.7.0..sroa_idx41 = getelementptr inbounds [12 x i8]* %arg.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.7.0..sroa_idx41)
%18 = bitcast %"int::Int"* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.5.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%arg.sroa.5.0.copyload = load i32* %arg.sroa.5.0..sroa_idx29, align 8
%arg.sroa.7.0..sroa_idx34 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx34 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_idx41, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %18, i8 29, i64 24, i32 8, i1 false)
%19 = sub i32 0, %arg.sroa.5.0.copyload
%arg.sroa.0.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx26, align 8
%arg.sroa.5.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %19, i32* %arg.sroa.5.0..sroa_idx31, align 8
%arg.sroa.7.0..sroa_idx37 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.7.0..sroa_cast38 = bitcast i32* %arg.sroa.7.0..sroa_idx37 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_cast38, i8* %arg.sroa.7.0..sroa_idx41, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx41)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx41)
br label %clean_custom_2
clean_custom_2: ; preds = %normal-return6, %then-block-17151-, %normal-return1
%20 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%21 = load i8* %20, align 1
%22 = icmp eq i8 %21, -44
br i1 %22, label %cond.i22, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24
cond.i22: ; preds = %clean_custom_2
%23 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%24 = load i32* %23, align 4, !alias.scope !1879
%25 = icmp eq i32 %24, 0
br i1 %25, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24, label %then-block-15297-.i.i23
then-block-15297-.i.i23: ; preds = %cond.i22
%26 = bitcast %"int::Int"* %2 to i8**
%27 = load i8** %26, align 8, !alias.scope !1882
%28 = zext i32 %24 to i64
%29 = shl nuw nsw i64 %28, 3
tail call void @je_sdallocx(i8* %27, i64 %29, i32 0)
store i32 0, i32* %23, align 4, !alias.scope !1879
%30 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %30, align 4, !alias.scope !1879
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24: ; preds = %clean_custom_2, %cond.i22, %then-block-15297-.i.i23
%31 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %31)
%32 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%33 = load i8* %32, align 1
%34 = icmp eq i8 %33, -44
br i1 %34, label %cond.i19, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21
cond.i19: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24
%35 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%36 = load i32* %35, align 4, !alias.scope !1885
%37 = icmp eq i32 %36, 0
br i1 %37, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21, label %then-block-15297-.i.i20
then-block-15297-.i.i20: ; preds = %cond.i19
%38 = bitcast %"int::Int"* %1 to i8**
%39 = load i8** %38, align 8, !alias.scope !1888
%40 = zext i32 %36 to i64
%41 = shl nuw nsw i64 %40, 3
tail call void @je_sdallocx(i8* %39, i64 %41, i32 0)
store i32 0, i32* %35, align 4, !alias.scope !1885
store i32 0, i32* %3, align 4, !alias.scope !1885
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit24, %cond.i19, %then-block-15297-.i.i20
%42 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %42)
ret void
next-block: ; preds = %entry-block
%43 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%44 = load i32* %43, align 4, !alias.scope !1891
%45 = icmp eq i32 %44, 0
br i1 %45, label %then-block-17151-, label %next-block4
then-block-17151-: ; preds = %next-block
%46 = bitcast %"int::Int"* %1 to i8*
%47 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %47, i8* %46, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %46, i8 29, i64 24, i32 8, i1 false)
br label %clean_custom_2
next-block4: ; preds = %next-block
%48 = bitcast %"int::Int"* %arg5 to i8*
call void @llvm.lifetime.start(i64 24, i8* %48)
%49 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %48, i8* %49, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %49, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int33Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20hdde029ee1de90c10AveE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg5, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return6 unwind label %unwind_custom_
normal-return6: ; preds = %next-block4
call void @llvm.lifetime.end(i64 24, i8* %48)
br label %clean_custom_2
}
; Function Attrs: uwtable
define void @"_ZN3int49_$RF$$u27$b$u20$Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20h22704dd8d51556bd2CeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16.i.i = alloca [7 x i8], align 1
%.sroa.14.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !1894
%6 = icmp eq i32 %5, 0
br i1 %6, label %then-block-17184-, label %next-block
then-block-17184-: ; preds = %entry-block
%.sroa.14.0..sroa_idx15.i = getelementptr inbounds [7 x i8]* %.sroa.14.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.14.0..sroa_idx15.i)
%7 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%8 = load i32* %7, align 4, !alias.scope !1897, !noalias !1904
%9 = icmp eq i32 %8, 0
br i1 %9, label %"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE.exit", label %next-block.i.i
next-block.i.i: ; preds = %then-block-17184-
%new.sroa.16.i.0..sroa_idx.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx.i)
%10 = icmp slt i32 %8, 0
%11 = sub i32 0, %8
%sret_slot.0.i.i25.i.i = select i1 %10, i32 %11, i32 %8
%12 = icmp eq i32 %sret_slot.0.i.i25.i.i, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i, label %normal-return3.i.i
normal-return3.i.i: ; preds = %next-block.i.i
%13 = zext i32 %sret_slot.0.i.i25.i.i to i64
%14 = shl nuw nsw i64 %13, 3
%15 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %14), !noalias !1907
%16 = ptrtoint i8* %15 to i64
%17 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%18 = load %"ll::limb::Limb"** %17, align 8, !alias.scope !1910, !noalias !1904
%19 = bitcast %"ll::limb::Limb"* %18 to i8*
%20 = bitcast i8* %15 to %"ll::limb::Limb"*
%21 = icmp sgt i32 %sret_slot.0.i.i25.i.i, 0
br i1 %21, label %while_body.lr.ph.i.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i
while_body.lr.ph.i.i.i: ; preds = %normal-return3.i.i
%22 = add i32 %sret_slot.0.i.i25.i.i, -1
%23 = zext i32 %22 to i64
%24 = add nuw nsw i64 %23, 1
%end.idx106 = add nuw nsw i64 %23, 1
%n.vec108 = and i64 %24, 8589934588
%cmp.zero110 = icmp eq i64 %n.vec108, 0
%25 = add i32 %sret_slot.0.i.i25.i.i, -1
%26 = zext i32 %25 to i64
br i1 %cmp.zero110, label %middle.block103, label %vector.memcheck119
vector.memcheck119: ; preds = %while_body.lr.ph.i.i.i
%scevgep113 = getelementptr %"ll::limb::Limb"* %18, i64 %26
%scevgep113114 = bitcast %"ll::limb::Limb"* %scevgep113 to i8*
%bound0115 = icmp ule i8* %15, %scevgep113114
%27 = shl nuw nsw i64 %26, 3
%scevgep112 = getelementptr i8* %15, i64 %27
%bound1116 = icmp ule i8* %19, %scevgep112
%memcheck.conflict118 = and i1 %bound0115, %bound1116
br i1 %memcheck.conflict118, label %middle.block103, label %vector.body102.preheader
vector.body102.preheader: ; preds = %vector.memcheck119
br label %vector.body102
vector.body102: ; preds = %vector.body102.preheader, %vector.body102
%index105 = phi i64 [ %index.next125, %vector.body102 ], [ 0, %vector.body102.preheader ]
%28 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %index105, i32 0
%29 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index105, i32 0
%30 = bitcast i64* %28 to <2 x i64>*
%wide.load130 = load <2 x i64>* %30, align 8, !noalias !1913
%31 = getelementptr i64* %28, i64 2
%32 = bitcast i64* %31 to <2 x i64>*
%wide.load131 = load <2 x i64>* %32, align 8, !noalias !1913
%33 = bitcast i64* %29 to <2 x i64>*
store <2 x i64> %wide.load130, <2 x i64>* %33, align 8, !noalias !1913
%34 = getelementptr i64* %29, i64 2
%35 = bitcast i64* %34 to <2 x i64>*
store <2 x i64> %wide.load131, <2 x i64>* %35, align 8, !noalias !1913
%index.next125 = add i64 %index105, 4
%36 = icmp eq i64 %index.next125, %n.vec108
br i1 %36, label %middle.block103.loopexit, label %vector.body102, !llvm.loop !1914
middle.block103.loopexit: ; preds = %vector.body102
br label %middle.block103
middle.block103: ; preds = %middle.block103.loopexit, %vector.memcheck119, %while_body.lr.ph.i.i.i
%resume.val120 = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck119 ], [ %n.vec108, %middle.block103.loopexit ]
%cmp.n124 = icmp eq i64 %end.idx106, %resume.val120
br i1 %cmp.n124, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block103
%37 = trunc i64 %resume.val120 to i32
%38 = sub i32 %sret_slot.0.i.i25.i.i, %37
%39 = add i32 %sret_slot.0.i.i25.i.i, -1
%40 = sub i32 %39, %37
%xtraiter = and i32 %38, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val120, %while_body.i.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.i.prol ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.i.i.i.prol, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.i.prol, i32 0
%43 = load i64* %41, align 8, !noalias !1913
store i64 %43, i64* %42, align 8, !noalias !1913
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %22
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !1915
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val120, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%44 = icmp ult i32 %40, 3
br i1 %44, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%45 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.i.i.i, i32 0
%46 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.i, i32 0
%47 = load i64* %45, align 8, !noalias !1913
store i64 %47, i64* %46, align 8, !noalias !1913
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i to i32
%48 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i, i32 0
%49 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.i, i32 0
%50 = load i64* %48, align 8, !noalias !1913
store i64 %50, i64* %49, align 8, !noalias !1913
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%51 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i.1, i32 0
%52 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.i.1, i32 0
%53 = load i64* %51, align 8, !noalias !1913
store i64 %53, i64* %52, align 8, !noalias !1913
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%54 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i.2, i32 0
%55 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.i.2, i32 0
%56 = load i64* %54, align 8, !noalias !1913
store i64 %56, i64* %55, align 8, !noalias !1913
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %22
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa, label %while_body.i.i.i, !llvm.loop !1916
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa: ; preds = %while_body.i.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit: ; preds = %while_body.i.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit, %middle.block103, %normal-return3.i.i, %next-block.i.i
%.sink.i41.i.i = phi i32 [ %sret_slot.0.i.i25.i.i, %normal-return3.i.i ], [ 0, %next-block.i.i ], [ %sret_slot.0.i.i25.i.i, %middle.block103 ], [ %sret_slot.0.i.i25.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit ]
%new.sroa.0.0.3940.i.i = phi i64 [ %16, %normal-return3.i.i ], [ 1, %next-block.i.i ], [ %16, %middle.block103 ], [ %16, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_idx15.i, i8* %new.sroa.16.i.0..sroa_idx.i, i64 7, i32 1, i1 false), !noalias !1917
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx.i)
br label %"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE.exit"
"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE.exit": ; preds = %then-block-17184-, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i
%.sroa.10.0.copyload21.i = phi i32 [ %.sink.i41.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 0, %then-block-17184- ]
%.sroa.6.0.copyload20.i = phi i32 [ %8, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 0, %then-block-17184- ]
%new.sroa.0.0.3940.i19.i = phi i64 [ %new.sroa.0.0.3940.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 1, %then-block-17184- ]
%57 = sub i32 0, %.sroa.6.0.copyload20.i
%.sroa.0.0..sroa_cast4.i = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i19.i, i64* %.sroa.0.0..sroa_cast4.i, align 8, !alias.scope !1918, !noalias !1919
%.sroa.6.0..sroa_idx7.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %57, i32* %.sroa.6.0..sroa_idx7.i, align 8, !alias.scope !1918, !noalias !1919
%.sroa.10.0..sroa_idx10.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.10.0.copyload21.i, i32* %.sroa.10.0..sroa_idx10.i, align 4, !alias.scope !1918, !noalias !1919
%.sroa.12.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.12.0..sroa_idx.i, align 8, !alias.scope !1918, !noalias !1919
%.sroa.14.0..sroa_raw_cast.i = bitcast %"int::Int"* %0 to i8*
%.sroa.14.0..sroa_raw_idx.i = getelementptr inbounds i8* %.sroa.14.0..sroa_raw_cast.i, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_raw_idx.i, i8* %.sroa.14.0..sroa_idx15.i, i64 7, i32 1, i1 false), !noalias !1919
call void @llvm.lifetime.end(i64 7, i8* %.sroa.14.0..sroa_idx15.i)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.14.0..sroa_idx15.i)
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, %"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE.exit"
ret void
next-block: ; preds = %entry-block
%58 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%59 = load i32* %58, align 4, !alias.scope !1920
%60 = icmp eq i32 %59, 0
br i1 %60, label %next-block.i20, label %next-block.i
next-block.i20: ; preds = %next-block
%new.sroa.16.0..sroa_idx36.i18 = getelementptr inbounds [7 x i8]* %new.sroa.16.i.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i18)
%61 = icmp slt i32 %5, 0
%62 = sub i32 0, %5
%sret_slot.0.i.i25.i19 = select i1 %61, i32 %62, i32 %5
%63 = icmp eq i32 %sret_slot.0.i.i25.i19, 0
br i1 %63, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38, label %normal-return3.i21
normal-return3.i21: ; preds = %next-block.i20
%64 = zext i32 %sret_slot.0.i.i25.i19 to i64
%65 = shl nuw nsw i64 %64, 3
%66 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %65), !noalias !1923
%67 = ptrtoint i8* %66 to i64
%68 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%69 = load %"ll::limb::Limb"** %68, align 8, !alias.scope !1929, !noalias !1932
%70 = bitcast %"ll::limb::Limb"* %69 to i8*
%71 = bitcast i8* %66 to %"ll::limb::Limb"*
%72 = icmp sgt i32 %sret_slot.0.i.i25.i19, 0
br i1 %72, label %while_body.lr.ph.i.i22, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38
while_body.lr.ph.i.i22: ; preds = %normal-return3.i21
%73 = add i32 %sret_slot.0.i.i25.i19, -1
%74 = zext i32 %73 to i64
%75 = add nuw nsw i64 %74, 1
%end.idx67 = add nuw nsw i64 %74, 1
%n.vec69 = and i64 %75, 8589934588
%cmp.zero71 = icmp eq i64 %n.vec69, 0
%76 = add i32 %sret_slot.0.i.i25.i19, -1
%77 = zext i32 %76 to i64
br i1 %cmp.zero71, label %middle.block64, label %vector.memcheck80
vector.memcheck80: ; preds = %while_body.lr.ph.i.i22
%scevgep74 = getelementptr %"ll::limb::Limb"* %69, i64 %77
%scevgep7475 = bitcast %"ll::limb::Limb"* %scevgep74 to i8*
%bound076 = icmp ule i8* %66, %scevgep7475
%78 = shl nuw nsw i64 %77, 3
%scevgep73 = getelementptr i8* %66, i64 %78
%bound177 = icmp ule i8* %70, %scevgep73
%memcheck.conflict79 = and i1 %bound076, %bound177
br i1 %memcheck.conflict79, label %middle.block64, label %vector.body63.preheader
vector.body63.preheader: ; preds = %vector.memcheck80
br label %vector.body63
vector.body63: ; preds = %vector.body63.preheader, %vector.body63
%index66 = phi i64 [ %index.next86, %vector.body63 ], [ 0, %vector.body63.preheader ]
%79 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %index66, i32 0
%80 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %index66, i32 0
%81 = bitcast i64* %79 to <2 x i64>*
%wide.load91 = load <2 x i64>* %81, align 8, !noalias !1933
%82 = getelementptr i64* %79, i64 2
%83 = bitcast i64* %82 to <2 x i64>*
%wide.load92 = load <2 x i64>* %83, align 8, !noalias !1933
%84 = bitcast i64* %80 to <2 x i64>*
store <2 x i64> %wide.load91, <2 x i64>* %84, align 8, !noalias !1933
%85 = getelementptr i64* %80, i64 2
%86 = bitcast i64* %85 to <2 x i64>*
store <2 x i64> %wide.load92, <2 x i64>* %86, align 8, !noalias !1933
%index.next86 = add i64 %index66, 4
%87 = icmp eq i64 %index.next86, %n.vec69
br i1 %87, label %middle.block64.loopexit, label %vector.body63, !llvm.loop !1934
middle.block64.loopexit: ; preds = %vector.body63
br label %middle.block64
middle.block64: ; preds = %middle.block64.loopexit, %vector.memcheck80, %while_body.lr.ph.i.i22
%resume.val81 = phi i64 [ 0, %while_body.lr.ph.i.i22 ], [ 0, %vector.memcheck80 ], [ %n.vec69, %middle.block64.loopexit ]
%cmp.n85 = icmp eq i64 %end.idx67, %resume.val81
br i1 %cmp.n85, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38, label %while_body.i.i27.preheader
while_body.i.i27.preheader: ; preds = %middle.block64
%88 = trunc i64 %resume.val81 to i32
%89 = sub i32 %sret_slot.0.i.i25.i19, %88
%90 = add i32 %sret_slot.0.i.i25.i19, -1
%91 = sub i32 %90, %88
%xtraiter138 = and i32 %89, 3
%lcmp.mod139 = icmp ne i32 %xtraiter138, 0
br i1 %lcmp.mod139, label %while_body.i.i27.prol, label %while_body.i.i27.preheader.split
while_body.i.i27.prol: ; preds = %while_body.i.i27.prol, %while_body.i.i27.preheader
%indvars.iv.i.i23.prol = phi i64 [ %indvars.iv.next.i.i24.prol, %while_body.i.i27.prol ], [ %resume.val81, %while_body.i.i27.preheader ]
%prol.iter140 = phi i32 [ %xtraiter138, %while_body.i.i27.preheader ], [ %prol.iter140.sub, %while_body.i.i27.prol ]
%92 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %indvars.iv.i.i23.prol, i32 0
%93 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.i.i23.prol, i32 0
%94 = load i64* %92, align 8, !noalias !1933
store i64 %94, i64* %93, align 8, !noalias !1933
%indvars.iv.next.i.i24.prol = add nuw nsw i64 %indvars.iv.i.i23.prol, 1
%lftr.wideiv46.prol = trunc i64 %indvars.iv.i.i23.prol to i32
%exitcond47.prol = icmp eq i32 %lftr.wideiv46.prol, %73
%prol.iter140.sub = sub i32 %prol.iter140, 1
%prol.iter140.cmp = icmp ne i32 %prol.iter140.sub, 0
br i1 %prol.iter140.cmp, label %while_body.i.i27.prol, label %while_body.i.i27.preheader.split, !llvm.loop !1935
while_body.i.i27.preheader.split: ; preds = %while_body.i.i27.prol, %while_body.i.i27.preheader
%indvars.iv.i.i23.unr = phi i64 [ %resume.val81, %while_body.i.i27.preheader ], [ %indvars.iv.next.i.i24.prol, %while_body.i.i27.prol ]
%95 = icmp ult i32 %91, 3
br i1 %95, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit, label %while_body.i.i27.preheader.split.split
while_body.i.i27.preheader.split.split: ; preds = %while_body.i.i27.preheader.split
br label %while_body.i.i27
while_body.i.i27: ; preds = %while_body.i.i27, %while_body.i.i27.preheader.split.split
%indvars.iv.i.i23 = phi i64 [ %indvars.iv.i.i23.unr, %while_body.i.i27.preheader.split.split ], [ %indvars.iv.next.i.i24.3, %while_body.i.i27 ]
%96 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %indvars.iv.i.i23, i32 0
%97 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.i.i23, i32 0
%98 = load i64* %96, align 8, !noalias !1933
store i64 %98, i64* %97, align 8, !noalias !1933
%indvars.iv.next.i.i24 = add nuw nsw i64 %indvars.iv.i.i23, 1
%lftr.wideiv46 = trunc i64 %indvars.iv.i.i23 to i32
%99 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %indvars.iv.next.i.i24, i32 0
%100 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i24, i32 0
%101 = load i64* %99, align 8, !noalias !1933
store i64 %101, i64* %100, align 8, !noalias !1933
%indvars.iv.next.i.i24.1 = add nuw nsw i64 %indvars.iv.next.i.i24, 1
%lftr.wideiv46.1 = trunc i64 %indvars.iv.next.i.i24 to i32
%102 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %indvars.iv.next.i.i24.1, i32 0
%103 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i24.1, i32 0
%104 = load i64* %102, align 8, !noalias !1933
store i64 %104, i64* %103, align 8, !noalias !1933
%indvars.iv.next.i.i24.2 = add nuw nsw i64 %indvars.iv.next.i.i24.1, 1
%lftr.wideiv46.2 = trunc i64 %indvars.iv.next.i.i24.1 to i32
%105 = getelementptr inbounds %"ll::limb::Limb"* %69, i64 %indvars.iv.next.i.i24.2, i32 0
%106 = getelementptr inbounds %"ll::limb::Limb"* %71, i64 %indvars.iv.next.i.i24.2, i32 0
%107 = load i64* %105, align 8, !noalias !1933
store i64 %107, i64* %106, align 8, !noalias !1933
%indvars.iv.next.i.i24.3 = add nuw nsw i64 %indvars.iv.next.i.i24.2, 1
%lftr.wideiv46.3 = trunc i64 %indvars.iv.next.i.i24.2 to i32
%exitcond47.3 = icmp eq i32 %lftr.wideiv46.3, %73
br i1 %exitcond47.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit.unr-lcssa, label %while_body.i.i27, !llvm.loop !1936
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit.unr-lcssa: ; preds = %while_body.i.i27
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit: ; preds = %while_body.i.i27.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit, %middle.block64, %normal-return3.i21, %next-block.i20
%.sink.i41.i30 = phi i32 [ %sret_slot.0.i.i25.i19, %normal-return3.i21 ], [ 0, %next-block.i20 ], [ %sret_slot.0.i.i25.i19, %middle.block64 ], [ %sret_slot.0.i.i25.i19, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit ]
%new.sroa.0.0.3940.i31 = phi i64 [ %67, %normal-return3.i21 ], [ 1, %next-block.i20 ], [ %67, %middle.block64 ], [ %67, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i38.loopexit ]
%new.sroa.0.0..sroa_cast27.i32 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i31, i64* %new.sroa.0.0..sroa_cast27.i32, align 8, !alias.scope !1932, !noalias !1937
%new.sroa.8.0..sroa_idx29.i33 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %5, i32* %new.sroa.8.0..sroa_idx29.i33, align 8, !alias.scope !1932, !noalias !1937
%new.sroa.11.0..sroa_idx31.i34 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i30, i32* %new.sroa.11.0..sroa_idx31.i34, align 4, !alias.scope !1932, !noalias !1937
%new.sroa.14.0..sroa_idx.i35 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i35, align 8, !alias.scope !1932, !noalias !1937
%new.sroa.16.0..sroa_raw_cast.i36 = bitcast %"int::Int"* %0 to i8*
%new.sroa.16.0..sroa_raw_idx.i37 = getelementptr inbounds i8* %new.sroa.16.0..sroa_raw_cast.i36, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i37, i8* %new.sroa.16.0..sroa_idx36.i18, i64 7, i32 1, i1 false), !noalias !1937
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i18)
br label %clean_custom_
next-block.i: ; preds = %next-block
%108 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %108)
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%109 = icmp slt i32 %5, 0
%110 = sub i32 0, %5
%sret_slot.0.i.i25.i = select i1 %109, i32 %110, i32 %5
%111 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %111, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%112 = zext i32 %sret_slot.0.i.i25.i to i64
%113 = shl nuw nsw i64 %112, 3
%114 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %113), !noalias !1938
%115 = ptrtoint i8* %114 to i64
%116 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%117 = load %"ll::limb::Limb"** %116, align 8, !alias.scope !1944, !noalias !1947
%118 = bitcast %"ll::limb::Limb"* %117 to i8*
%119 = bitcast i8* %114 to %"ll::limb::Limb"*
%120 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %120, label %while_body.lr.ph.i.i, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%121 = add i32 %sret_slot.0.i.i25.i, -1
%122 = zext i32 %121 to i64
%123 = add nuw nsw i64 %122, 1
%end.idx = add nuw nsw i64 %122, 1
%n.vec = and i64 %123, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%124 = add i32 %sret_slot.0.i.i25.i, -1
%125 = zext i32 %124 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep50 = getelementptr %"ll::limb::Limb"* %117, i64 %125
%scevgep5051 = bitcast %"ll::limb::Limb"* %scevgep50 to i8*
%bound0 = icmp ule i8* %114, %scevgep5051
%126 = shl nuw nsw i64 %125, 3
%scevgep = getelementptr i8* %114, i64 %126
%bound1 = icmp ule i8* %118, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%127 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %index, i32 0
%128 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %index, i32 0
%129 = bitcast i64* %127 to <2 x i64>*
%wide.load = load <2 x i64>* %129, align 8, !noalias !1948
%130 = getelementptr i64* %127, i64 2
%131 = bitcast i64* %130 to <2 x i64>*
%wide.load53 = load <2 x i64>* %131, align 8, !noalias !1948
%132 = bitcast i64* %128 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %132, align 8, !noalias !1948
%133 = getelementptr i64* %128, i64 2
%134 = bitcast i64* %133 to <2 x i64>*
store <2 x i64> %wide.load53, <2 x i64>* %134, align 8, !noalias !1948
%index.next = add i64 %index, 4
%135 = icmp eq i64 %index.next, %n.vec
br i1 %135, label %middle.block.loopexit, label %vector.body, !llvm.loop !1949
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%136 = trunc i64 %resume.val to i32
%137 = sub i32 %sret_slot.0.i.i25.i, %136
%138 = add i32 %sret_slot.0.i.i25.i, -1
%139 = sub i32 %138, %136
%xtraiter141 = and i32 %137, 3
%lcmp.mod142 = icmp ne i32 %xtraiter141, 0
br i1 %lcmp.mod142, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter143 = phi i32 [ %xtraiter141, %while_body.i.i.preheader ], [ %prol.iter143.sub, %while_body.i.i.prol ]
%140 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %indvars.iv.i.i.prol, i32 0
%141 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %indvars.iv.i.i.prol, i32 0
%142 = load i64* %140, align 8, !noalias !1948
store i64 %142, i64* %141, align 8, !noalias !1948
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv48.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond49.prol = icmp eq i32 %lftr.wideiv48.prol, %121
%prol.iter143.sub = sub i32 %prol.iter143, 1
%prol.iter143.cmp = icmp ne i32 %prol.iter143.sub, 0
br i1 %prol.iter143.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !1950
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%143 = icmp ult i32 %139, 3
br i1 %143, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%144 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %indvars.iv.i.i, i32 0
%145 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %indvars.iv.i.i, i32 0
%146 = load i64* %144, align 8, !noalias !1948
store i64 %146, i64* %145, align 8, !noalias !1948
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv48 = trunc i64 %indvars.iv.i.i to i32
%147 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %indvars.iv.next.i.i, i32 0
%148 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %indvars.iv.next.i.i, i32 0
%149 = load i64* %147, align 8, !noalias !1948
store i64 %149, i64* %148, align 8, !noalias !1948
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv48.1 = trunc i64 %indvars.iv.next.i.i to i32
%150 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %indvars.iv.next.i.i.1, i32 0
%151 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %indvars.iv.next.i.i.1, i32 0
%152 = load i64* %150, align 8, !noalias !1948
store i64 %152, i64* %151, align 8, !noalias !1948
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv48.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%153 = getelementptr inbounds %"ll::limb::Limb"* %117, i64 %indvars.iv.next.i.i.2, i32 0
%154 = getelementptr inbounds %"ll::limb::Limb"* %119, i64 %indvars.iv.next.i.i.2, i32 0
%155 = load i64* %153, align 8, !noalias !1948
store i64 %155, i64* %154, align 8, !noalias !1948
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv48.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond49.3 = icmp eq i32 %lftr.wideiv48.3, %121
br i1 %exitcond49.3, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !1951
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, %middle.block, %next-block.i, %normal-return3.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %115, %normal-return3.i ], [ 1, %next-block.i ], [ %115, %middle.block ], [ %115, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !1947, !noalias !1952
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %5, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !1947, !noalias !1952
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !1947, !noalias !1952
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !1947, !noalias !1952
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %108, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !1952
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
call void @"_ZN3int33Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20hdde029ee1de90c10AveE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2)
call void @llvm.lifetime.end(i64 24, i8* %108)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.14 = alloca [7 x i8], align 1
%.sroa.14.0..sroa_idx15 = getelementptr inbounds [7 x i8]* %.sroa.14, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.14.0..sroa_idx15)
%2 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%3 = load i32* %2, align 4, !alias.scope !1953, !noalias !1958
%4 = icmp eq i32 %3, 0
br i1 %4, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%5 = icmp slt i32 %3, 0
%6 = sub i32 0, %3
%sret_slot.0.i.i25.i = select i1 %5, i32 %6, i32 %3
%7 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %7, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%8 = zext i32 %sret_slot.0.i.i25.i to i64
%9 = shl nuw nsw i64 %8, 3
%10 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %9), !noalias !1960
%11 = ptrtoint i8* %10 to i64
%12 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%13 = load %"ll::limb::Limb"** %12, align 8, !alias.scope !1963, !noalias !1958
%14 = bitcast %"ll::limb::Limb"* %13 to i8*
%15 = bitcast i8* %10 to %"ll::limb::Limb"*
%16 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %16, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%17 = add i32 %sret_slot.0.i.i25.i, -1
%18 = zext i32 %17 to i64
%19 = add nuw nsw i64 %18, 1
%end.idx = add nuw nsw i64 %18, 1
%n.vec = and i64 %19, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%20 = add i32 %sret_slot.0.i.i25.i, -1
%21 = zext i32 %20 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep23 = getelementptr %"ll::limb::Limb"* %13, i64 %21
%scevgep2324 = bitcast %"ll::limb::Limb"* %scevgep23 to i8*
%bound0 = icmp ule i8* %10, %scevgep2324
%22 = shl nuw nsw i64 %21, 3
%scevgep = getelementptr i8* %10, i64 %22
%bound1 = icmp ule i8* %14, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%23 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %index, i32 0
%24 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %index, i32 0
%25 = bitcast i64* %23 to <2 x i64>*
%wide.load = load <2 x i64>* %25, align 8, !noalias !1966
%26 = getelementptr i64* %23, i64 2
%27 = bitcast i64* %26 to <2 x i64>*
%wide.load26 = load <2 x i64>* %27, align 8, !noalias !1966
%28 = bitcast i64* %24 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %28, align 8, !noalias !1966
%29 = getelementptr i64* %24, i64 2
%30 = bitcast i64* %29 to <2 x i64>*
store <2 x i64> %wide.load26, <2 x i64>* %30, align 8, !noalias !1966
%index.next = add i64 %index, 4
%31 = icmp eq i64 %index.next, %n.vec
br i1 %31, label %middle.block.loopexit, label %vector.body, !llvm.loop !1967
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%32 = trunc i64 %resume.val to i32
%33 = sub i32 %sret_slot.0.i.i25.i, %32
%34 = add i32 %sret_slot.0.i.i25.i, -1
%35 = sub i32 %34, %32
%xtraiter = and i32 %33, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%36 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %indvars.iv.i.i.prol, i32 0
%37 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.i.i.prol, i32 0
%38 = load i64* %36, align 8, !noalias !1966
store i64 %38, i64* %37, align 8, !noalias !1966
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %17
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !1968
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%39 = icmp ult i32 %35, 3
br i1 %39, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%40 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %indvars.iv.i.i, i32 0
%41 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.i.i, i32 0
%42 = load i64* %40, align 8, !noalias !1966
store i64 %42, i64* %41, align 8, !noalias !1966
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%43 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %indvars.iv.next.i.i, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i, i32 0
%45 = load i64* %43, align 8, !noalias !1966
store i64 %45, i64* %44, align 8, !noalias !1966
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%46 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %indvars.iv.next.i.i.1, i32 0
%47 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i.1, i32 0
%48 = load i64* %46, align 8, !noalias !1966
store i64 %48, i64* %47, align 8, !noalias !1966
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%49 = getelementptr inbounds %"ll::limb::Limb"* %13, i64 %indvars.iv.next.i.i.2, i32 0
%50 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i.2, i32 0
%51 = load i64* %49, align 8, !noalias !1966
store i64 %51, i64* %50, align 8, !noalias !1966
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %17
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !1969
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %11, %normal-return3.i ], [ 1, %next-block.i ], [ %11, %middle.block ], [ %11, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_idx15, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%.sroa.10.0.copyload21 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%.sroa.6.0.copyload20 = phi i32 [ %3, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i19 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%52 = sub i32 0, %.sroa.6.0.copyload20
%.sroa.0.0..sroa_cast4 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i19, i64* %.sroa.0.0..sroa_cast4, align 8
%.sroa.6.0..sroa_idx7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %52, i32* %.sroa.6.0..sroa_idx7, align 8
%.sroa.10.0..sroa_idx10 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.10.0.copyload21, i32* %.sroa.10.0..sroa_idx10, align 4
%.sroa.12.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.12.0..sroa_idx, align 8
%.sroa.14.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.14.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.14.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.14.0..sroa_raw_idx, i8* %.sroa.14.0..sroa_idx15, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.14.0..sroa_idx15)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.14.0..sroa_idx15)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Mul$LT$Int$GT$3mul20h145788afa0ea569aOKeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int33Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20ha0f99cbf0cc2adaaHJeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %entry-block
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %5
}
; Function Attrs: uwtable
define void @"_ZN3int18Int.Mul$LT$Int$GT$3mul20hef81e43c35c9ca7bbLeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
%out = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%out12 = alloca %"int::Int", align 8
%arg13 = alloca %"int::Int", align 8
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !1970
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-17692-, label %before_rhs
clean_custom_: ; preds = %normal-return4, %normal-return11, %next-block17
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %clean_custom_
%10 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !1973
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %2 to i8**
%14 = load i8** %13, align 8, !alias.scope !1976
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !1973
store i32 0, i32* %29, align 4, !alias.scope !1973
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %clean_custom_, %cond.i, %then-block-15297-.i.i
%17 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%19 = load i8* %18, align 1
%20 = icmp eq i8 %19, -44
br i1 %20, label %cond.i54, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit56
cond.i54: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
%21 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%22 = load i32* %21, align 4, !alias.scope !1979
%23 = icmp eq i32 %22, 0
br i1 %23, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit56, label %then-block-15297-.i.i55
then-block-15297-.i.i55: ; preds = %cond.i54
%24 = bitcast %"int::Int"* %1 to i8**
%25 = load i8** %24, align 8, !alias.scope !1982
%26 = zext i32 %22 to i64
%27 = shl nuw nsw i64 %26, 3
tail call void @je_sdallocx(i8* %25, i64 %27, i32 0)
store i32 0, i32* %21, align 4, !alias.scope !1979
store i32 0, i32* %3, align 4, !alias.scope !1979
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit56
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit56: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %cond.i54, %then-block-15297-.i.i55
%28 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %28)
resume { i8*, i32 } %6
before_rhs: ; preds = %entry-block
%29 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%30 = load i32* %29, align 4, !alias.scope !1985
%31 = icmp eq i32 %30, 0
br i1 %31, label %then-block-17692-, label %normal-return3
then-block-17692-: ; preds = %entry-block, %before_rhs
store i32 0, i32* %3, align 4
%32 = bitcast %"int::Int"* %1 to i8*
%33 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %33, i8* %32, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %32, i8 29, i64 24, i32 8, i1 false)
br label %clean_custom_2
clean_custom_2: ; preds = %next-block17, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit62, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit75, %then-block-17692-
%34 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%35 = load i8* %34, align 1
%36 = icmp eq i8 %35, -44
br i1 %36, label %cond.i63, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65
cond.i63: ; preds = %clean_custom_2
%37 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%38 = load i32* %37, align 4, !alias.scope !1988
%39 = icmp eq i32 %38, 0
br i1 %39, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65, label %then-block-15297-.i.i64
then-block-15297-.i.i64: ; preds = %cond.i63
%40 = bitcast %"int::Int"* %2 to i8**
%41 = load i8** %40, align 8, !alias.scope !1991
%42 = zext i32 %38 to i64
%43 = shl nuw nsw i64 %42, 3
tail call void @je_sdallocx(i8* %41, i64 %43, i32 0)
store i32 0, i32* %37, align 4, !alias.scope !1988
%44 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %44, align 4, !alias.scope !1988
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65: ; preds = %clean_custom_2, %cond.i63, %then-block-15297-.i.i64
%45 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %45)
%46 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%47 = load i8* %46, align 1
%48 = icmp eq i8 %47, -44
br i1 %48, label %cond.i66, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit68
cond.i66: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65
%49 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%50 = load i32* %49, align 4, !alias.scope !1994
%51 = icmp eq i32 %50, 0
br i1 %51, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit68, label %then-block-15297-.i.i67
then-block-15297-.i.i67: ; preds = %cond.i66
%52 = bitcast %"int::Int"* %1 to i8**
%53 = load i8** %52, align 8, !alias.scope !1997
%54 = zext i32 %50 to i64
%55 = shl nuw nsw i64 %54, 3
tail call void @je_sdallocx(i8* %53, i64 %55, i32 0)
store i32 0, i32* %49, align 4, !alias.scope !1994
store i32 0, i32* %3, align 4, !alias.scope !1994
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit68
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit68: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit65, %cond.i66, %then-block-15297-.i.i67
%56 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %56)
ret void
normal-return3: ; preds = %before_rhs
%57 = icmp slt i32 %4, 0
%58 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %57, i32 %58, i32 %4
%59 = icmp eq i32 %sret_slot.0.i.i, 1
br i1 %59, label %normal-return4, label %normal-return9
normal-return4: ; preds = %normal-return3
%60 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%61 = load %"ll::limb::Limb"** %60, align 8, !alias.scope !2000
%val.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %61, i64 0, i32 0
%val.sroa.0.0.copyload = load i64* %val.sroa.0.0..sroa_idx, align 8
%62 = bitcast %"int::Int"* %out to i8*
call void @llvm.lifetime.start(i64 24, i8* %62)
%63 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %63)
%64 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %63, i8* %64, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %64, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %out, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %val.sroa.0.0.copyload)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit75 unwind label %clean_custom_
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit75: ; preds = %normal-return4
call void @llvm.lifetime.end(i64 24, i8* %63)
%65 = getelementptr inbounds %"int::Int"* %out, i64 0, i32 1
%66 = load i32* %65, align 8
%67 = ashr i32 %4, 31
%68 = or i32 %67, 1
%69 = mul i32 %68, %66
store i32 %69, i32* %65, align 8
%70 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %70, i8* %62, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %62)
br label %clean_custom_2
normal-return9: ; preds = %normal-return3
%71 = icmp slt i32 %30, 0
%72 = sub i32 0, %30
%sret_slot.0.i.i72 = select i1 %71, i32 %72, i32 %30
%73 = icmp eq i32 %sret_slot.0.i.i72, 1
br i1 %73, label %normal-return11, label %next-block17
normal-return11: ; preds = %normal-return9
%74 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%75 = load %"ll::limb::Limb"** %74, align 8, !alias.scope !2003
%val10.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %75, i64 0, i32 0
%val10.sroa.0.0.copyload = load i64* %val10.sroa.0.0..sroa_idx, align 8
%76 = bitcast %"int::Int"* %out12 to i8*
call void @llvm.lifetime.start(i64 24, i8* %76)
%77 = bitcast %"int::Int"* %arg13 to i8*
call void @llvm.lifetime.start(i64 24, i8* %77)
%78 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %77, i8* %78, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %78, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %out12, %"int::Int"* noalias nocapture dereferenceable(24) %arg13, i64 %val10.sroa.0.0.copyload)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit62 unwind label %clean_custom_
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit62: ; preds = %normal-return11
call void @llvm.lifetime.end(i64 24, i8* %77)
%79 = getelementptr inbounds %"int::Int"* %out12, i64 0, i32 1
%80 = load i32* %79, align 8
%81 = ashr i32 %30, 31
%82 = or i32 %81, 1
%83 = mul i32 %82, %80
store i32 %83, i32* %79, align 8
%84 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %84, i8* %76, i64 24, i32 8, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %76)
br label %clean_custom_2
next-block17: ; preds = %normal-return9
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h603981f2c29809ddBFeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %clean_custom_2 unwind label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
normal-return:
switch i64 %2, label %before_rhs [
i64 0, label %then-block-17821-
i64 1, label %then-block-17835-
]
then-block-17821-: ; preds = %normal-return
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs: ; preds = %normal-return
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2006
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-17835-, label %join.lr.ph.i
then-block-17835-: ; preds = %normal-return, %before_rhs
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-17835-, %normal-return9
%8 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
join.lr.ph.i: ; preds = %before_rhs
%9 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%10 = load %"ll::limb::Limb"** %9, align 8, !alias.scope !2009
%11 = icmp slt i32 %4, 0
%12 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %11, i32 %12, i32 %4
%13 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %10, i32 0, %"ll::limb::Limb"* %10, i32 %sret_slot.0.i.i, i64 %2)
%14 = ashr i32 %4, 31
%15 = or i32 %14, 1
br label %join.i
while_body.i: ; preds = %join.i
%16 = sub i32 %18, %15
store i32 %16, i32* %3, align 4, !alias.scope !2012
%17 = icmp eq i32 %18, %15
br i1 %17, label %normal-return9, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%18 = phi i32 [ %4, %join.lr.ph.i ], [ %16, %while_body.i ]
%19 = icmp slt i32 %18, 0
%20 = sub i32 0, %18
%sret_slot.0.i.i.i = select i1 %19, i32 %20, i32 %18
%21 = add i32 %sret_slot.0.i.i.i, -1
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds %"ll::limb::Limb"* %10, i64 %22, i32 0
%24 = load i64* %23, align 8, !alias.scope !2015, !noalias !2018
%25 = icmp eq i64 %24, 0
br i1 %25, label %while_body.i, label %normal-return9
normal-return9: ; preds = %join.i, %while_body.i
%26 = bitcast %"int::Int"* %1 to i8*
%27 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* %26, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %26, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: uwtable
define void @"_ZN3int49_$RF$$u27$b$u20$Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20ha5607f4c7a3b2d9crOeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%out.sroa.19 = alloca [7 x i8], align 1
%.sroa.18 = alloca [7 x i8], align 1
%3 = alloca { %"int::Int", %"int::Int" }, align 8
%4 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !2020
%6 = icmp eq i32 %5, 0
br i1 %6, label %then-block-17949-, label %next-block
then-block-17949-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%7 = icmp slt i32 %5, 0
%8 = sub i32 0, %5
%sret_slot.0.i.i = select i1 %7, i32 %8, i32 %5
%9 = icmp eq i32 %sret_slot.0.i.i, 1
br i1 %9, label %then-block-17959-, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
then-block-17959-: ; preds = %next-block
%10 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%11 = load %"ll::limb::Limb"** %10, align 8, !alias.scope !2023
%l.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %11, i64 0, i32 0
%l.sroa.0.0.copyload = load i64* %l.sroa.0.0..sroa_idx, align 8
%12 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%13 = load i32* %12, align 4, !alias.scope !2026
%14 = icmp eq i32 %13, 0
br i1 %14, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40, label %else-block.i35
else-block.i35: ; preds = %then-block-17959-
%15 = ashr i32 %13, 31
%16 = or i32 %15, 1
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40
_ZN3int3Int4sign20he27417198f6be603VJdE.exit40: ; preds = %then-block-17959-, %else-block.i35
%sret_slot.0.i36 = phi i32 [ 0, %then-block-17959- ], [ %16, %else-block.i35 ]
%17 = ashr i32 %5, 31
%18 = or i32 %17, 1
%out.sroa.19.0..sroa_idx87 = getelementptr inbounds [7 x i8]* %out.sroa.19, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %out.sroa.19.0..sroa_idx87)
%.sroa.18.0..sroa_idx88 = getelementptr inbounds [7 x i8]* %.sroa.18, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.18.0..sroa_idx88)
br i1 %14, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%19 = icmp slt i32 %13, 0
%20 = sub i32 0, %13
%sret_slot.0.i.i25.i = select i1 %19, i32 %20, i32 %13
%21 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %21, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%22 = zext i32 %sret_slot.0.i.i25.i to i64
%23 = shl nuw nsw i64 %22, 3
%24 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %23), !noalias !2029
%25 = ptrtoint i8* %24 to i64
%26 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%27 = load %"ll::limb::Limb"** %26, align 8, !alias.scope !2035, !noalias !2038
%28 = bitcast %"ll::limb::Limb"* %27 to i8*
%29 = bitcast i8* %24 to %"ll::limb::Limb"*
%30 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %30, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%31 = add i32 %sret_slot.0.i.i25.i, -1
%32 = zext i32 %31 to i64
%33 = add nuw nsw i64 %32, 1
%end.idx = add nuw nsw i64 %32, 1
%n.vec = and i64 %33, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%34 = add i32 %sret_slot.0.i.i25.i, -1
%35 = zext i32 %34 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep103 = getelementptr %"ll::limb::Limb"* %27, i64 %35
%scevgep103104 = bitcast %"ll::limb::Limb"* %scevgep103 to i8*
%bound0 = icmp ule i8* %24, %scevgep103104
%36 = shl nuw nsw i64 %35, 3
%scevgep = getelementptr i8* %24, i64 %36
%bound1 = icmp ule i8* %28, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %index, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %index, i32 0
%39 = bitcast i64* %37 to <2 x i64>*
%wide.load = load <2 x i64>* %39, align 8, !noalias !2039
%40 = getelementptr i64* %37, i64 2
%41 = bitcast i64* %40 to <2 x i64>*
%wide.load106 = load <2 x i64>* %41, align 8, !noalias !2039
%42 = bitcast i64* %38 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %42, align 8, !noalias !2039
%43 = getelementptr i64* %38, i64 2
%44 = bitcast i64* %43 to <2 x i64>*
store <2 x i64> %wide.load106, <2 x i64>* %44, align 8, !noalias !2039
%index.next = add i64 %index, 4
%45 = icmp eq i64 %index.next, %n.vec
br i1 %45, label %middle.block.loopexit, label %vector.body, !llvm.loop !2040
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44, label %while_body.i.i43.preheader
while_body.i.i43.preheader: ; preds = %middle.block
%46 = trunc i64 %resume.val to i32
%47 = sub i32 %sret_slot.0.i.i25.i, %46
%48 = add i32 %sret_slot.0.i.i25.i, -1
%49 = sub i32 %48, %46
%xtraiter = and i32 %47, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i43.prol, label %while_body.i.i43.preheader.split
while_body.i.i43.prol: ; preds = %while_body.i.i43.prol, %while_body.i.i43.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i43.prol ], [ %resume.val, %while_body.i.i43.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i43.preheader ], [ %prol.iter.sub, %while_body.i.i43.prol ]
%50 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.i.i.prol, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.i.i.prol, i32 0
%52 = load i64* %50, align 8, !noalias !2039
store i64 %52, i64* %51, align 8, !noalias !2039
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %31
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i43.prol, label %while_body.i.i43.preheader.split, !llvm.loop !2041
while_body.i.i43.preheader.split: ; preds = %while_body.i.i43.prol, %while_body.i.i43.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i43.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i43.prol ]
%53 = icmp ult i32 %49, 3
br i1 %53, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit, label %while_body.i.i43.preheader.split.split
while_body.i.i43.preheader.split.split: ; preds = %while_body.i.i43.preheader.split
br label %while_body.i.i43
while_body.i.i43: ; preds = %while_body.i.i43, %while_body.i.i43.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i43.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i43 ]
%54 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.i.i, i32 0
%55 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.i.i, i32 0
%56 = load i64* %54, align 8, !noalias !2039
store i64 %56, i64* %55, align 8, !noalias !2039
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%57 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i, i32 0
%58 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i, i32 0
%59 = load i64* %57, align 8, !noalias !2039
store i64 %59, i64* %58, align 8, !noalias !2039
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%60 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i.1, i32 0
%61 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i.1, i32 0
%62 = load i64* %60, align 8, !noalias !2039
store i64 %62, i64* %61, align 8, !noalias !2039
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%63 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i.2, i32 0
%64 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i.2, i32 0
%65 = load i64* %63, align 8, !noalias !2039
store i64 %65, i64* %64, align 8, !noalias !2039
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %31
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit.unr-lcssa, label %while_body.i.i43, !llvm.loop !2042
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit.unr-lcssa: ; preds = %while_body.i.i43
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit: ; preds = %while_body.i.i43.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %25, %normal-return3.i ], [ 1, %next-block.i ], [ %25, %middle.block ], [ %25, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_idx88, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44
%.sroa.14.0.copyload97 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44 ], [ 0, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40 ]
%.sroa.10.0.copyload94 = phi i32 [ %13, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44 ], [ 0, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40 ]
%.sroa.0.0.93 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i44 ], [ 1, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit40 ]
switch i64 %l.sroa.0.0.copyload, label %before_rhs.i [
i64 0, label %then-block-17821-.i
i64 1, label %then-block-17835-.i
]
then-block-17821-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2043
unreachable
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%66 = icmp eq i32 %.sroa.10.0.copyload94, 0
br i1 %66, label %then-block-17835-.i, label %join.lr.ph.i.i
then-block-17835-.i: ; preds = %before_rhs.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out.sroa.19.0..sroa_idx87, i8* %.sroa.18.0..sroa_idx88, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx88, i8 29, i64 7, i32 1, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
join.lr.ph.i.i: ; preds = %before_rhs.i
%67 = inttoptr i64 %.sroa.0.0.93 to %"ll::limb::Limb"*
%68 = icmp slt i32 %.sroa.10.0.copyload94, 0
%69 = sub i32 0, %.sroa.10.0.copyload94
%sret_slot.0.i.i.i = select i1 %68, i32 %69, i32 %.sroa.10.0.copyload94
%70 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %67, i32 0, %"ll::limb::Limb"* %67, i32 %sret_slot.0.i.i.i, i64 %l.sroa.0.0.copyload), !noalias !2043
%71 = ashr i32 %.sroa.10.0.copyload94, 31
%72 = or i32 %71, 1
br label %join.i.i
while_body.i.i: ; preds = %join.i.i
%73 = sub i32 %.sroa.10.0.copyload95, %72
%74 = icmp eq i32 %.sroa.10.0.copyload95, %72
br i1 %74, label %normal-return9.i, label %join.i.i
join.i.i: ; preds = %while_body.i.i, %join.lr.ph.i.i
%.sroa.10.0.copyload95 = phi i32 [ %.sroa.10.0.copyload94, %join.lr.ph.i.i ], [ %73, %while_body.i.i ]
%75 = icmp slt i32 %.sroa.10.0.copyload95, 0
%76 = sub i32 0, %.sroa.10.0.copyload95
%sret_slot.0.i.i.i.i = select i1 %75, i32 %76, i32 %.sroa.10.0.copyload95
%77 = add i32 %sret_slot.0.i.i.i.i, -1
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds %"ll::limb::Limb"* %67, i64 %78, i32 0
%80 = load i64* %79, align 8, !alias.scope !2047, !noalias !2050
%81 = icmp eq i64 %80, 0
br i1 %81, label %while_body.i.i, label %normal-return9.i
normal-return9.i: ; preds = %join.i.i, %while_body.i.i
%.sroa.10.0.copyload96 = phi i32 [ %.sroa.10.0.copyload95, %join.i.i ], [ %73, %while_body.i.i ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out.sroa.19.0..sroa_idx87, i8* %.sroa.18.0..sroa_idx88, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx88, i8 29, i64 7, i32 1, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-17835-.i, %normal-return9.i
%out.sroa.7.0.copyload100 = phi i32 [ %.sroa.10.0.copyload94, %then-block-17835-.i ], [ %.sroa.10.0.copyload96, %normal-return9.i ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx88)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx88)
%82 = icmp slt i32 %out.sroa.7.0.copyload100, 0
%83 = sub i32 0, %out.sroa.7.0.copyload100
%sret_slot.0.i.i41 = select i1 %82, i32 %83, i32 %out.sroa.7.0.copyload100
%84 = mul nsw i32 %18, %sret_slot.0.i36
%85 = mul i32 %84, %sret_slot.0.i.i41
%out.sroa.0.0..sroa_cast = bitcast %"int::Int"* %0 to i64*
store i64 %.sroa.0.0.93, i64* %out.sroa.0.0..sroa_cast, align 8
%out.sroa.7.0..sroa_idx77 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %85, i32* %out.sroa.7.0..sroa_idx77, align 8
%out.sroa.12.0..sroa_idx79 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.14.0.copyload97, i32* %out.sroa.12.0..sroa_idx79, align 4
%out.sroa.16.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %out.sroa.16.0..sroa_idx, align 8
%out.sroa.19.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%out.sroa.19.0..sroa_raw_idx = getelementptr inbounds i8* %out.sroa.19.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out.sroa.19.0..sroa_raw_idx, i8* %out.sroa.19.0..sroa_idx87, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %out.sroa.19.0..sroa_idx87)
br label %clean_custom_1
clean_custom_1: ; preds = %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit", %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %next-block
%86 = bitcast { %"int::Int", %"int::Int" }* %3 to i8*
call void @llvm.lifetime.start(i64 48, i8* %86)
call void @_ZN3int3Int6divmod20he80bbbc7dda007f0EVdE({ %"int::Int", %"int::Int" }* noalias nocapture sret dereferenceable(48) %3, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
%87 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %87, i8* %86, i64 24, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %86, i8 29, i64 24, i32 8, i1 false)
%88 = getelementptr inbounds { %"int::Int", %"int::Int" }* %3, i64 0, i32 1
%89 = getelementptr inbounds { %"int::Int", %"int::Int" }* %3, i64 0, i32 1, i32 3
%90 = load i8* %89, align 8
%91 = icmp eq i8 %90, -44
br i1 %91, label %cond.i1.i, label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit"
cond.i1.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%92 = getelementptr inbounds { %"int::Int", %"int::Int" }* %3, i64 0, i32 1, i32 2
%93 = load i32* %92, align 4, !alias.scope !2054
%94 = icmp eq i32 %93, 0
br i1 %94, label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit", label %then-block-15297-.i.i2.i
then-block-15297-.i.i2.i: ; preds = %cond.i1.i
%95 = bitcast %"int::Int"* %88 to i8**
%96 = load i8** %95, align 8, !alias.scope !2057
%97 = zext i32 %93 to i64
%98 = shl nuw nsw i64 %97, 3
tail call void @je_sdallocx(i8* %96, i64 %98, i32 0)
store i32 0, i32* %92, align 4, !alias.scope !2054
%99 = getelementptr inbounds { %"int::Int", %"int::Int" }* %3, i64 0, i32 1, i32 1
store i32 0, i32* %99, align 8, !alias.scope !2054
br label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit"
"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit": ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, %cond.i1.i, %then-block-15297-.i.i2.i
call void @llvm.lifetime.end(i64 48, i8* %86)
br label %clean_custom_1
}
; Function Attrs: uwtable
define void @"_ZN3int33Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20h79b54feb230d1141GQeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20ha5607f4c7a3b2d9crOeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2060
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %1 to i8**
%10 = load i8** %9, align 8, !alias.scope !2063
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2060
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2060
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
ret void
unwind_custom_: ; preds = %entry-block
%15 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%16 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%17 = load i8* %16, align 1
%18 = icmp eq i8 %17, -44
br i1 %18, label %cond.i5, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
cond.i5: ; preds = %unwind_custom_
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%20 = load i32* %19, align 4, !alias.scope !2066
%21 = icmp eq i32 %20, 0
br i1 %21, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7, label %then-block-15297-.i.i6
then-block-15297-.i.i6: ; preds = %cond.i5
%22 = bitcast %"int::Int"* %1 to i8**
%23 = load i8** %22, align 8, !alias.scope !2069
%24 = zext i32 %20 to i64
%25 = shl nuw nsw i64 %24, 3
tail call void @je_sdallocx(i8* %23, i64 %25, i32 0)
store i32 0, i32* %19, align 4, !alias.scope !2066
%26 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %26, align 4, !alias.scope !2066
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %unwind_custom_, %cond.i5, %then-block-15297-.i.i6
%27 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %27)
resume { i8*, i32 } %15
}
; Function Attrs: uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Div$LT$Int$GT$3div20hf304ec7f3bb9613e7QeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20ha5607f4c7a3b2d9crOeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2072
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %2 to i8**
%10 = load i8** %9, align 8, !alias.scope !2075
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2072
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2072
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
ret void
unwind_custom_: ; preds = %entry-block
%15 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%16 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%17 = load i8* %16, align 1
%18 = icmp eq i8 %17, -44
br i1 %18, label %cond.i5, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
cond.i5: ; preds = %unwind_custom_
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%20 = load i32* %19, align 4, !alias.scope !2078
%21 = icmp eq i32 %20, 0
br i1 %21, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7, label %then-block-15297-.i.i6
then-block-15297-.i.i6: ; preds = %cond.i5
%22 = bitcast %"int::Int"* %2 to i8**
%23 = load i8** %22, align 8, !alias.scope !2081
%24 = zext i32 %20 to i64
%25 = shl nuw nsw i64 %24, 3
tail call void @je_sdallocx(i8* %23, i64 %25, i32 0)
store i32 0, i32* %19, align 4, !alias.scope !2078
%26 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %26, align 4, !alias.scope !2078
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %unwind_custom_, %cond.i5, %then-block-15297-.i.i6
%27 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %27)
resume { i8*, i32 } %15
}
; Function Attrs: uwtable
define void @"_ZN3int18Int.Div$LT$Int$GT$3div20h1633d9a6bb8c8a8awReE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20ha5607f4c7a3b2d9crOeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2084
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %2 to i8**
%10 = load i8** %9, align 8, !alias.scope !2087
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2084
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2084
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
%15 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%16 = load i8* %15, align 1
%17 = icmp eq i8 %16, -44
br i1 %17, label %cond.i3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
cond.i3: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%19 = load i32* %18, align 4, !alias.scope !2090
%20 = icmp eq i32 %19, 0
br i1 %20, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5, label %then-block-15297-.i.i4
then-block-15297-.i.i4: ; preds = %cond.i3
%21 = bitcast %"int::Int"* %1 to i8**
%22 = load i8** %21, align 8, !alias.scope !2093
%23 = zext i32 %19 to i64
%24 = shl nuw nsw i64 %23, 3
tail call void @je_sdallocx(i8* %22, i64 %24, i32 0)
store i32 0, i32* %18, align 4, !alias.scope !2090
%25 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %25, align 4, !alias.scope !2090
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %cond.i3, %then-block-15297-.i.i4
%26 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %26)
ret void
unwind_custom_: ; preds = %entry-block
%27 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%28 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%29 = load i8* %28, align 1
%30 = icmp eq i8 %29, -44
br i1 %30, label %cond.i6, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
cond.i6: ; preds = %unwind_custom_
%31 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%32 = load i32* %31, align 4, !alias.scope !2096
%33 = icmp eq i32 %32, 0
br i1 %33, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, label %then-block-15297-.i.i7
then-block-15297-.i.i7: ; preds = %cond.i6
%34 = bitcast %"int::Int"* %2 to i8**
%35 = load i8** %34, align 8, !alias.scope !2099
%36 = zext i32 %32 to i64
%37 = shl nuw nsw i64 %36, 3
tail call void @je_sdallocx(i8* %35, i64 %37, i32 0)
store i32 0, i32* %31, align 4, !alias.scope !2096
%38 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %38, align 4, !alias.scope !2096
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %unwind_custom_, %cond.i6, %then-block-15297-.i.i7
%39 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %39)
%40 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%41 = load i8* %40, align 1
%42 = icmp eq i8 %41, -44
br i1 %42, label %cond.i9, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
cond.i9: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
%43 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%44 = load i32* %43, align 4, !alias.scope !2102
%45 = icmp eq i32 %44, 0
br i1 %45, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11, label %then-block-15297-.i.i10
then-block-15297-.i.i10: ; preds = %cond.i9
%46 = bitcast %"int::Int"* %1 to i8**
%47 = load i8** %46, align 8, !alias.scope !2105
%48 = zext i32 %44 to i64
%49 = shl nuw nsw i64 %48, 3
tail call void @je_sdallocx(i8* %47, i64 %49, i32 0)
store i32 0, i32* %43, align 4, !alias.scope !2102
%50 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %50, align 4, !alias.scope !2102
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, %cond.i9, %then-block-15297-.i.i10
%51 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %51)
resume { i8*, i32 } %27
}
; Function Attrs: uwtable
define void @"_ZN3int19Int.Rem$LT$Limb$GT$3rem20hd851d7381b70904aUReE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #6 {
normal-return:
switch i64 %2, label %before_rhs [
i64 0, label %then-block-18132-
i64 1, label %normal-return.then-block-18146-_crit_edge
]
normal-return.then-block-18146-_crit_edge: ; preds = %normal-return
%.pre = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
br label %then-block-18146-
unwind_custom_: ; preds = %next-block.i
%3 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%5 = load i8* %4, align 1
%6 = icmp eq i8 %5, -44
br i1 %6, label %then-block-15297-.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
then-block-15297-.i.i: ; preds = %unwind_custom_
tail call void @je_sdallocx(i8* %19, i64 %30, i32 0)
store i32 0, i32* %22, align 4, !alias.scope !2108
store i32 0, i32* %8, align 4, !alias.scope !2108
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %then-block-15297-.i.i
%7 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %7)
resume { i8*, i32 } %3
then-block-18132-: ; preds = %normal-return
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs: ; preds = %normal-return
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !2111
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-18146-, label %normal-return10
then-block-18146-: ; preds = %normal-return.then-block-18146-_crit_edge, %before_rhs
%.pre-phi = phi i32* [ %.pre, %normal-return.then-block-18146-_crit_edge ], [ %8, %before_rhs ]
store i32 0, i32* %.pre-phi, align 4
%11 = bitcast %"int::Int"* %1 to i8*
%12 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %11, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35: ; preds = %then-block-18146-, %next-block12
%13 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %13)
ret void
normal-return10: ; preds = %before_rhs
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%15 = load %"ll::limb::Limb"** %14, align 8, !alias.scope !2114
%16 = icmp slt i32 %9, 0
%17 = sub i32 0, %9
%sret_slot.0.i.i = select i1 %16, i32 %17, i32 %9
%18 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %15, i32 0, %"ll::limb::Limb"* %15, i32 %sret_slot.0.i.i, i64 %2)
%rem.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %15, i64 0, i32 0
store i64 %18, i64* %rem.sroa.0.0..sroa_idx, align 8
%19 = bitcast %"ll::limb::Limb"* %15 to i8*
%20 = ashr i32 %9, 31
%21 = or i32 %20, 1
store i32 %21, i32* %8, align 4
%22 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%23 = load i32* %22, align 4
%24 = icmp ugt i32 %23, 8
br i1 %24, label %then-block-18200-, label %next-block12
then-block-18200-: ; preds = %normal-return10
%25 = icmp slt i32 %21, 0
%26 = sub nsw i32 0, %21
%sret_slot.0.i.i.i = select i1 %25, i32 %26, i32 %21
%27 = sext i32 %sret_slot.0.i.i.i to i64
%28 = zext i32 %23 to i64
%29 = icmp eq i64 %28, %27
br i1 %29, label %next-block12, label %next-block.i
next-block.i: ; preds = %then-block-18200-
%30 = shl nuw nsw i64 %28, 3
%.op.i = shl nsw i64 %27, 3
%31 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %19, i64 %30, i64 %.op.i)
to label %.noexc unwind label %unwind_custom_
.noexc: ; preds = %next-block.i
%32 = ptrtoint i8* %31 to i64
%33 = bitcast %"int::Int"* %1 to i64*
store i64 %32, i64* %33, align 8, !alias.scope !2119
br label %next-block12
next-block12: ; preds = %.noexc, %then-block-18200-, %normal-return10
%34 = bitcast %"int::Int"* %1 to i8*
%35 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %34, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %34, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit35
}
; Function Attrs: uwtable
define void @"_ZN3int49_$RF$$u27$b$u20$Int.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h823e2aab7c9b4e89WTeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = alloca { %"int::Int", %"int::Int" }, align 8
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !2122
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-18290-, label %next-block
then-block-18290-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%8 = icmp slt i32 %6, 0
%9 = sub i32 0, %6
%sret_slot.0.i.i = select i1 %8, i32 %9, i32 %6
%10 = icmp eq i32 %sret_slot.0.i.i, 1
br i1 %10, label %then-block-18300-, label %next-block1
then-block-18300-: ; preds = %next-block
%11 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%12 = load %"ll::limb::Limb"** %11, align 8, !alias.scope !2125
%l.sroa.0.0..sroa_idx = getelementptr inbounds %"ll::limb::Limb"* %12, i64 0, i32 0
%l.sroa.0.0.copyload = load i64* %l.sroa.0.0..sroa_idx, align 8
%13 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %13)
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%15 = load i32* %14, align 4, !alias.scope !2128, !noalias !2133
%16 = icmp eq i32 %15, 0
br i1 %16, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %then-block-18300-
%17 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %17, align 8, !alias.scope !2135, !noalias !2140
%18 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %18, align 8, !alias.scope !2135, !noalias !2140
%19 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %19, align 4, !alias.scope !2135, !noalias !2140
%20 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %20, align 8, !alias.scope !2135, !noalias !2140
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %then-block-18300-
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%21 = icmp slt i32 %15, 0
%22 = sub i32 0, %15
%sret_slot.0.i.i25.i = select i1 %21, i32 %22, i32 %15
%23 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%24 = zext i32 %sret_slot.0.i.i25.i to i64
%25 = shl nuw nsw i64 %24, 3
%26 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %25), !noalias !2141
%27 = ptrtoint i8* %26 to i64
%28 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%29 = load %"ll::limb::Limb"** %28, align 8, !alias.scope !2144, !noalias !2133
%30 = bitcast %"ll::limb::Limb"* %29 to i8*
%31 = bitcast i8* %26 to %"ll::limb::Limb"*
%32 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %32, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%33 = add i32 %sret_slot.0.i.i25.i, -1
%34 = zext i32 %33 to i64
%35 = add nuw nsw i64 %34, 1
%end.idx = add nuw nsw i64 %34, 1
%n.vec = and i64 %35, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%36 = add i32 %sret_slot.0.i.i25.i, -1
%37 = zext i32 %36 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep17 = getelementptr %"ll::limb::Limb"* %29, i64 %37
%scevgep1718 = bitcast %"ll::limb::Limb"* %scevgep17 to i8*
%bound0 = icmp ule i8* %26, %scevgep1718
%38 = shl nuw nsw i64 %37, 3
%scevgep = getelementptr i8* %26, i64 %38
%bound1 = icmp ule i8* %30, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%39 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %index, i32 0
%40 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %index, i32 0
%41 = bitcast i64* %39 to <2 x i64>*
%wide.load = load <2 x i64>* %41, align 8, !noalias !2147
%42 = getelementptr i64* %39, i64 2
%43 = bitcast i64* %42 to <2 x i64>*
%wide.load20 = load <2 x i64>* %43, align 8, !noalias !2147
%44 = bitcast i64* %40 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %44, align 8, !noalias !2147
%45 = getelementptr i64* %40, i64 2
%46 = bitcast i64* %45 to <2 x i64>*
store <2 x i64> %wide.load20, <2 x i64>* %46, align 8, !noalias !2147
%index.next = add i64 %index, 4
%47 = icmp eq i64 %index.next, %n.vec
br i1 %47, label %middle.block.loopexit, label %vector.body, !llvm.loop !2148
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%48 = trunc i64 %resume.val to i32
%49 = sub i32 %sret_slot.0.i.i25.i, %48
%50 = add i32 %sret_slot.0.i.i25.i, -1
%51 = sub i32 %50, %48
%xtraiter = and i32 %49, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%52 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.i.i.prol, i32 0
%53 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %indvars.iv.i.i.prol, i32 0
%54 = load i64* %52, align 8, !noalias !2147
store i64 %54, i64* %53, align 8, !noalias !2147
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %33
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2149
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%55 = icmp ult i32 %51, 3
br i1 %55, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%56 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.i.i, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %indvars.iv.i.i, i32 0
%58 = load i64* %56, align 8, !noalias !2147
store i64 %58, i64* %57, align 8, !noalias !2147
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%59 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i, i32 0
%60 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %indvars.iv.next.i.i, i32 0
%61 = load i64* %59, align 8, !noalias !2147
store i64 %61, i64* %60, align 8, !noalias !2147
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%62 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i.1, i32 0
%63 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %indvars.iv.next.i.i.1, i32 0
%64 = load i64* %62, align 8, !noalias !2147
store i64 %64, i64* %63, align 8, !noalias !2147
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%65 = getelementptr inbounds %"ll::limb::Limb"* %29, i64 %indvars.iv.next.i.i.2, i32 0
%66 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 %indvars.iv.next.i.i.2, i32 0
%67 = load i64* %65, align 8, !noalias !2147
store i64 %67, i64* %66, align 8, !noalias !2147
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %33
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2150
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %27, %normal-return3.i ], [ 1, %next-block.i ], [ %27, %middle.block ], [ %27, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2133, !noalias !2140
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %15, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2133, !noalias !2140
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2133, !noalias !2140
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2133, !noalias !2140
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %13, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2140
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i15
call void @"_ZN3int19Int.Rem$LT$Limb$GT$3rem20hd851d7381b70904aUReE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i64 %l.sroa.0.0.copyload)
call void @llvm.lifetime.end(i64 24, i8* %13)
br label %clean_custom_
clean_custom_: ; preds = %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit", %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
ret void
next-block1: ; preds = %next-block
%68 = bitcast { %"int::Int", %"int::Int" }* %4 to i8*
call void @llvm.lifetime.start(i64 48, i8* %68)
call void @_ZN3int3Int6divmod20he80bbbc7dda007f0EVdE({ %"int::Int", %"int::Int" }* noalias nocapture sret dereferenceable(48) %4, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
%69 = getelementptr inbounds { %"int::Int", %"int::Int" }* %4, i64 0, i32 1
%70 = bitcast %"int::Int"* %69 to i8*
%71 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %71, i8* %70, i64 24, i32 8, i1 false)
call void @llvm.memset.p0i8.i64(i8* %70, i8 29, i64 24, i32 8, i1 false)
%72 = getelementptr inbounds { %"int::Int", %"int::Int" }* %4, i64 0, i32 0, i32 3
%73 = load i8* %72, align 8
%74 = icmp eq i8 %73, -44
br i1 %74, label %cond.i.i, label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit"
cond.i.i: ; preds = %next-block1
%75 = getelementptr inbounds { %"int::Int", %"int::Int" }* %4, i64 0, i32 0, i32 2
%76 = load i32* %75, align 4, !alias.scope !2151
%77 = icmp eq i32 %76, 0
br i1 %77, label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit", label %then-block-15297-.i.i.i
then-block-15297-.i.i.i: ; preds = %cond.i.i
%78 = bitcast { %"int::Int", %"int::Int" }* %4 to i8**
%79 = load i8** %78, align 8, !alias.scope !2154
%80 = zext i32 %76 to i64
%81 = shl nuw nsw i64 %80, 3
tail call void @je_sdallocx(i8* %79, i64 %81, i32 0)
store i32 0, i32* %75, align 4, !alias.scope !2151
%82 = getelementptr inbounds { %"int::Int", %"int::Int" }* %4, i64 0, i32 0, i32 1
store i32 0, i32* %82, align 8, !alias.scope !2151
br label %"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit"
"_ZN33_$LP$int..Int$C$$u20$int..Int$RP$9drop.977317h05c206fa7b1cf0e3E.exit": ; preds = %next-block1, %cond.i.i, %then-block-15297-.i.i.i
call void @llvm.lifetime.end(i64 48, i8* %68)
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int33Int.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h244c19b033a106f9RVeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h823e2aab7c9b4e89WTeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2157
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %1 to i8**
%10 = load i8** %9, align 8, !alias.scope !2160
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2157
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2157
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
ret void
unwind_custom_: ; preds = %entry-block
%15 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%16 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%17 = load i8* %16, align 1
%18 = icmp eq i8 %17, -44
br i1 %18, label %cond.i5, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
cond.i5: ; preds = %unwind_custom_
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%20 = load i32* %19, align 4, !alias.scope !2163
%21 = icmp eq i32 %20, 0
br i1 %21, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7, label %then-block-15297-.i.i6
then-block-15297-.i.i6: ; preds = %cond.i5
%22 = bitcast %"int::Int"* %1 to i8**
%23 = load i8** %22, align 8, !alias.scope !2166
%24 = zext i32 %20 to i64
%25 = shl nuw nsw i64 %24, 3
tail call void @je_sdallocx(i8* %23, i64 %25, i32 0)
store i32 0, i32* %19, align 4, !alias.scope !2163
%26 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %26, align 4, !alias.scope !2163
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %unwind_custom_, %cond.i5, %then-block-15297-.i.i6
%27 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %27)
resume { i8*, i32 } %15
}
; Function Attrs: uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Rem$LT$Int$GT$3rem20hb52db97e34d4ff25iWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h823e2aab7c9b4e89WTeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2169
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %2 to i8**
%10 = load i8** %9, align 8, !alias.scope !2172
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2169
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2169
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
ret void
unwind_custom_: ; preds = %entry-block
%15 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%16 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%17 = load i8* %16, align 1
%18 = icmp eq i8 %17, -44
br i1 %18, label %cond.i5, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
cond.i5: ; preds = %unwind_custom_
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%20 = load i32* %19, align 4, !alias.scope !2175
%21 = icmp eq i32 %20, 0
br i1 %21, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7, label %then-block-15297-.i.i6
then-block-15297-.i.i6: ; preds = %cond.i5
%22 = bitcast %"int::Int"* %2 to i8**
%23 = load i8** %22, align 8, !alias.scope !2178
%24 = zext i32 %20 to i64
%25 = shl nuw nsw i64 %24, 3
tail call void @je_sdallocx(i8* %23, i64 %25, i32 0)
store i32 0, i32* %19, align 4, !alias.scope !2175
%26 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %26, align 4, !alias.scope !2175
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %unwind_custom_, %cond.i5, %then-block-15297-.i.i6
%27 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %27)
resume { i8*, i32 } %15
}
; Function Attrs: uwtable
define void @"_ZN3int18Int.Rem$LT$Int$GT$3rem20h360830dc24e586ceHWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #6 {
entry-block:
invoke void @"_ZN3int49_$RF$$u27$b$u20$Int.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h823e2aab7c9b4e89WTeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%4 = load i8* %3, align 1
%5 = icmp eq i8 %4, -44
br i1 %5, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %normal-return
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%7 = load i32* %6, align 4, !alias.scope !2181
%8 = icmp eq i32 %7, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%9 = bitcast %"int::Int"* %2 to i8**
%10 = load i8** %9, align 8, !alias.scope !2184
%11 = zext i32 %7 to i64
%12 = shl nuw nsw i64 %11, 3
tail call void @je_sdallocx(i8* %10, i64 %12, i32 0)
store i32 0, i32* %6, align 4, !alias.scope !2181
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %13, align 4, !alias.scope !2181
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %normal-return, %cond.i, %then-block-15297-.i.i
%14 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %14)
%15 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%16 = load i8* %15, align 1
%17 = icmp eq i8 %16, -44
br i1 %17, label %cond.i3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
cond.i3: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%19 = load i32* %18, align 4, !alias.scope !2187
%20 = icmp eq i32 %19, 0
br i1 %20, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5, label %then-block-15297-.i.i4
then-block-15297-.i.i4: ; preds = %cond.i3
%21 = bitcast %"int::Int"* %1 to i8**
%22 = load i8** %21, align 8, !alias.scope !2190
%23 = zext i32 %19 to i64
%24 = shl nuw nsw i64 %23, 3
tail call void @je_sdallocx(i8* %22, i64 %24, i32 0)
store i32 0, i32* %18, align 4, !alias.scope !2187
%25 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %25, align 4, !alias.scope !2187
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %cond.i3, %then-block-15297-.i.i4
%26 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %26)
ret void
unwind_custom_: ; preds = %entry-block
%27 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%28 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%29 = load i8* %28, align 1
%30 = icmp eq i8 %29, -44
br i1 %30, label %cond.i6, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
cond.i6: ; preds = %unwind_custom_
%31 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%32 = load i32* %31, align 4, !alias.scope !2193
%33 = icmp eq i32 %32, 0
br i1 %33, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, label %then-block-15297-.i.i7
then-block-15297-.i.i7: ; preds = %cond.i6
%34 = bitcast %"int::Int"* %2 to i8**
%35 = load i8** %34, align 8, !alias.scope !2196
%36 = zext i32 %32 to i64
%37 = shl nuw nsw i64 %36, 3
tail call void @je_sdallocx(i8* %35, i64 %37, i32 0)
store i32 0, i32* %31, align 4, !alias.scope !2193
%38 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %38, align 4, !alias.scope !2193
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %unwind_custom_, %cond.i6, %then-block-15297-.i.i7
%39 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %39)
%40 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%41 = load i8* %40, align 1
%42 = icmp eq i8 %41, -44
br i1 %42, label %cond.i9, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
cond.i9: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8
%43 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%44 = load i32* %43, align 4, !alias.scope !2199
%45 = icmp eq i32 %44, 0
br i1 %45, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11, label %then-block-15297-.i.i10
then-block-15297-.i.i10: ; preds = %cond.i9
%46 = bitcast %"int::Int"* %1 to i8**
%47 = load i8** %46, align 8, !alias.scope !2202
%48 = zext i32 %44 to i64
%49 = shl nuw nsw i64 %48, 3
tail call void @je_sdallocx(i8* %47, i64 %49, i32 0)
store i32 0, i32* %43, align 4, !alias.scope !2199
%50 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %50, align 4, !alias.scope !2199
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, %cond.i9, %then-block-15297-.i.i10
%51 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %51)
resume { i8*, i32 } %27
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Shl$LT$usize$GT$3shl20h6f6942b76eaefbfebYeE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2205
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-18522-, label %next-block
unwind_custom_: ; preds = %else-block.i67, %then-block-14817-.i, %then-block-18716-
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%10 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !2208
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %1 to i8**
%14 = load i8** %13, align 8, !alias.scope !2211
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !2208
store i32 0, i32* %3, align 4, !alias.scope !2208
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%17 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
resume { i8*, i32 } %6
then-block-18522-: ; preds = %entry-block
%18 = bitcast %"int::Int"* %1 to i8*
%19 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %18, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %18, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit58
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit58: ; preds = %then-block-18522-, %then-block-18680-, %next-block19
%20 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %20)
ret void
next-block: ; preds = %entry-block
%21 = icmp ugt i64 %2, 63
br i1 %21, label %normal-return2, label %next-block10
normal-return2: ; preds = %next-block
%22 = lshr i64 %2, 6
%23 = trunc i64 %22 to i32
%24 = and i64 %2, 63
%25 = icmp slt i32 %4, 0
%26 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %25, i32 %26, i32 %4
%27 = add i32 %sret_slot.0.i.i, %23
%28 = add i32 %27, 1
%29 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%30 = load i32* %29, align 4, !alias.scope !2214
%31 = icmp ult i32 %30, %28
br i1 %31, label %then-block-14806-.i, label %normal-return2.normal-return6_crit_edge
normal-return2.normal-return6_crit_edge: ; preds = %normal-return2
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%.pre = load %"ll::limb::Limb"** %.phi.trans.insert, align 8, !alias.scope !2217
br label %normal-return6
then-block-14806-.i: ; preds = %normal-return2
%32 = icmp eq i32 %30, 0
br i1 %32, label %else-block.i67, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%33 = bitcast %"int::Int"* %1 to i8**
%34 = load i8** %33, align 8, !alias.scope !2220
%35 = zext i32 %30 to i64
%36 = shl nuw nsw i64 %35, 3
%37 = zext i32 %28 to i64
%38 = shl nuw nsw i64 %37, 3
%39 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %34, i64 %36, i64 %38)
to label %while_exit.i unwind label %unwind_custom_
else-block.i67: ; preds = %then-block-14806-.i
%40 = zext i32 %28 to i64
%41 = shl nuw nsw i64 %40, 3
%42 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %41)
to label %while_exit.i unwind label %unwind_custom_
while_exit.i: ; preds = %else-block.i67, %then-block-14817-.i
%.pre-phi75 = phi i64 [ %36, %then-block-14817-.i ], [ 0, %else-block.i67 ]
%.sink.i = phi i8* [ %39, %then-block-14817-.i ], [ %42, %else-block.i67 ]
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi75
%43 = sub i32 %27, %30
%44 = zext i32 %43 to i64
%45 = shl nuw nsw i64 %44, 3
%46 = add nuw nsw i64 %45, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %46, i32 8, i1 false), !noalias !2214
%47 = ptrtoint i8* %.sink.i to i64
%48 = bitcast %"int::Int"* %1 to i64*
store i64 %47, i64* %48, align 8, !alias.scope !2214
store i32 %28, i32* %29, align 4, !alias.scope !2214
%49 = bitcast i8* %.sink.i to %"ll::limb::Limb"*
br label %normal-return6
normal-return6: ; preds = %normal-return2.normal-return6_crit_edge, %while_exit.i
%50 = phi %"ll::limb::Limb"* [ %.pre, %normal-return2.normal-return6_crit_edge ], [ %49, %while_exit.i ]
%51 = and i64 %22, 4294967295
%n.012.i = add i32 %sret_slot.0.i.i, -1
%52 = icmp sgt i32 %n.012.i, -1
br i1 %52, label %while_body.lr.ph.i64, label %normal-return7
while_body.lr.ph.i64: ; preds = %normal-return6
%53 = sext i32 %n.012.i to i64
%54 = sub i32 0, %sret_slot.0.i.i
%55 = icmp sgt i32 %54, -1
%smax = select i1 %55, i32 %54, i32 -1
%56 = add i32 %sret_slot.0.i.i, %smax
%57 = add i32 %56, 1
%xtraiter76 = and i32 %57, 1
%lcmp.mod77 = icmp ne i32 %xtraiter76, 0
br i1 %lcmp.mod77, label %while_body.i65.prol, label %while_body.lr.ph.i64.split
while_body.i65.prol: ; preds = %while_body.lr.ph.i64
%58 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %53, i32 0
%.sum.prol = add i64 %53, %51
%59 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %.sum.prol, i32 0
%60 = load i64* %58, align 8
store i64 %60, i64* %59, align 8
%n.0.i.prol = add nsw i32 %n.012.i, -1
%61 = icmp sgt i32 %n.012.i, 0
%indvars.iv.next.i.prol = add nsw i64 %53, -1
br label %while_body.lr.ph.i64.split
while_body.lr.ph.i64.split: ; preds = %while_body.i65.prol, %while_body.lr.ph.i64
%indvars.iv.i.unr = phi i64 [ %53, %while_body.lr.ph.i64 ], [ %indvars.iv.next.i.prol, %while_body.i65.prol ]
%n.013.i.unr = phi i32 [ %n.012.i, %while_body.lr.ph.i64 ], [ %n.0.i.prol, %while_body.i65.prol ]
%62 = icmp ult i32 %56, 1
br i1 %62, label %normal-return7.loopexit, label %while_body.lr.ph.i64.split.split
while_body.lr.ph.i64.split.split: ; preds = %while_body.lr.ph.i64.split
br label %while_body.i65
while_body.i65: ; preds = %while_body.i65, %while_body.lr.ph.i64.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.lr.ph.i64.split.split ], [ %indvars.iv.next.i.1, %while_body.i65 ]
%n.013.i = phi i32 [ %n.013.i.unr, %while_body.lr.ph.i64.split.split ], [ %n.0.i.1, %while_body.i65 ]
%63 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %indvars.iv.i, i32 0
%.sum = add i64 %indvars.iv.i, %51
%64 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %.sum, i32 0
%65 = load i64* %63, align 8
store i64 %65, i64* %64, align 8
%n.0.i = add nsw i32 %n.013.i, -1
%indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1
%66 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %indvars.iv.next.i, i32 0
%.sum.1 = add i64 %indvars.iv.next.i, %51
%67 = getelementptr inbounds %"ll::limb::Limb"* %50, i64 %.sum.1, i32 0
%68 = load i64* %66, align 8
store i64 %68, i64* %67, align 8
%n.0.i.1 = add nsw i32 %n.0.i, -1
%69 = icmp sgt i32 %n.0.i, 0
%indvars.iv.next.i.1 = add nsw i64 %indvars.iv.next.i, -1
br i1 %69, label %while_body.i65, label %normal-return7.loopexit.unr-lcssa
normal-return7.loopexit.unr-lcssa: ; preds = %while_body.i65
br label %normal-return7.loopexit
normal-return7.loopexit: ; preds = %while_body.lr.ph.i64.split, %normal-return7.loopexit.unr-lcssa
br label %normal-return7
normal-return7: ; preds = %normal-return7.loopexit, %normal-return6
%70 = icmp sgt i32 %23, 0
br i1 %70, label %while_body.lr.ph.i63, label %normal-return8
while_body.lr.ph.i63: ; preds = %normal-return7
%71 = bitcast %"ll::limb::Limb"* %50 to i8*
%72 = shl nuw nsw i64 %22, 3
%73 = add nuw nsw i64 %72, 34359738360
%74 = and i64 %73, 34359738360
%75 = add nuw nsw i64 %74, 8
tail call void @llvm.memset.p0i8.i64(i8* %71, i8 0, i64 %75, i32 8, i1 false) #20
br label %normal-return8
normal-return8: ; preds = %while_body.lr.ph.i63, %normal-return7
%76 = load i32* %3, align 4
%77 = icmp eq i32 %76, 0
br i1 %77, label %normal-return9, label %else-block.i60
else-block.i60: ; preds = %normal-return8
%78 = ashr i32 %76, 31
%79 = or i32 %78, 1
br label %normal-return9
normal-return9: ; preds = %else-block.i60, %normal-return8
%sret_slot.0.i61 = phi i32 [ 0, %normal-return8 ], [ %79, %else-block.i60 ]
%80 = mul i32 %sret_slot.0.i61, %23
%81 = add i32 %80, %76
store i32 %81, i32* %3, align 4
br label %next-block10
next-block10: ; preds = %next-block, %normal-return9
%82 = phi i32 [ %81, %normal-return9 ], [ %4, %next-block ]
%cnt.0 = phi i64 [ %24, %normal-return9 ], [ %2, %next-block ]
%83 = icmp eq i64 %cnt.0, 0
br i1 %83, label %then-block-18680-, label %normal-return15
then-block-18680-: ; preds = %next-block10
%84 = bitcast %"int::Int"* %1 to i8*
%85 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %85, i8* %84, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %84, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit58
normal-return15: ; preds = %next-block10
%86 = icmp slt i32 %82, 0
%87 = sub i32 0, %82
%sret_slot.0.i.i59 = select i1 %86, i32 %87, i32 %82
%88 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%89 = load %"ll::limb::Limb"** %88, align 8, !alias.scope !2223
%90 = add i32 %sret_slot.0.i.i59, -1
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds %"ll::limb::Limb"* %89, i64 %91
%l.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %92, i64 0, i32 0
%l.sroa.0.0.copyload.i = load i64* %l.sroa.0.0..sroa_idx.i, align 8
%93 = sub nsw i64 0, %cnt.0
%94 = and i64 %93, 63
%95 = lshr i64 %l.sroa.0.0.copyload.i, %94
%96 = and i64 %cnt.0, 63
%high_limb.sroa.0.049.i = shl i64 %l.sroa.0.0.copyload.i, %96
%97 = icmp eq i32 %90, 0
br i1 %97, label %normal-return17, label %while_body.lr.ph.i
while_body.lr.ph.i: ; preds = %normal-return15
%98 = add i32 %sret_slot.0.i.i59, -2
%99 = zext i32 %98 to i64
%100 = add i32 %sret_slot.0.i.i59, -1
%xtraiter = and i32 %100, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.prol, label %while_body.lr.ph.i.split
while_body.i.prol: ; preds = %while_body.i.prol, %while_body.lr.ph.i
%high_limb.sroa.0.053.i.prol = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i ], [ %high_limb.sroa.0.0.i.prol, %while_body.i.prol ]
%rp.052.i.prol = phi %"ll::limb::Limb"* [ %92, %while_body.lr.ph.i ], [ %101, %while_body.i.prol ]
%xs.050.i.prol = phi i32 [ %90, %while_body.lr.ph.i ], [ %105, %while_body.i.prol ]
%prol.iter = phi i32 [ %xtraiter, %while_body.lr.ph.i ], [ %prol.iter.sub, %while_body.i.prol ]
%101 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 -1
%low.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %101, i64 0, i32 0
%low.sroa.0.0.copyload.i.prol = load i64* %low.sroa.0.0..sroa_idx.i.prol, align 8
%102 = lshr i64 %low.sroa.0.0.copyload.i.prol, %94
%103 = or i64 %102, %high_limb.sroa.0.053.i.prol
%104 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i.prol, i64 0, i32 0
store i64 %103, i64* %104, align 8
%105 = add i32 %xs.050.i.prol, -1
%high_limb.sroa.0.0.i.prol = shl i64 %low.sroa.0.0.copyload.i.prol, %96
%106 = icmp eq i32 %105, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.prol, label %while_body.lr.ph.i.split, !llvm.loop !2226
while_body.lr.ph.i.split: ; preds = %while_body.i.prol, %while_body.lr.ph.i
%high_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i ], [ %high_limb.sroa.0.0.i.prol, %while_body.i.prol ]
%high_limb.sroa.0.053.i.unr = phi i64 [ %high_limb.sroa.0.049.i, %while_body.lr.ph.i ], [ %high_limb.sroa.0.0.i.prol, %while_body.i.prol ]
%rp.052.i.unr = phi %"ll::limb::Limb"* [ %92, %while_body.lr.ph.i ], [ %101, %while_body.i.prol ]
%xs.050.i.unr = phi i32 [ %90, %while_body.lr.ph.i ], [ %105, %while_body.i.prol ]
%107 = icmp ult i32 %98, 3
br i1 %107, label %normal-return17.loopexit, label %while_body.lr.ph.i.split.split
while_body.lr.ph.i.split.split: ; preds = %while_body.lr.ph.i.split
br label %while_body.i
while_body.i: ; preds = %while_body.i, %while_body.lr.ph.i.split.split
%high_limb.sroa.0.053.i = phi i64 [ %high_limb.sroa.0.053.i.unr, %while_body.lr.ph.i.split.split ], [ %high_limb.sroa.0.0.i.3, %while_body.i ]
%rp.052.i = phi %"ll::limb::Limb"* [ %rp.052.i.unr, %while_body.lr.ph.i.split.split ], [ %123, %while_body.i ]
%xs.050.i = phi i32 [ %xs.050.i.unr, %while_body.lr.ph.i.split.split ], [ %127, %while_body.i ]
%108 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 -1
%low.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %108, i64 0, i32 0
%low.sroa.0.0.copyload.i = load i64* %low.sroa.0.0..sroa_idx.i, align 8
%109 = lshr i64 %low.sroa.0.0.copyload.i, %94
%110 = or i64 %109, %high_limb.sroa.0.053.i
%111 = getelementptr inbounds %"ll::limb::Limb"* %rp.052.i, i64 0, i32 0
store i64 %110, i64* %111, align 8
%112 = add i32 %xs.050.i, -1
%high_limb.sroa.0.0.i = shl i64 %low.sroa.0.0.copyload.i, %96
%113 = getelementptr inbounds %"ll::limb::Limb"* %108, i64 -1
%low.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %113, i64 0, i32 0
%low.sroa.0.0.copyload.i.1 = load i64* %low.sroa.0.0..sroa_idx.i.1, align 8
%114 = lshr i64 %low.sroa.0.0.copyload.i.1, %94
%115 = or i64 %114, %high_limb.sroa.0.0.i
%116 = getelementptr inbounds %"ll::limb::Limb"* %108, i64 0, i32 0
store i64 %115, i64* %116, align 8
%117 = add i32 %112, -1
%high_limb.sroa.0.0.i.1 = shl i64 %low.sroa.0.0.copyload.i.1, %96
%118 = getelementptr inbounds %"ll::limb::Limb"* %113, i64 -1
%low.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %118, i64 0, i32 0
%low.sroa.0.0.copyload.i.2 = load i64* %low.sroa.0.0..sroa_idx.i.2, align 8
%119 = lshr i64 %low.sroa.0.0.copyload.i.2, %94
%120 = or i64 %119, %high_limb.sroa.0.0.i.1
%121 = getelementptr inbounds %"ll::limb::Limb"* %113, i64 0, i32 0
store i64 %120, i64* %121, align 8
%122 = add i32 %117, -1
%high_limb.sroa.0.0.i.2 = shl i64 %low.sroa.0.0.copyload.i.2, %96
%123 = getelementptr inbounds %"ll::limb::Limb"* %118, i64 -1
%low.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %123, i64 0, i32 0
%low.sroa.0.0.copyload.i.3 = load i64* %low.sroa.0.0..sroa_idx.i.3, align 8
%124 = lshr i64 %low.sroa.0.0.copyload.i.3, %94
%125 = or i64 %124, %high_limb.sroa.0.0.i.2
%126 = getelementptr inbounds %"ll::limb::Limb"* %118, i64 0, i32 0
store i64 %125, i64* %126, align 8
%127 = add i32 %122, -1
%high_limb.sroa.0.0.i.3 = shl i64 %low.sroa.0.0.copyload.i.3, %96
%128 = icmp eq i32 %127, 0
br i1 %128, label %normal-return17.loopexit.unr-lcssa, label %while_body.i
normal-return17.loopexit.unr-lcssa: ; preds = %while_body.i
%high_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %high_limb.sroa.0.0.i.3, %while_body.i ]
br label %normal-return17.loopexit
normal-return17.loopexit: ; preds = %while_body.lr.ph.i.split, %normal-return17.loopexit.unr-lcssa
%high_limb.sroa.0.0.i.lcssa = phi i64 [ %high_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i.split ], [ %high_limb.sroa.0.0.i.lcssa.ph, %normal-return17.loopexit.unr-lcssa ]
%129 = add nsw i64 %91, -1
%130 = sub nsw i64 %129, %99
br label %normal-return17
normal-return17: ; preds = %normal-return17.loopexit, %normal-return15
%high_limb.sroa.0.0.lcssa.i = phi i64 [ %high_limb.sroa.0.049.i, %normal-return15 ], [ %high_limb.sroa.0.0.i.lcssa, %normal-return17.loopexit ]
%131 = phi i64 [ %91, %normal-return15 ], [ %130, %normal-return17.loopexit ]
%high_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %89, i64 %131, i32 0
store i64 %high_limb.sroa.0.0.lcssa.i, i64* %high_limb.sroa.0.0..sroa_idx.i, align 8
%132 = icmp eq i64 %95, 0
br i1 %132, label %next-block19, label %then-block-18716-
then-block-18716-: ; preds = %normal-return17
invoke void @_ZN3int3Int4push20h2628381bb74b37a2A2dE(%"int::Int"* noalias dereferenceable(24) %1, i64 %95)
to label %next-block19 unwind label %unwind_custom_
next-block19: ; preds = %normal-return17, %then-block-18716-
%133 = bitcast %"int::Int"* %1 to i8*
%134 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %134, i8* %133, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %133, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit58
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Shl$LT$usize$GT$3shl20h917ef33d446a3a93h2eE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !2227, !noalias !2232
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %entry-block
%8 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2234, !noalias !2239
%9 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2234, !noalias !2239
%10 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2234, !noalias !2239
%11 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2234, !noalias !2239
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %entry-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%12 = icmp slt i32 %6, 0
%13 = sub i32 0, %6
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %6
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2240
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2243, !noalias !2232
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep4 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep45 = bitcast %"ll::limb::Limb"* %scevgep4 to i8*
%bound0 = icmp ule i8* %17, %scevgep45
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2246
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load7 = load <2 x i64>* %34, align 8, !noalias !2246
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2246
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load7, <2 x i64>* %37, align 8, !noalias !2246
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2247
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2246
store i64 %45, i64* %44, align 8, !noalias !2246
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2248
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2246
store i64 %49, i64* %48, align 8, !noalias !2246
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2246
store i64 %52, i64* %51, align 8, !noalias !2246
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2246
store i64 %55, i64* %54, align 8, !noalias !2246
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2246
store i64 %58, i64* %57, align 8, !noalias !2246
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2249
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2232, !noalias !2239
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %6, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2232, !noalias !2239
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2232, !noalias !2239
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2232, !noalias !2239
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %4, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2239
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int20Int.Shl$LT$usize$GT$3shl20h6f6942b76eaefbfebYeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i64 %2)
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Shr$LT$usize$GT$3shr20h431ad7937693ac35F2eE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2250
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-18800-, label %next-block
then-block-18800-: ; preds = %entry-block
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
clean_custom_1: ; preds = %normal-return2
%8 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2253
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2253
%10 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2253
%11 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2253
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%.pre65 = load i8* %.phi.trans.insert, align 1
%phitmp = icmp eq i8 %.pre65, -44
br i1 %phitmp, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %clean_custom_1
%12 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%13 = load i32* %12, align 4, !alias.scope !2258
%14 = icmp eq i32 %13, 0
br i1 %14, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%15 = bitcast %"int::Int"* %1 to i8**
%16 = load i8** %15, align 8, !alias.scope !2261
%17 = zext i32 %13 to i64
%18 = shl nuw nsw i64 %17, 3
tail call void @je_sdallocx(i8* %16, i64 %18, i32 0)
store i32 0, i32* %12, align 4, !alias.scope !2258
store i32 0, i32* %3, align 4, !alias.scope !2258
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-18800-, %then-block-18969-, %normal-return19, %clean_custom_1, %cond.i, %then-block-15297-.i.i
%19 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %19)
ret void
next-block: ; preds = %entry-block
%20 = icmp ugt i64 %2, 63
br i1 %20, label %normal-return2, label %next-block12
normal-return2: ; preds = %next-block
%21 = lshr i64 %2, 6
%22 = trunc i64 %21 to i32
%23 = icmp slt i32 %4, 0
%24 = sub i32 0, %4
%sret_slot.0.i.i64 = select i1 %23, i32 %24, i32 %4
%25 = icmp sgt i32 %sret_slot.0.i.i64, %22
br i1 %25, label %normal-return7, label %clean_custom_1
normal-return7: ; preds = %normal-return2
%26 = and i64 %2, 63
%27 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%28 = load %"ll::limb::Limb"** %27, align 8, !alias.scope !2264
%29 = and i64 %21, 4294967295
%30 = icmp sgt i32 %sret_slot.0.i.i64, 0
br i1 %30, label %while_body.lr.ph.i62, label %normal-return9
while_body.lr.ph.i62: ; preds = %normal-return7
%31 = add i32 %sret_slot.0.i.i64, -1
%32 = zext i32 %31 to i64
%33 = add nuw nsw i64 %32, 1
%end.idx = add nuw nsw i64 %32, 1
%n.vec = and i64 %33, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%34 = add i32 %sret_slot.0.i.i64, -1
%35 = zext i32 %34 to i64
%36 = lshr i64 %2, 6
%37 = and i64 %36, 4294967295
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i62
%38 = add nuw nsw i64 %35, %37
%scevgep69 = getelementptr %"ll::limb::Limb"* %28, i64 %38
%bound0 = icmp ule %"ll::limb::Limb"* %28, %scevgep69
%scevgep67 = getelementptr %"ll::limb::Limb"* %28, i64 %37
%scevgep = getelementptr %"ll::limb::Limb"* %28, i64 %35
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep67, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%39 = add i64 %index, %29
%40 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %39, i32 0
%41 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %index, i32 0
%42 = bitcast i64* %40 to <2 x i64>*
%wide.load = load <2 x i64>* %42, align 8
%43 = getelementptr i64* %40, i64 2
%44 = bitcast i64* %43 to <2 x i64>*
%wide.load74 = load <2 x i64>* %44, align 8
%45 = bitcast i64* %41 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %45, align 8
%46 = getelementptr i64* %41, i64 2
%47 = bitcast i64* %46 to <2 x i64>*
store <2 x i64> %wide.load74, <2 x i64>* %47, align 8
%index.next = add i64 %index, 4
%48 = icmp eq i64 %index.next, %n.vec
br i1 %48, label %middle.block.loopexit, label %vector.body, !llvm.loop !2267
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i62
%resume.val = phi i64 [ 0, %while_body.lr.ph.i62 ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %normal-return9, label %while_body.i63.preheader
while_body.i63.preheader: ; preds = %middle.block
%49 = trunc i64 %resume.val to i32
%50 = sub i32 %sret_slot.0.i.i64, %49
%51 = add i32 %sret_slot.0.i.i64, -1
%52 = sub i32 %51, %49
%xtraiter81 = and i32 %50, 3
%lcmp.mod82 = icmp ne i32 %xtraiter81, 0
br i1 %lcmp.mod82, label %while_body.i63.prol, label %while_body.i63.preheader.split
while_body.i63.prol: ; preds = %while_body.i63.prol, %while_body.i63.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i63.prol ], [ %resume.val, %while_body.i63.preheader ]
%prol.iter83 = phi i32 [ %xtraiter81, %while_body.i63.preheader ], [ %prol.iter83.sub, %while_body.i63.prol ]
%.sum.prol = add i64 %indvars.iv.i.prol, %29
%53 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %.sum.prol, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %indvars.iv.i.prol, i32 0
%55 = load i64* %53, align 8
store i64 %55, i64* %54, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %31
%prol.iter83.sub = sub i32 %prol.iter83, 1
%prol.iter83.cmp = icmp ne i32 %prol.iter83.sub, 0
br i1 %prol.iter83.cmp, label %while_body.i63.prol, label %while_body.i63.preheader.split, !llvm.loop !2268
while_body.i63.preheader.split: ; preds = %while_body.i63.prol, %while_body.i63.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val, %while_body.i63.preheader ], [ %indvars.iv.next.i.prol, %while_body.i63.prol ]
%56 = icmp ult i32 %52, 3
br i1 %56, label %normal-return9.loopexit, label %while_body.i63.preheader.split.split
while_body.i63.preheader.split.split: ; preds = %while_body.i63.preheader.split
br label %while_body.i63
while_body.i63: ; preds = %while_body.i63, %while_body.i63.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i63.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i63 ]
%.sum = add i64 %indvars.iv.i, %29
%57 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %.sum, i32 0
%58 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %indvars.iv.i, i32 0
%59 = load i64* %57, align 8
store i64 %59, i64* %58, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i to i32
%.sum.1 = add i64 %indvars.iv.next.i, %29
%60 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %.sum.1, i32 0
%61 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %indvars.iv.next.i, i32 0
%62 = load i64* %60, align 8
store i64 %62, i64* %61, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i to i32
%.sum.2 = add i64 %indvars.iv.next.i.1, %29
%63 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %.sum.2, i32 0
%64 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %indvars.iv.next.i.1, i32 0
%65 = load i64* %63, align 8
store i64 %65, i64* %64, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.1 to i32
%.sum.3 = add i64 %indvars.iv.next.i.2, %29
%66 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %.sum.3, i32 0
%67 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %indvars.iv.next.i.2, i32 0
%68 = load i64* %66, align 8
store i64 %68, i64* %67, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %31
br i1 %exitcond.3, label %normal-return9.loopexit.unr-lcssa, label %while_body.i63, !llvm.loop !2269
normal-return9.loopexit.unr-lcssa: ; preds = %while_body.i63
br label %normal-return9.loopexit
normal-return9.loopexit: ; preds = %while_body.i63.preheader.split, %normal-return9.loopexit.unr-lcssa
br label %normal-return9
normal-return9: ; preds = %normal-return9.loopexit, %middle.block, %normal-return7
%69 = icmp sgt i32 %22, 0
br i1 %69, label %while_body.lr.ph.i61, label %normal-return11
while_body.lr.ph.i61: ; preds = %normal-return9
%70 = sub i32 %sret_slot.0.i.i64, %22
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds %"ll::limb::Limb"* %28, i64 %71
%73 = bitcast %"ll::limb::Limb"* %72 to i8*
%74 = shl nuw nsw i64 %21, 3
%75 = add nuw nsw i64 %74, 34359738360
%76 = and i64 %75, 34359738360
%77 = add nuw nsw i64 %76, 8
tail call void @llvm.memset.p0i8.i64(i8* %73, i8 0, i64 %77, i32 8, i1 false) #20
br label %normal-return11
normal-return11: ; preds = %while_body.lr.ph.i61, %normal-return9
%78 = ashr i32 %4, 31
%79 = or i32 %78, 1
%80 = mul i32 %79, %22
%81 = sub i32 %4, %80
store i32 %81, i32* %3, align 4
br label %next-block12
next-block12: ; preds = %next-block, %normal-return11
%82 = phi i32 [ %81, %normal-return11 ], [ %4, %next-block ]
%cnt.0 = phi i64 [ %26, %normal-return11 ], [ %2, %next-block ]
%83 = icmp eq i64 %cnt.0, 0
br i1 %83, label %then-block-18969-, label %normal-return17
then-block-18969-: ; preds = %next-block12
%84 = bitcast %"int::Int"* %1 to i8*
%85 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %85, i8* %84, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %84, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
normal-return17: ; preds = %next-block12
%86 = icmp slt i32 %82, 0
%87 = sub i32 0, %82
%sret_slot.0.i.i = select i1 %86, i32 %87, i32 %82
%88 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%89 = load %"ll::limb::Limb"** %88, align 8, !alias.scope !2270
%h.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %89, i64 0, i32 0
%h.sroa.0.0.copyload.i = load i64* %h.sroa.0.0..sroa_idx.i, align 8
%90 = sub nsw i64 0, %cnt.0
%91 = and i64 %90, 63
%92 = and i64 %cnt.0, 63
%low_limb.sroa.0.042.i = lshr i64 %h.sroa.0.0.copyload.i, %92
%xs.043.i = add i32 %sret_slot.0.i.i, -1
%93 = icmp eq i32 %xs.043.i, 0
br i1 %93, label %normal-return18, label %while_body.lr.ph.i
while_body.lr.ph.i: ; preds = %normal-return17
%94 = add i32 %sret_slot.0.i.i, -2
%95 = zext i32 %94 to i64
%96 = add i32 %sret_slot.0.i.i, -1
%xtraiter = and i32 %96, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i57.prol, label %while_body.lr.ph.i.split
while_body.i57.prol: ; preds = %while_body.i57.prol, %while_body.lr.ph.i
%xs.047.i.prol = phi i32 [ %xs.043.i, %while_body.lr.ph.i ], [ %xs.0.i.prol, %while_body.i57.prol ]
%low_limb.sroa.0.046.i.prol = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i ], [ %low_limb.sroa.0.0.i.prol, %while_body.i57.prol ]
%.pn.i.prol = phi %"ll::limb::Limb"* [ %89, %while_body.lr.ph.i ], [ %xp.045.i.prol, %while_body.i57.prol ]
%prol.iter = phi i32 [ %xtraiter, %while_body.lr.ph.i ], [ %prol.iter.sub, %while_body.i57.prol ]
%xp.045.i.prol = getelementptr inbounds %"ll::limb::Limb"* %.pn.i.prol, i64 1
%high.sroa.0.0..sroa_idx.i.prol = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.prol, i64 0, i32 0
%high.sroa.0.0.copyload.i.prol = load i64* %high.sroa.0.0..sroa_idx.i.prol, align 8
%97 = shl i64 %high.sroa.0.0.copyload.i.prol, %91
%98 = or i64 %97, %low_limb.sroa.0.046.i.prol
%99 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i.prol, i64 0, i32 0
store i64 %98, i64* %99, align 8
%low_limb.sroa.0.0.i.prol = lshr i64 %high.sroa.0.0.copyload.i.prol, %92
%xs.0.i.prol = add i32 %xs.047.i.prol, -1
%100 = icmp eq i32 %xs.0.i.prol, 0
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i57.prol, label %while_body.lr.ph.i.split, !llvm.loop !2273
while_body.lr.ph.i.split: ; preds = %while_body.i57.prol, %while_body.lr.ph.i
%low_limb.sroa.0.0.i.lcssa.unr = phi i64 [ 0, %while_body.lr.ph.i ], [ %low_limb.sroa.0.0.i.prol, %while_body.i57.prol ]
%xs.047.i.unr = phi i32 [ %xs.043.i, %while_body.lr.ph.i ], [ %xs.0.i.prol, %while_body.i57.prol ]
%low_limb.sroa.0.046.i.unr = phi i64 [ %low_limb.sroa.0.042.i, %while_body.lr.ph.i ], [ %low_limb.sroa.0.0.i.prol, %while_body.i57.prol ]
%.pn.i.unr = phi %"ll::limb::Limb"* [ %89, %while_body.lr.ph.i ], [ %xp.045.i.prol, %while_body.i57.prol ]
%101 = icmp ult i32 %94, 3
br i1 %101, label %while_cond.while_exit_crit_edge.i, label %while_body.lr.ph.i.split.split
while_body.lr.ph.i.split.split: ; preds = %while_body.lr.ph.i.split
br label %while_body.i57
while_cond.while_exit_crit_edge.i.unr-lcssa: ; preds = %while_body.i57
%low_limb.sroa.0.0.i.lcssa.ph = phi i64 [ %low_limb.sroa.0.0.i.3, %while_body.i57 ]
br label %while_cond.while_exit_crit_edge.i
while_cond.while_exit_crit_edge.i: ; preds = %while_body.lr.ph.i.split, %while_cond.while_exit_crit_edge.i.unr-lcssa
%low_limb.sroa.0.0.i.lcssa = phi i64 [ %low_limb.sroa.0.0.i.lcssa.unr, %while_body.lr.ph.i.split ], [ %low_limb.sroa.0.0.i.lcssa.ph, %while_cond.while_exit_crit_edge.i.unr-lcssa ]
%102 = add nuw nsw i64 %95, 1
%scevgep.i = getelementptr %"ll::limb::Limb"* %89, i64 %102
%.pre = load i32* %3, align 4, !alias.scope !2274
br label %normal-return18
while_body.i57: ; preds = %while_body.i57, %while_body.lr.ph.i.split.split
%xs.047.i = phi i32 [ %xs.047.i.unr, %while_body.lr.ph.i.split.split ], [ %xs.0.i.3, %while_body.i57 ]
%low_limb.sroa.0.046.i = phi i64 [ %low_limb.sroa.0.046.i.unr, %while_body.lr.ph.i.split.split ], [ %low_limb.sroa.0.0.i.3, %while_body.i57 ]
%.pn.i = phi %"ll::limb::Limb"* [ %.pn.i.unr, %while_body.lr.ph.i.split.split ], [ %xp.045.i.3, %while_body.i57 ]
%xp.045.i = getelementptr inbounds %"ll::limb::Limb"* %.pn.i, i64 1
%high.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 0, i32 0
%high.sroa.0.0.copyload.i = load i64* %high.sroa.0.0..sroa_idx.i, align 8
%103 = shl i64 %high.sroa.0.0.copyload.i, %91
%104 = or i64 %103, %low_limb.sroa.0.046.i
%105 = getelementptr inbounds %"ll::limb::Limb"* %.pn.i, i64 0, i32 0
store i64 %104, i64* %105, align 8
%low_limb.sroa.0.0.i = lshr i64 %high.sroa.0.0.copyload.i, %92
%xs.0.i = add i32 %xs.047.i, -1
%xp.045.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 1
%high.sroa.0.0..sroa_idx.i.1 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 0, i32 0
%high.sroa.0.0.copyload.i.1 = load i64* %high.sroa.0.0..sroa_idx.i.1, align 8
%106 = shl i64 %high.sroa.0.0.copyload.i.1, %91
%107 = or i64 %106, %low_limb.sroa.0.0.i
%108 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i, i64 0, i32 0
store i64 %107, i64* %108, align 8
%low_limb.sroa.0.0.i.1 = lshr i64 %high.sroa.0.0.copyload.i.1, %92
%xs.0.i.1 = add i32 %xs.0.i, -1
%xp.045.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 1
%high.sroa.0.0..sroa_idx.i.2 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 0, i32 0
%high.sroa.0.0.copyload.i.2 = load i64* %high.sroa.0.0..sroa_idx.i.2, align 8
%109 = shl i64 %high.sroa.0.0.copyload.i.2, %91
%110 = or i64 %109, %low_limb.sroa.0.0.i.1
%111 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.1, i64 0, i32 0
store i64 %110, i64* %111, align 8
%low_limb.sroa.0.0.i.2 = lshr i64 %high.sroa.0.0.copyload.i.2, %92
%xs.0.i.2 = add i32 %xs.0.i.1, -1
%xp.045.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 1
%high.sroa.0.0..sroa_idx.i.3 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.3, i64 0, i32 0
%high.sroa.0.0.copyload.i.3 = load i64* %high.sroa.0.0..sroa_idx.i.3, align 8
%112 = shl i64 %high.sroa.0.0.copyload.i.3, %91
%113 = or i64 %112, %low_limb.sroa.0.0.i.2
%114 = getelementptr inbounds %"ll::limb::Limb"* %xp.045.i.2, i64 0, i32 0
store i64 %113, i64* %114, align 8
%low_limb.sroa.0.0.i.3 = lshr i64 %high.sroa.0.0.copyload.i.3, %92
%xs.0.i.3 = add i32 %xs.0.i.2, -1
%115 = icmp eq i32 %xs.0.i.3, 0
br i1 %115, label %while_cond.while_exit_crit_edge.i.unr-lcssa, label %while_body.i57
normal-return18: ; preds = %while_cond.while_exit_crit_edge.i, %normal-return17
%116 = phi i32 [ %.pre, %while_cond.while_exit_crit_edge.i ], [ %82, %normal-return17 ]
%low_limb.sroa.0.0.lcssa.i = phi i64 [ %low_limb.sroa.0.0.i.lcssa, %while_cond.while_exit_crit_edge.i ], [ %low_limb.sroa.0.042.i, %normal-return17 ]
%rp.0.lcssa.i = phi %"ll::limb::Limb"* [ %scevgep.i, %while_cond.while_exit_crit_edge.i ], [ %89, %normal-return17 ]
%low_limb.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %rp.0.lcssa.i, i64 0, i32 0
store i64 %low_limb.sroa.0.0.lcssa.i, i64* %low_limb.sroa.0.0..sroa_idx.i, align 8
%117 = icmp eq i32 %116, 0
br i1 %117, label %normal-return19, label %join.lr.ph.i
join.lr.ph.i: ; preds = %normal-return18
%118 = ashr i32 %116, 31
%119 = or i32 %118, 1
%120 = load %"ll::limb::Limb"** %88, align 8, !alias.scope !2279
br label %join.i
while_body.i: ; preds = %join.i
%121 = sub i32 %123, %119
store i32 %121, i32* %3, align 4, !alias.scope !2279
%122 = icmp eq i32 %123, %119
br i1 %122, label %normal-return19.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%123 = phi i32 [ %116, %join.lr.ph.i ], [ %121, %while_body.i ]
%124 = icmp slt i32 %123, 0
%125 = sub i32 0, %123
%sret_slot.0.i.i.i = select i1 %124, i32 %125, i32 %123
%126 = add i32 %sret_slot.0.i.i.i, -1
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds %"ll::limb::Limb"* %120, i64 %127, i32 0
%129 = load i64* %128, align 8, !alias.scope !2280, !noalias !2283
%130 = icmp eq i64 %129, 0
br i1 %130, label %while_body.i, label %normal-return19.loopexit
normal-return19.loopexit: ; preds = %while_body.i, %join.i
br label %normal-return19
normal-return19: ; preds = %normal-return19.loopexit, %normal-return18
%131 = bitcast %"int::Int"* %1 to i8*
%132 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %132, i8* %131, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %131, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: uwtable
define void @"_ZN3int36Int.BitAnd$LT$$RF$$u27$a$u20$Int$GT$6bitand20ha91cc2ba64d2a15cG9eE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2285
%5 = icmp eq i32 %4, 0
br i1 %5, label %normal-return, label %else-block.i
else-block.i: ; preds = %entry-block
%6 = ashr i32 %4, 31
%7 = or i32 %6, 1
br label %normal-return
normal-return: ; preds = %else-block.i, %entry-block
%sret_slot.0.i = phi i32 [ 0, %entry-block ], [ %7, %else-block.i ]
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !2288
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-19223-, label %normal-return1
unwind_custom_: ; preds = %else-block.i345, %then-block-14817-.i344, %else-block.i285, %then-block-14817-.i, %then-block-19249-
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !2291
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%18 = bitcast %"int::Int"* %1 to i8**
%19 = load i8** %18, align 8, !alias.scope !2294
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !2291
store i32 0, i32* %8, align 4, !alias.scope !2291
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%22 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
normal-return1: ; preds = %normal-return
%23 = ashr i32 %9, 31
%24 = or i32 %23, 1
%25 = icmp eq i32 %sret_slot.0.i, 0
br i1 %25, label %then-block-19223-, label %next-block
then-block-19223-: ; preds = %normal-return, %normal-return1
store i32 0, i32* %8, align 4
%26 = bitcast %"int::Int"* %1 to i8*
%27 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* %26, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %26, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292: ; preds = %normal-return86, %normal-return6, %then-block-19239-, %then-block-19223-, %normal-return54, %normal-return16
%28 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %28)
ret void
next-block: ; preds = %normal-return1
br i1 %5, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i: ; preds = %next-block
%29 = ashr i32 %4, 31
%30 = or i32 %29, 1
%31 = icmp sgt i32 %30, 0
br i1 %31, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352, label %next-block7.i
next-block7.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%32 = icmp slt i32 %30, 0
br i1 %32, label %then-block-22530-.i, label %next-block9.i
then-block-22530-.i: ; preds = %next-block7.i
%33 = icmp slt i32 %4, 0
%34 = sub i32 0, %4
%sret_slot.0.i.i.i294 = select i1 %33, i32 %34, i32 %4
%35 = icmp sgt i32 %sret_slot.0.i.i.i294, 1
br i1 %35, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352, label %normal-return3
next-block9.i: ; preds = %next-block7.i
%36 = icmp eq i32 %4, 1
br i1 %36, label %normal-return3, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352
normal-return3: ; preds = %next-block9.i, %then-block-22530-.i
%.pn413.in = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%.pn413 = load %"ll::limb::Limb"** %.pn413.in, align 8
%.sink403.in = getelementptr inbounds %"ll::limb::Limb"* %.pn413, i64 0, i32 0
%.sink403 = load i64* %.sink403.in, align 8
%37 = icmp eq i64 %.sink403, 1
br i1 %37, label %then-block-19239-, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352
then-block-19239-: ; preds = %normal-return3
%38 = bitcast %"int::Int"* %1 to i8*
%39 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %39, i8* %38, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %38, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352: ; preds = %normal-return3, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i, %then-block-22530-.i, %next-block, %next-block9.i
%40 = ashr i32 %9, 31
%41 = or i32 %40, 1
%42 = icmp sgt i32 %41, 0
br i1 %42, label %normal-return9, label %next-block7.i355
next-block7.i355: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352
%43 = icmp slt i32 %41, 0
br i1 %43, label %then-block-22530-.i357, label %next-block9.i359
then-block-22530-.i357: ; preds = %next-block7.i355
%44 = icmp slt i32 %9, 0
%45 = sub i32 0, %9
%sret_slot.0.i.i.i356 = select i1 %44, i32 %45, i32 %9
%46 = icmp sgt i32 %sret_slot.0.i.i.i356, 1
br i1 %46, label %normal-return9, label %normal-return5
next-block9.i359: ; preds = %next-block7.i355
%47 = icmp eq i32 %9, 1
br i1 %47, label %normal-return5, label %normal-return9
normal-return5: ; preds = %next-block9.i359, %then-block-22530-.i357
%.pn.in = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%.pn = load %"ll::limb::Limb"** %.pn.in, align 8
%.sink.in = getelementptr inbounds %"ll::limb::Limb"* %.pn, i64 0, i32 0
%.sink = load i64* %.sink.in, align 8
%48 = icmp eq i64 %.sink, 1
br i1 %48, label %then-block-19249-, label %normal-return9
then-block-19249-: ; preds = %normal-return5
invoke void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return6 unwind label %unwind_custom_
normal-return6: ; preds = %then-block-19249-
%49 = bitcast %"int::Int"* %1 to i8*
%50 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %50, i8* %49, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %49, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
normal-return9: ; preds = %next-block9.i359, %then-block-22530-.i357, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i352, %normal-return5
%51 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%52 = load %"ll::limb::Limb"** %51, align 8, !alias.scope !2297
%53 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%54 = load %"ll::limb::Limb"** %53, align 8, !alias.scope !2300
%55 = icmp sgt i32 %sret_slot.0.i, 0
%56 = icmp sgt i32 %24, 0
%.279 = and i1 %55, %56
%57 = bitcast %"ll::limb::Limb"* %52 to i8*
br i1 %.279, label %normal-return14, label %next-block18
normal-return14: ; preds = %normal-return9
%58 = icmp slt i32 %9, 0
%59 = sub i32 0, %9
%sret_slot.0.i.i381 = select i1 %58, i32 %59, i32 %9
%60 = icmp slt i32 %4, 0
%61 = sub i32 0, %4
%sret_slot.0.i.i380 = select i1 %60, i32 %61, i32 %4
%62 = icmp sle i32 %sret_slot.0.i.i381, %sret_slot.0.i.i380
%sret_slot.0.sroa.speculated.i379 = select i1 %62, i32 %sret_slot.0.i.i381, i32 %sret_slot.0.i.i380
%63 = icmp sgt i32 %sret_slot.0.sroa.speculated.i379, 0
br i1 %63, label %while_body.i.i378.preheader, label %normal-return15
while_body.i.i378.preheader: ; preds = %normal-return14
%64 = sub i32 -1, %sret_slot.0.i.i381
%65 = sub i32 -1, %sret_slot.0.i.i380
%66 = icmp sgt i32 %64, %65
%smax516 = select i1 %66, i32 %64, i32 %65
%67 = sub i32 -1, %smax516
%68 = sub i32 -2, %smax516
%xtraiter = and i32 %67, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i378.prol, label %while_body.i.i378.preheader.split
while_body.i.i378.prol: ; preds = %while_body.i.i378.prol, %while_body.i.i378.preheader
%wp.04.i.i373.prol = phi %"ll::limb::Limb"* [ %74, %while_body.i.i378.prol ], [ %52, %while_body.i.i378.preheader ]
%yp.02.i.i375.prol = phi %"ll::limb::Limb"* [ %75, %while_body.i.i378.prol ], [ %54, %while_body.i.i378.preheader ]
%i.01.i.i376.prol = phi i32 [ %76, %while_body.i.i378.prol ], [ 0, %while_body.i.i378.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i378.preheader ], [ %prol.iter.sub, %while_body.i.i378.prol ]
%69 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i373.prol, i64 0, i32 0
%70 = load i64* %69, align 8
%71 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i375.prol, i64 0, i32 0
%72 = load i64* %71, align 8
%73 = and i64 %72, %70
store i64 %73, i64* %69, align 8
%74 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i373.prol, i64 1
%75 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i375.prol, i64 1
%76 = add nuw nsw i32 %i.01.i.i376.prol, 1
%exitcond.i.i377.prol = icmp eq i32 %76, %sret_slot.0.sroa.speculated.i379
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i378.prol, label %while_body.i.i378.preheader.split, !llvm.loop !2303
while_body.i.i378.preheader.split: ; preds = %while_body.i.i378.prol, %while_body.i.i378.preheader
%wp.04.i.i373.unr = phi %"ll::limb::Limb"* [ %52, %while_body.i.i378.preheader ], [ %74, %while_body.i.i378.prol ]
%yp.02.i.i375.unr = phi %"ll::limb::Limb"* [ %54, %while_body.i.i378.preheader ], [ %75, %while_body.i.i378.prol ]
%i.01.i.i376.unr = phi i32 [ 0, %while_body.i.i378.preheader ], [ %76, %while_body.i.i378.prol ]
%77 = icmp ult i32 %68, 3
br i1 %77, label %normal-return15.loopexit, label %while_body.i.i378.preheader.split.split
while_body.i.i378.preheader.split.split: ; preds = %while_body.i.i378.preheader.split
br label %while_body.i.i378
while_body.i.i378: ; preds = %while_body.i.i378, %while_body.i.i378.preheader.split.split
%wp.04.i.i373 = phi %"ll::limb::Limb"* [ %wp.04.i.i373.unr, %while_body.i.i378.preheader.split.split ], [ %107, %while_body.i.i378 ]
%yp.02.i.i375 = phi %"ll::limb::Limb"* [ %yp.02.i.i375.unr, %while_body.i.i378.preheader.split.split ], [ %108, %while_body.i.i378 ]
%i.01.i.i376 = phi i32 [ %i.01.i.i376.unr, %while_body.i.i378.preheader.split.split ], [ %109, %while_body.i.i378 ]
%78 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i373, i64 0, i32 0
%79 = load i64* %78, align 8
%80 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i375, i64 0, i32 0
%81 = load i64* %80, align 8
%82 = and i64 %81, %79
store i64 %82, i64* %78, align 8
%83 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i373, i64 1
%84 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i375, i64 1
%85 = add nuw nsw i32 %i.01.i.i376, 1
%86 = getelementptr inbounds %"ll::limb::Limb"* %83, i64 0, i32 0
%87 = load i64* %86, align 8
%88 = getelementptr inbounds %"ll::limb::Limb"* %84, i64 0, i32 0
%89 = load i64* %88, align 8
%90 = and i64 %89, %87
store i64 %90, i64* %86, align 8
%91 = getelementptr inbounds %"ll::limb::Limb"* %83, i64 1
%92 = getelementptr inbounds %"ll::limb::Limb"* %84, i64 1
%93 = add nuw nsw i32 %85, 1
%94 = getelementptr inbounds %"ll::limb::Limb"* %91, i64 0, i32 0
%95 = load i64* %94, align 8
%96 = getelementptr inbounds %"ll::limb::Limb"* %92, i64 0, i32 0
%97 = load i64* %96, align 8
%98 = and i64 %97, %95
store i64 %98, i64* %94, align 8
%99 = getelementptr inbounds %"ll::limb::Limb"* %91, i64 1
%100 = getelementptr inbounds %"ll::limb::Limb"* %92, i64 1
%101 = add nuw nsw i32 %93, 1
%102 = getelementptr inbounds %"ll::limb::Limb"* %99, i64 0, i32 0
%103 = load i64* %102, align 8
%104 = getelementptr inbounds %"ll::limb::Limb"* %100, i64 0, i32 0
%105 = load i64* %104, align 8
%106 = and i64 %105, %103
store i64 %106, i64* %102, align 8
%107 = getelementptr inbounds %"ll::limb::Limb"* %99, i64 1
%108 = getelementptr inbounds %"ll::limb::Limb"* %100, i64 1
%109 = add nuw nsw i32 %101, 1
%exitcond.i.i377.3 = icmp eq i32 %109, %sret_slot.0.sroa.speculated.i379
br i1 %exitcond.i.i377.3, label %normal-return15.loopexit.unr-lcssa, label %while_body.i.i378
normal-return15.loopexit.unr-lcssa: ; preds = %while_body.i.i378
br label %normal-return15.loopexit
normal-return15.loopexit: ; preds = %while_body.i.i378.preheader.split, %normal-return15.loopexit.unr-lcssa
br label %normal-return15
normal-return15: ; preds = %normal-return15.loopexit, %normal-return14
store i32 %sret_slot.0.sroa.speculated.i379, i32* %8, align 4
%110 = icmp eq i32 %sret_slot.0.sroa.speculated.i379, 0
br i1 %110, label %normal-return16, label %join.lr.ph.i367
join.lr.ph.i367: ; preds = %normal-return15
%111 = ashr i32 %sret_slot.0.sroa.speculated.i379, 31
%112 = or i32 %111, 1
%113 = load %"ll::limb::Limb"** %51, align 8, !alias.scope !2304
br label %join.i371
while_body.i369: ; preds = %join.i371
%114 = sub i32 %116, %112
store i32 %114, i32* %8, align 4, !alias.scope !2304
%115 = icmp eq i32 %116, %112
br i1 %115, label %normal-return16.loopexit, label %join.i371
join.i371: ; preds = %while_body.i369, %join.lr.ph.i367
%116 = phi i32 [ %sret_slot.0.sroa.speculated.i379, %join.lr.ph.i367 ], [ %114, %while_body.i369 ]
%117 = icmp slt i32 %116, 0
%118 = sub i32 0, %116
%sret_slot.0.i.i.i370 = select i1 %117, i32 %118, i32 %116
%119 = add i32 %sret_slot.0.i.i.i370, -1
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds %"ll::limb::Limb"* %113, i64 %120, i32 0
%122 = load i64* %121, align 8, !alias.scope !2307, !noalias !2310
%123 = icmp eq i64 %122, 0
br i1 %123, label %while_body.i369, label %normal-return16.loopexit
normal-return16.loopexit: ; preds = %while_body.i369, %join.i371
br label %normal-return16
normal-return16: ; preds = %normal-return16.loopexit, %normal-return15
%124 = bitcast %"int::Int"* %1 to i8*
%125 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %125, i8* %124, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %124, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
next-block18: ; preds = %normal-return9
%126 = icmp eq i32 %sret_slot.0.i, %24
br i1 %126, label %normal-return22, label %next-block55
normal-return22: ; preds = %next-block18
%127 = icmp slt i32 %9, 0
%128 = sub i32 0, %9
%sret_slot.0.i.i366 = select i1 %127, i32 %128, i32 %9
%129 = icmp slt i32 %4, 0
%130 = sub i32 0, %4
%sret_slot.0.i.i365 = select i1 %129, i32 %130, i32 %4
%131 = icmp sge i32 %sret_slot.0.i.i365, %sret_slot.0.i.i366
%sret_slot.0.sroa.speculated.i364 = select i1 %131, i32 %sret_slot.0.i.i365, i32 %sret_slot.0.i.i366
%132 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%133 = load i32* %132, align 4, !alias.scope !2312
%134 = icmp ult i32 %133, %sret_slot.0.sroa.speculated.i364
br i1 %134, label %then-block-14806-.i343, label %normal-return24
then-block-14806-.i343: ; preds = %normal-return22
%135 = icmp eq i32 %133, 0
br i1 %135, label %else-block.i345, label %then-block-14817-.i344
then-block-14817-.i344: ; preds = %then-block-14806-.i343
%136 = zext i32 %133 to i64
%137 = shl nuw nsw i64 %136, 3
%138 = zext i32 %sret_slot.0.sroa.speculated.i364 to i64
%139 = shl nuw nsw i64 %138, 3
%140 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %57, i64 %137, i64 %139)
to label %while_exit.i348 unwind label %unwind_custom_
else-block.i345: ; preds = %then-block-14806-.i343
%141 = zext i32 %sret_slot.0.sroa.speculated.i364 to i64
%142 = shl nuw nsw i64 %141, 3
%143 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %142)
to label %while_exit.i348 unwind label %unwind_custom_
while_exit.i348: ; preds = %else-block.i345, %then-block-14817-.i344
%.pre-phi430 = phi i64 [ %137, %then-block-14817-.i344 ], [ 0, %else-block.i345 ]
%.sink.i346 = phi i8* [ %140, %then-block-14817-.i344 ], [ %143, %else-block.i345 ]
%scevgep.i347 = getelementptr i8* %.sink.i346, i64 %.pre-phi430
%144 = xor i32 %133, -1
%145 = add i32 %sret_slot.0.sroa.speculated.i364, %144
%146 = zext i32 %145 to i64
%147 = shl nuw nsw i64 %146, 3
%148 = add nuw nsw i64 %147, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i347, i8 0, i64 %148, i32 8, i1 false), !noalias !2312
%149 = ptrtoint i8* %.sink.i346 to i64
%150 = bitcast %"int::Int"* %1 to i64*
store i64 %149, i64* %150, align 8, !alias.scope !2312
store i32 %sret_slot.0.sroa.speculated.i364, i32* %132, align 4, !alias.scope !2312
%.pre425 = load i32* %8, align 4, !alias.scope !2315
br label %normal-return24
normal-return24: ; preds = %normal-return22, %while_exit.i348
%151 = phi i32 [ %9, %normal-return22 ], [ %.pre425, %while_exit.i348 ]
%152 = icmp slt i32 %151, 0
%153 = sub i32 0, %151
%sret_slot.0.i.i342 = select i1 %152, i32 %153, i32 %151
%154 = icmp sgt i32 %sret_slot.0.sroa.speculated.i364, %sret_slot.0.i.i342
br i1 %154, label %normal-return25, label %normal-return30
normal-return25: ; preds = %normal-return24
%155 = sext i32 %sret_slot.0.i.i342 to i64
%156 = sub i32 %sret_slot.0.sroa.speculated.i364, %sret_slot.0.i.i342
%157 = icmp sgt i32 %156, 0
br i1 %157, label %while_body.lr.ph.i.i333, label %normal-return30
while_body.lr.ph.i.i333: ; preds = %normal-return25
%158 = add i32 %sret_slot.0.sroa.speculated.i364, -1
%159 = sub i32 %158, %sret_slot.0.i.i342
%160 = icmp sgt i32 %sret_slot.0.i.i366, %sret_slot.0.i.i365
%smax = select i1 %160, i32 %sret_slot.0.i.i366, i32 %sret_slot.0.i.i365
%161 = add i32 %smax, -1
%162 = sub i32 %161, %sret_slot.0.i.i342
%163 = zext i32 %162 to i64
%164 = add nuw nsw i64 %163, 1
%end.idx468 = add nuw nsw i64 %163, 1
%n.vec470 = and i64 %164, 8589934588
%cmp.zero472 = icmp eq i64 %n.vec470, 0
%165 = sext i32 %sret_slot.0.i.i342 to i64
%166 = icmp sgt i32 %sret_slot.0.i.i366, %sret_slot.0.i.i365
%smax476 = select i1 %166, i32 %sret_slot.0.i.i366, i32 %sret_slot.0.i.i365
%167 = add i32 %smax476, -1
%168 = sub i32 %167, %sret_slot.0.i.i342
%169 = zext i32 %168 to i64
%170 = add nsw i64 %165, %169
br i1 %cmp.zero472, label %middle.block465, label %vector.memcheck487
vector.memcheck487: ; preds = %while_body.lr.ph.i.i333
%scevgep474 = getelementptr %"ll::limb::Limb"* %52, i64 %165
%scevgep481 = getelementptr %"ll::limb::Limb"* %54, i64 %170
%bound0483 = icmp ule %"ll::limb::Limb"* %scevgep474, %scevgep481
%scevgep479 = getelementptr %"ll::limb::Limb"* %54, i64 %165
%scevgep477 = getelementptr %"ll::limb::Limb"* %52, i64 %170
%bound1484 = icmp ule %"ll::limb::Limb"* %scevgep479, %scevgep477
%memcheck.conflict486 = and i1 %bound0483, %bound1484
br i1 %memcheck.conflict486, label %middle.block465, label %vector.body464.preheader
vector.body464.preheader: ; preds = %vector.memcheck487
br label %vector.body464
vector.body464: ; preds = %vector.body464.preheader, %vector.body464
%index467 = phi i64 [ %index.next493, %vector.body464 ], [ 0, %vector.body464.preheader ]
%171 = add i64 %index467, %155
%172 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %171, i32 0
%173 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %171, i32 0
%174 = bitcast i64* %172 to <2 x i64>*
%wide.load500 = load <2 x i64>* %174, align 8
%175 = getelementptr i64* %172, i64 2
%176 = bitcast i64* %175 to <2 x i64>*
%wide.load501 = load <2 x i64>* %176, align 8
%177 = bitcast i64* %173 to <2 x i64>*
store <2 x i64> %wide.load500, <2 x i64>* %177, align 8
%178 = getelementptr i64* %173, i64 2
%179 = bitcast i64* %178 to <2 x i64>*
store <2 x i64> %wide.load501, <2 x i64>* %179, align 8
%index.next493 = add i64 %index467, 4
%180 = icmp eq i64 %index.next493, %n.vec470
br i1 %180, label %middle.block465.loopexit, label %vector.body464, !llvm.loop !2318
middle.block465.loopexit: ; preds = %vector.body464
br label %middle.block465
middle.block465: ; preds = %middle.block465.loopexit, %vector.memcheck487, %while_body.lr.ph.i.i333
%resume.val488 = phi i64 [ 0, %while_body.lr.ph.i.i333 ], [ 0, %vector.memcheck487 ], [ %n.vec470, %middle.block465.loopexit ]
%cmp.n492 = icmp eq i64 %end.idx468, %resume.val488
br i1 %cmp.n492, label %normal-return30, label %while_body.i.i339.preheader
while_body.i.i339.preheader: ; preds = %middle.block465
%181 = icmp sgt i32 %sret_slot.0.i.i366, %sret_slot.0.i.i365
%smax521 = select i1 %181, i32 %sret_slot.0.i.i366, i32 %sret_slot.0.i.i365
%182 = sub i32 %smax521, %sret_slot.0.i.i342
%183 = trunc i64 %resume.val488 to i32
%184 = sub i32 %182, %183
%185 = add i32 %smax521, -1
%186 = sub i32 %185, %sret_slot.0.i.i342
%187 = sub i32 %186, %183
%xtraiter522 = and i32 %184, 3
%lcmp.mod523 = icmp ne i32 %xtraiter522, 0
br i1 %lcmp.mod523, label %while_body.i.i339.prol, label %while_body.i.i339.preheader.split
while_body.i.i339.prol: ; preds = %while_body.i.i339.prol, %while_body.i.i339.preheader
%indvars.iv.i.i334.prol = phi i64 [ %indvars.iv.next.i.i336.prol, %while_body.i.i339.prol ], [ %resume.val488, %while_body.i.i339.preheader ]
%prol.iter524 = phi i32 [ %xtraiter522, %while_body.i.i339.preheader ], [ %prol.iter524.sub, %while_body.i.i339.prol ]
%.sum.i335.prol = add i64 %indvars.iv.i.i334.prol, %155
%188 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i335.prol, i32 0
%189 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i335.prol, i32 0
%190 = load i64* %188, align 8
store i64 %190, i64* %189, align 8
%indvars.iv.next.i.i336.prol = add nuw nsw i64 %indvars.iv.i.i334.prol, 1
%lftr.wideiv.i337.prol = trunc i64 %indvars.iv.i.i334.prol to i32
%exitcond.i338.prol = icmp eq i32 %lftr.wideiv.i337.prol, %159
%prol.iter524.sub = sub i32 %prol.iter524, 1
%prol.iter524.cmp = icmp ne i32 %prol.iter524.sub, 0
br i1 %prol.iter524.cmp, label %while_body.i.i339.prol, label %while_body.i.i339.preheader.split, !llvm.loop !2319
while_body.i.i339.preheader.split: ; preds = %while_body.i.i339.prol, %while_body.i.i339.preheader
%indvars.iv.i.i334.unr = phi i64 [ %resume.val488, %while_body.i.i339.preheader ], [ %indvars.iv.next.i.i336.prol, %while_body.i.i339.prol ]
%191 = icmp ult i32 %187, 3
br i1 %191, label %normal-return30.loopexit, label %while_body.i.i339.preheader.split.split
while_body.i.i339.preheader.split.split: ; preds = %while_body.i.i339.preheader.split
br label %while_body.i.i339
while_body.i.i339: ; preds = %while_body.i.i339, %while_body.i.i339.preheader.split.split
%indvars.iv.i.i334 = phi i64 [ %indvars.iv.i.i334.unr, %while_body.i.i339.preheader.split.split ], [ %indvars.iv.next.i.i336.3, %while_body.i.i339 ]
%.sum.i335 = add i64 %indvars.iv.i.i334, %155
%192 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i335, i32 0
%193 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i335, i32 0
%194 = load i64* %192, align 8
store i64 %194, i64* %193, align 8
%indvars.iv.next.i.i336 = add nuw nsw i64 %indvars.iv.i.i334, 1
%lftr.wideiv.i337 = trunc i64 %indvars.iv.i.i334 to i32
%.sum.i335.1 = add i64 %indvars.iv.next.i.i336, %155
%195 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i335.1, i32 0
%196 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i335.1, i32 0
%197 = load i64* %195, align 8
store i64 %197, i64* %196, align 8
%indvars.iv.next.i.i336.1 = add nuw nsw i64 %indvars.iv.next.i.i336, 1
%lftr.wideiv.i337.1 = trunc i64 %indvars.iv.next.i.i336 to i32
%.sum.i335.2 = add i64 %indvars.iv.next.i.i336.1, %155
%198 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i335.2, i32 0
%199 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i335.2, i32 0
%200 = load i64* %198, align 8
store i64 %200, i64* %199, align 8
%indvars.iv.next.i.i336.2 = add nuw nsw i64 %indvars.iv.next.i.i336.1, 1
%lftr.wideiv.i337.2 = trunc i64 %indvars.iv.next.i.i336.1 to i32
%.sum.i335.3 = add i64 %indvars.iv.next.i.i336.2, %155
%201 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i335.3, i32 0
%202 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i335.3, i32 0
%203 = load i64* %201, align 8
store i64 %203, i64* %202, align 8
%indvars.iv.next.i.i336.3 = add nuw nsw i64 %indvars.iv.next.i.i336.2, 1
%lftr.wideiv.i337.3 = trunc i64 %indvars.iv.next.i.i336.2 to i32
%exitcond.i338.3 = icmp eq i32 %lftr.wideiv.i337.3, %159
br i1 %exitcond.i338.3, label %normal-return30.loopexit.unr-lcssa, label %while_body.i.i339, !llvm.loop !2320
normal-return30.loopexit.unr-lcssa: ; preds = %while_body.i.i339
br label %normal-return30.loopexit
normal-return30.loopexit: ; preds = %while_body.i.i339.preheader.split, %normal-return30.loopexit.unr-lcssa
br label %normal-return30
normal-return30: ; preds = %normal-return30.loopexit, %middle.block465, %normal-return24, %normal-return25
%204 = sub i32 0, %sret_slot.0.sroa.speculated.i364
store i32 %204, i32* %8, align 4
%205 = icmp slt i32 %204, 0
%sret_slot.0.i.i332 = select i1 %205, i32 %sret_slot.0.sroa.speculated.i364, i32 %204
%206 = icmp sle i32 %sret_slot.0.i.i332, %sret_slot.0.i.i365
%sret_slot.0.sroa.speculated.i330 = select i1 %206, i32 %sret_slot.0.i.i332, i32 %sret_slot.0.i.i365
br label %while_cond.i.i326
while_exit.i.i322: ; preds = %while_cond.i.i326
%xp.0.i.i325.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i325, %while_cond.i.i326 ]
%cnt.0.i.i323.lcssa = phi i32 [ %cnt.0.i.i323, %while_cond.i.i326 ]
%207 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i325.lcssa, i64 1, i32 0
%208 = load i64* %207, align 8, !noalias !2321
%209 = tail call i64 @llvm.cttz.i64(i64 %208, i1 false) #20
%210 = trunc i64 %209 to i32
%211 = add i32 %210, %cnt.0.i.i323.lcssa
br label %normal-return31
while_cond.i.i326: ; preds = %while_body.i.i327, %normal-return30
%cnt.0.i.i323 = phi i32 [ 0, %normal-return30 ], [ %215, %while_body.i.i327 ]
%xs.0.i.i324 = phi i32 [ %sret_slot.0.sroa.speculated.i330, %normal-return30 ], [ %217, %while_body.i.i327 ]
%xp.0.i.i325 = phi %"ll::limb::Limb"* [ %52, %normal-return30 ], [ %216, %while_body.i.i327 ]
%212 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i325, i64 0, i32 0
%213 = load i64* %212, align 8, !alias.scope !2324, !noalias !2327
%214 = icmp eq i64 %213, 0
br i1 %214, label %while_body.i.i327, label %while_exit.i.i322
while_body.i.i327: ; preds = %while_cond.i.i326
%215 = add i32 %cnt.0.i.i323, 64
%216 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i325, i64 1
%217 = add i32 %xs.0.i.i324, -1
%218 = icmp eq i32 %217, 0
br i1 %218, label %normal-return31.loopexit, label %while_cond.i.i326
normal-return31.loopexit: ; preds = %while_body.i.i327
%.lcssa512 = phi i32 [ %215, %while_body.i.i327 ]
br label %normal-return31
normal-return31: ; preds = %normal-return31.loopexit, %while_exit.i.i322
%sret_slot.0.i.i328 = phi i32 [ %211, %while_exit.i.i322 ], [ %.lcssa512, %normal-return31.loopexit ]
%219 = lshr i32 %sret_slot.0.i.i328, 6
br label %while_cond.i.i318
while_exit.i.i314: ; preds = %while_cond.i.i318
%xp.0.i.i317.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i317, %while_cond.i.i318 ]
%cnt.0.i.i315.lcssa = phi i32 [ %cnt.0.i.i315, %while_cond.i.i318 ]
%220 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i317.lcssa, i64 1, i32 0
%221 = load i64* %220, align 8, !noalias !2329
%222 = tail call i64 @llvm.cttz.i64(i64 %221, i1 false) #20
%223 = trunc i64 %222 to i32
%224 = add i32 %223, %cnt.0.i.i315.lcssa
br label %normal-return35
while_cond.i.i318: ; preds = %while_body.i.i319, %normal-return31
%cnt.0.i.i315 = phi i32 [ 0, %normal-return31 ], [ %228, %while_body.i.i319 ]
%xs.0.i.i316 = phi i32 [ %sret_slot.0.sroa.speculated.i330, %normal-return31 ], [ %230, %while_body.i.i319 ]
%xp.0.i.i317 = phi %"ll::limb::Limb"* [ %54, %normal-return31 ], [ %229, %while_body.i.i319 ]
%225 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i317, i64 0, i32 0
%226 = load i64* %225, align 8, !alias.scope !2332, !noalias !2335
%227 = icmp eq i64 %226, 0
br i1 %227, label %while_body.i.i319, label %while_exit.i.i314
while_body.i.i319: ; preds = %while_cond.i.i318
%228 = add i32 %cnt.0.i.i315, 64
%229 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i317, i64 1
%230 = add i32 %xs.0.i.i316, -1
%231 = icmp eq i32 %230, 0
br i1 %231, label %normal-return35.loopexit, label %while_cond.i.i318
normal-return35.loopexit: ; preds = %while_body.i.i319
%.lcssa = phi i32 [ %228, %while_body.i.i319 ]
br label %normal-return35
normal-return35: ; preds = %normal-return35.loopexit, %while_exit.i.i314
%sret_slot.0.i.i320 = phi i32 [ %224, %while_exit.i.i314 ], [ %.lcssa, %normal-return35.loopexit ]
%232 = lshr i32 %sret_slot.0.i.i320, 6
%233 = icmp uge i32 %232, %219
%sret_slot.0.sroa.speculated.i = select i1 %233, i32 %232, i32 %219
%234 = icmp eq i32 %sret_slot.0.sroa.speculated.i, 0
br i1 %234, label %normal-return39, label %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit313
_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit313: ; preds = %normal-return35
%235 = bitcast %"ll::limb::Limb"* %52 to i8*
%236 = add nsw i32 %sret_slot.0.sroa.speculated.i, -1
%237 = zext i32 %236 to i64
%238 = shl nuw nsw i64 %237, 3
%239 = add nuw nsw i64 %238, 8
tail call void @llvm.memset.p0i8.i64(i8* %235, i8 0, i64 %239, i32 8, i1 false) #20
br label %normal-return39
normal-return39: ; preds = %normal-return35, %_ZN2ll4zero20hc7229a338f4a3e8e6wdE.exit313
%240 = icmp eq i32 %219, %232
br i1 %240, label %normal-return46, label %next-block47
normal-return46: ; preds = %normal-return39
%241 = zext i32 %219 to i64
%242 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %241, i32 0
%243 = load i64* %242, align 8
%244 = sub i64 0, %243
%245 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %241, i32 0
%246 = load i64* %245, align 8
%247 = sub i64 0, %246
%248 = and i64 %247, %244
store i64 %248, i64* %242, align 8
%249 = add nuw nsw i32 %sret_slot.0.sroa.speculated.i, 1
br label %next-block47
next-block47: ; preds = %normal-return39, %normal-return46
%zero_limbs.0 = phi i32 [ %249, %normal-return46 ], [ %sret_slot.0.sroa.speculated.i, %normal-return39 ]
%250 = icmp sgt i32 %sret_slot.0.sroa.speculated.i330, %zero_limbs.0
br i1 %250, label %normal-return51, label %next-block53
normal-return51: ; preds = %next-block47
%251 = sub i32 %sret_slot.0.sroa.speculated.i330, %zero_limbs.0
%252 = sext i32 %zero_limbs.0 to i64
%253 = icmp sgt i32 %251, 0
br i1 %253, label %while_body.i.i310.preheader, label %next-block53
while_body.i.i310.preheader: ; preds = %normal-return51
%254 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %252
%255 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %252
%256 = sub i32 -1, %zero_limbs.0
%257 = sub i32 -1, %sret_slot.0.i.i332
%258 = sub i32 -1, %sret_slot.0.i.i365
%259 = icmp sgt i32 %257, %258
%smax517 = select i1 %259, i32 %257, i32 %258
%260 = sub i32 %256, %smax517
%261 = sub i32 -2, %zero_limbs.0
%262 = sub i32 %261, %smax517
%xtraiter518 = and i32 %260, 3
%lcmp.mod519 = icmp ne i32 %xtraiter518, 0
br i1 %lcmp.mod519, label %while_body.i.i310.prol, label %while_body.i.i310.preheader.split
while_body.i.i310.prol: ; preds = %while_body.i.i310.prol, %while_body.i.i310.preheader
%wp.04.i.i305.prol = phi %"ll::limb::Limb"* [ %269, %while_body.i.i310.prol ], [ %254, %while_body.i.i310.preheader ]
%yp.02.i.i307.prol = phi %"ll::limb::Limb"* [ %270, %while_body.i.i310.prol ], [ %255, %while_body.i.i310.preheader ]
%i.01.i.i308.prol = phi i32 [ %271, %while_body.i.i310.prol ], [ 0, %while_body.i.i310.preheader ]
%prol.iter520 = phi i32 [ %xtraiter518, %while_body.i.i310.preheader ], [ %prol.iter520.sub, %while_body.i.i310.prol ]
%263 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i305.prol, i64 0, i32 0
%264 = load i64* %263, align 8
%265 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i307.prol, i64 0, i32 0
%266 = load i64* %265, align 8
%267 = or i64 %266, %264
%268 = xor i64 %267, -1
store i64 %268, i64* %263, align 8
%269 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i305.prol, i64 1
%270 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i307.prol, i64 1
%271 = add nuw nsw i32 %i.01.i.i308.prol, 1
%exitcond.i.i309.prol = icmp eq i32 %271, %251
%prol.iter520.sub = sub i32 %prol.iter520, 1
%prol.iter520.cmp = icmp ne i32 %prol.iter520.sub, 0
br i1 %prol.iter520.cmp, label %while_body.i.i310.prol, label %while_body.i.i310.preheader.split, !llvm.loop !2337
while_body.i.i310.preheader.split: ; preds = %while_body.i.i310.prol, %while_body.i.i310.preheader
%wp.04.i.i305.unr = phi %"ll::limb::Limb"* [ %254, %while_body.i.i310.preheader ], [ %269, %while_body.i.i310.prol ]
%yp.02.i.i307.unr = phi %"ll::limb::Limb"* [ %255, %while_body.i.i310.preheader ], [ %270, %while_body.i.i310.prol ]
%i.01.i.i308.unr = phi i32 [ 0, %while_body.i.i310.preheader ], [ %271, %while_body.i.i310.prol ]
%272 = icmp ult i32 %262, 3
br i1 %272, label %next-block53.loopexit, label %while_body.i.i310.preheader.split.split
while_body.i.i310.preheader.split.split: ; preds = %while_body.i.i310.preheader.split
br label %while_body.i.i310
while_body.i.i310: ; preds = %while_body.i.i310, %while_body.i.i310.preheader.split.split
%wp.04.i.i305 = phi %"ll::limb::Limb"* [ %wp.04.i.i305.unr, %while_body.i.i310.preheader.split.split ], [ %306, %while_body.i.i310 ]
%yp.02.i.i307 = phi %"ll::limb::Limb"* [ %yp.02.i.i307.unr, %while_body.i.i310.preheader.split.split ], [ %307, %while_body.i.i310 ]
%i.01.i.i308 = phi i32 [ %i.01.i.i308.unr, %while_body.i.i310.preheader.split.split ], [ %308, %while_body.i.i310 ]
%273 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i305, i64 0, i32 0
%274 = load i64* %273, align 8
%275 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i307, i64 0, i32 0
%276 = load i64* %275, align 8
%277 = or i64 %276, %274
%278 = xor i64 %277, -1
store i64 %278, i64* %273, align 8
%279 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i305, i64 1
%280 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i307, i64 1
%281 = add nuw nsw i32 %i.01.i.i308, 1
%282 = getelementptr inbounds %"ll::limb::Limb"* %279, i64 0, i32 0
%283 = load i64* %282, align 8
%284 = getelementptr inbounds %"ll::limb::Limb"* %280, i64 0, i32 0
%285 = load i64* %284, align 8
%286 = or i64 %285, %283
%287 = xor i64 %286, -1
store i64 %287, i64* %282, align 8
%288 = getelementptr inbounds %"ll::limb::Limb"* %279, i64 1
%289 = getelementptr inbounds %"ll::limb::Limb"* %280, i64 1
%290 = add nuw nsw i32 %281, 1
%291 = getelementptr inbounds %"ll::limb::Limb"* %288, i64 0, i32 0
%292 = load i64* %291, align 8
%293 = getelementptr inbounds %"ll::limb::Limb"* %289, i64 0, i32 0
%294 = load i64* %293, align 8
%295 = or i64 %294, %292
%296 = xor i64 %295, -1
store i64 %296, i64* %291, align 8
%297 = getelementptr inbounds %"ll::limb::Limb"* %288, i64 1
%298 = getelementptr inbounds %"ll::limb::Limb"* %289, i64 1
%299 = add nuw nsw i32 %290, 1
%300 = getelementptr inbounds %"ll::limb::Limb"* %297, i64 0, i32 0
%301 = load i64* %300, align 8
%302 = getelementptr inbounds %"ll::limb::Limb"* %298, i64 0, i32 0
%303 = load i64* %302, align 8
%304 = or i64 %303, %301
%305 = xor i64 %304, -1
store i64 %305, i64* %300, align 8
%306 = getelementptr inbounds %"ll::limb::Limb"* %297, i64 1
%307 = getelementptr inbounds %"ll::limb::Limb"* %298, i64 1
%308 = add nuw nsw i32 %299, 1
%exitcond.i.i309.3 = icmp eq i32 %308, %251
br i1 %exitcond.i.i309.3, label %next-block53.loopexit.unr-lcssa, label %while_body.i.i310
next-block53.loopexit.unr-lcssa: ; preds = %while_body.i.i310
br label %next-block53.loopexit
next-block53.loopexit: ; preds = %while_body.i.i310.preheader.split, %next-block53.loopexit.unr-lcssa
br label %next-block53
next-block53: ; preds = %next-block53.loopexit, %normal-return51, %next-block47
%309 = load i32* %8, align 4, !alias.scope !2338
%310 = icmp eq i32 %309, 0
br i1 %310, label %normal-return54, label %join.lr.ph.i299
join.lr.ph.i299: ; preds = %next-block53
%311 = ashr i32 %309, 31
%312 = or i32 %311, 1
%313 = load %"ll::limb::Limb"** %51, align 8, !alias.scope !2343
br label %join.i303
while_body.i301: ; preds = %join.i303
%314 = sub i32 %316, %312
store i32 %314, i32* %8, align 4, !alias.scope !2343
%315 = icmp eq i32 %316, %312
br i1 %315, label %normal-return54.loopexit, label %join.i303
join.i303: ; preds = %while_body.i301, %join.lr.ph.i299
%316 = phi i32 [ %309, %join.lr.ph.i299 ], [ %314, %while_body.i301 ]
%317 = icmp slt i32 %316, 0
%318 = sub i32 0, %316
%sret_slot.0.i.i.i302 = select i1 %317, i32 %318, i32 %316
%319 = add i32 %sret_slot.0.i.i.i302, -1
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds %"ll::limb::Limb"* %313, i64 %320, i32 0
%322 = load i64* %321, align 8, !alias.scope !2344, !noalias !2347
%323 = icmp eq i64 %322, 0
br i1 %323, label %while_body.i301, label %normal-return54.loopexit
normal-return54.loopexit: ; preds = %while_body.i301, %join.i303
br label %normal-return54
normal-return54: ; preds = %normal-return54.loopexit, %next-block53
%324 = bitcast %"int::Int"* %1 to i8*
%325 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %325, i8* %324, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %324, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
next-block55: ; preds = %next-block18
%326 = icmp slt i32 %sret_slot.0.i, 0
br i1 %326, label %then-block-19487-, label %normal-return58
then-block-19487-: ; preds = %next-block55
%327 = icmp slt i32 %9, 0
%328 = sub i32 0, %9
%sret_slot.0.i.i298 = select i1 %327, i32 %328, i32 %9
br label %normal-return68
normal-return58: ; preds = %next-block55
%329 = icmp slt i32 %4, 0
%330 = sub i32 0, %4
%sret_slot.0.i.i297 = select i1 %329, i32 %330, i32 %4
%331 = icmp slt i32 %9, 0
%332 = sub i32 0, %9
%sret_slot.0.i.i296 = select i1 %331, i32 %332, i32 %9
%333 = icmp sgt i32 %sret_slot.0.i.i297, %sret_slot.0.i.i296
br i1 %333, label %normal-return59, label %normal-return68
normal-return59: ; preds = %normal-return58
%334 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%335 = load i32* %334, align 4, !alias.scope !2349
%336 = icmp ult i32 %335, %sret_slot.0.i.i297
br i1 %336, label %then-block-14806-.i, label %normal-return62
then-block-14806-.i: ; preds = %normal-return59
%337 = icmp eq i32 %335, 0
br i1 %337, label %else-block.i285, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%338 = zext i32 %335 to i64
%339 = shl nuw nsw i64 %338, 3
%340 = zext i32 %sret_slot.0.i.i297 to i64
%341 = shl nuw nsw i64 %340, 3
%342 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %57, i64 %339, i64 %341)
to label %while_exit.i unwind label %unwind_custom_
else-block.i285: ; preds = %then-block-14806-.i
%343 = zext i32 %sret_slot.0.i.i297 to i64
%344 = shl nuw nsw i64 %343, 3
%345 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %344)
to label %while_exit.i unwind label %unwind_custom_
while_exit.i: ; preds = %else-block.i285, %then-block-14817-.i
%.pre-phi434 = phi i64 [ %339, %then-block-14817-.i ], [ 0, %else-block.i285 ]
%.sink.i = phi i8* [ %342, %then-block-14817-.i ], [ %345, %else-block.i285 ]
%346 = add i32 %sret_slot.0.i.i297, -1
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi434
%347 = sub i32 %346, %335
%348 = zext i32 %347 to i64
%349 = shl nuw nsw i64 %348, 3
%350 = add nuw nsw i64 %349, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %350, i32 8, i1 false), !noalias !2349
%351 = ptrtoint i8* %.sink.i to i64
%352 = bitcast %"int::Int"* %1 to i64*
store i64 %351, i64* %352, align 8, !alias.scope !2349
store i32 %sret_slot.0.i.i297, i32* %334, align 4, !alias.scope !2349
%.pre = load i32* %8, align 4, !alias.scope !2352
%353 = bitcast i8* %.sink.i to %"ll::limb::Limb"*
br label %normal-return62
normal-return62: ; preds = %while_exit.i, %normal-return59
%.pre424427 = phi %"ll::limb::Limb"* [ %353, %while_exit.i ], [ %52, %normal-return59 ]
%354 = phi i32 [ %.pre, %while_exit.i ], [ %9, %normal-return59 ]
%355 = icmp slt i32 %354, 0
%356 = sub i32 0, %354
%sret_slot.0.i.i283 = select i1 %355, i32 %356, i32 %354
%357 = sext i32 %sret_slot.0.i.i283 to i64
%358 = sub i32 %sret_slot.0.i.i297, %sret_slot.0.i.i283
%359 = icmp sgt i32 %358, 0
br i1 %359, label %while_body.lr.ph.i.i, label %normal-return68
while_body.lr.ph.i.i: ; preds = %normal-return62
%360 = add i32 %sret_slot.0.i.i297, -1
%361 = sub i32 %360, %sret_slot.0.i.i283
%362 = zext i32 %361 to i64
%363 = add nuw nsw i64 %362, 1
%end.idx = add nuw nsw i64 %362, 1
%n.vec = and i64 %363, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%364 = sext i32 %sret_slot.0.i.i283 to i64
%365 = add i32 %sret_slot.0.i.i297, -1
%366 = sub i32 %365, %sret_slot.0.i.i283
%367 = zext i32 %366 to i64
%368 = add nsw i64 %364, %367
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep = getelementptr %"ll::limb::Limb"* %52, i64 %364
%scevgep449 = getelementptr %"ll::limb::Limb"* %54, i64 %368
%bound0 = icmp ule %"ll::limb::Limb"* %scevgep, %scevgep449
%scevgep447 = getelementptr %"ll::limb::Limb"* %54, i64 %364
%scevgep445 = getelementptr %"ll::limb::Limb"* %52, i64 %368
%bound1 = icmp ule %"ll::limb::Limb"* %scevgep447, %scevgep445
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%369 = add i64 %index, %357
%370 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %369, i32 0
%371 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %369, i32 0
%372 = bitcast i64* %370 to <2 x i64>*
%wide.load = load <2 x i64>* %372, align 8
%373 = getelementptr i64* %370, i64 2
%374 = bitcast i64* %373 to <2 x i64>*
%wide.load454 = load <2 x i64>* %374, align 8
%375 = bitcast i64* %371 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %375, align 8
%376 = getelementptr i64* %371, i64 2
%377 = bitcast i64* %376 to <2 x i64>*
store <2 x i64> %wide.load454, <2 x i64>* %377, align 8
%index.next = add i64 %index, 4
%378 = icmp eq i64 %index.next, %n.vec
br i1 %378, label %middle.block.loopexit, label %vector.body, !llvm.loop !2355
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %next-block64.loopexit, label %while_body.i.i282.preheader
while_body.i.i282.preheader: ; preds = %middle.block
%379 = sub i32 %sret_slot.0.i.i297, %sret_slot.0.i.i283
%380 = trunc i64 %resume.val to i32
%381 = sub i32 %379, %380
%382 = add i32 %sret_slot.0.i.i297, -1
%383 = sub i32 %382, %sret_slot.0.i.i283
%384 = sub i32 %383, %380
%xtraiter528 = and i32 %381, 3
%lcmp.mod529 = icmp ne i32 %xtraiter528, 0
br i1 %lcmp.mod529, label %while_body.i.i282.prol, label %while_body.i.i282.preheader.split
while_body.i.i282.prol: ; preds = %while_body.i.i282.prol, %while_body.i.i282.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i282.prol ], [ %resume.val, %while_body.i.i282.preheader ]
%prol.iter530 = phi i32 [ %xtraiter528, %while_body.i.i282.preheader ], [ %prol.iter530.sub, %while_body.i.i282.prol ]
%.sum.i.prol = add i64 %indvars.iv.i.i.prol, %357
%385 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.prol, i32 0
%386 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i.prol, i32 0
%387 = load i64* %385, align 8
store i64 %387, i64* %386, align 8
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %361
%prol.iter530.sub = sub i32 %prol.iter530, 1
%prol.iter530.cmp = icmp ne i32 %prol.iter530.sub, 0
br i1 %prol.iter530.cmp, label %while_body.i.i282.prol, label %while_body.i.i282.preheader.split, !llvm.loop !2356
while_body.i.i282.preheader.split: ; preds = %while_body.i.i282.prol, %while_body.i.i282.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i282.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i282.prol ]
%388 = icmp ult i32 %384, 3
br i1 %388, label %next-block64.loopexit.loopexit, label %while_body.i.i282.preheader.split.split
while_body.i.i282.preheader.split.split: ; preds = %while_body.i.i282.preheader.split
br label %while_body.i.i282
while_body.i.i282: ; preds = %while_body.i.i282, %while_body.i.i282.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i282.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i282 ]
%.sum.i = add i64 %indvars.iv.i.i, %357
%389 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i, i32 0
%390 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i, i32 0
%391 = load i64* %389, align 8
store i64 %391, i64* %390, align 8
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%.sum.i.1 = add i64 %indvars.iv.next.i.i, %357
%392 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.1, i32 0
%393 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i.1, i32 0
%394 = load i64* %392, align 8
store i64 %394, i64* %393, align 8
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%.sum.i.2 = add i64 %indvars.iv.next.i.i.1, %357
%395 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.2, i32 0
%396 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i.2, i32 0
%397 = load i64* %395, align 8
store i64 %397, i64* %396, align 8
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%.sum.i.3 = add i64 %indvars.iv.next.i.i.2, %357
%398 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.3, i32 0
%399 = getelementptr inbounds %"ll::limb::Limb"* %52, i64 %.sum.i.3, i32 0
%400 = load i64* %398, align 8
store i64 %400, i64* %399, align 8
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %361
br i1 %exitcond.3, label %next-block64.loopexit.loopexit.unr-lcssa, label %while_body.i.i282, !llvm.loop !2357
next-block64.loopexit.loopexit.unr-lcssa: ; preds = %while_body.i.i282
br label %next-block64.loopexit.loopexit
next-block64.loopexit.loopexit: ; preds = %while_body.i.i282.preheader.split, %next-block64.loopexit.loopexit.unr-lcssa
br label %next-block64.loopexit
next-block64.loopexit: ; preds = %next-block64.loopexit.loopexit, %middle.block
%.pre424.pre = load %"ll::limb::Limb"** %51, align 8, !alias.scope !2358
br label %normal-return68
normal-return68: ; preds = %normal-return58, %normal-return62, %next-block64.loopexit, %then-block-19487-
%401 = phi %"ll::limb::Limb"* [ %52, %then-block-19487- ], [ %.pre424.pre, %next-block64.loopexit ], [ %.pre424427, %normal-return62 ], [ %52, %normal-return58 ]
%.sroa.0145.0 = phi %"ll::limb::Limb"* [ %52, %then-block-19487- ], [ %54, %next-block64.loopexit ], [ %54, %normal-return62 ], [ %54, %normal-return58 ]
%.sroa.5.0 = phi %"ll::limb::Limb"* [ %54, %then-block-19487- ], [ %52, %next-block64.loopexit ], [ %52, %normal-return62 ], [ %52, %normal-return58 ]
%.sroa.8.0 = phi i32 [ %sret_slot.0.i.i298, %then-block-19487- ], [ %sret_slot.0.i.i297, %next-block64.loopexit ], [ %sret_slot.0.i.i297, %normal-return62 ], [ %sret_slot.0.i.i297, %normal-return58 ]
br label %while_cond.i.i
while_exit.i.i: ; preds = %while_cond.i.i
%xp.0.i.i.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i, %while_cond.i.i ]
%cnt.0.i.i.lcssa = phi i32 [ %cnt.0.i.i, %while_cond.i.i ]
%402 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i.lcssa, i64 1, i32 0
%403 = load i64* %402, align 8, !noalias !2361
%404 = tail call i64 @llvm.cttz.i64(i64 %403, i1 false) #20
%405 = trunc i64 %404 to i32
%406 = add i32 %405, %cnt.0.i.i.lcssa
br label %normal-return70
while_cond.i.i: ; preds = %while_body.i.i280, %normal-return68
%cnt.0.i.i = phi i32 [ 0, %normal-return68 ], [ %410, %while_body.i.i280 ]
%xs.0.i.i = phi i32 [ %.sroa.8.0, %normal-return68 ], [ %412, %while_body.i.i280 ]
%xp.0.i.i = phi %"ll::limb::Limb"* [ %.sroa.5.0, %normal-return68 ], [ %411, %while_body.i.i280 ]
%407 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 0, i32 0
%408 = load i64* %407, align 8, !alias.scope !2364, !noalias !2367
%409 = icmp eq i64 %408, 0
br i1 %409, label %while_body.i.i280, label %while_exit.i.i
while_body.i.i280: ; preds = %while_cond.i.i
%410 = add i32 %cnt.0.i.i, 64
%411 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 1
%412 = add i32 %xs.0.i.i, -1
%413 = icmp eq i32 %412, 0
br i1 %413, label %normal-return70.loopexit, label %while_cond.i.i
normal-return70.loopexit: ; preds = %while_body.i.i280
%.lcssa515 = phi i32 [ %410, %while_body.i.i280 ]
br label %normal-return70
normal-return70: ; preds = %normal-return70.loopexit, %while_exit.i.i
%sret_slot.0.i.i = phi i32 [ %406, %while_exit.i.i ], [ %.lcssa515, %normal-return70.loopexit ]
%414 = lshr i32 %sret_slot.0.i.i, 6
%415 = zext i32 %414 to i64
%416 = icmp eq i32 %414, 0
br i1 %416, label %normal-return77, label %while_body.lr.ph.i
while_body.lr.ph.i: ; preds = %normal-return70
%417 = bitcast %"ll::limb::Limb"* %401 to i8*
%418 = add nsw i32 %414, -1
%419 = zext i32 %418 to i64
%420 = shl nuw nsw i64 %419, 3
%421 = add nuw nsw i64 %420, 8
tail call void @llvm.memset.p0i8.i64(i8* %417, i8 0, i64 %421, i32 8, i1 false) #20
br label %normal-return77
normal-return77: ; preds = %normal-return70, %while_body.lr.ph.i
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %.sroa.5.0, i64 %415, i32 0
%sret_slot.sroa.0.0.copyload.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !2369
%422 = sub i64 0, %sret_slot.sroa.0.0.copyload.i
%423 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0145.0, i64 %415, i32 0
%424 = load i64* %423, align 8
%425 = and i64 %424, %422
%426 = getelementptr inbounds %"ll::limb::Limb"* %401, i64 %415, i32 0
store i64 %425, i64* %426, align 8
%427 = add nuw nsw i32 %414, 1
%428 = icmp slt i32 %427, %.sroa.8.0
br i1 %428, label %normal-return83, label %next-block85
normal-return83: ; preds = %normal-return77
%429 = add nuw nsw i64 %415, 1
%.neg3.i = xor i32 %414, -1
%430 = add i32 %.sroa.8.0, %.neg3.i
%431 = icmp sgt i32 %430, 0
br i1 %431, label %while_body.i.i.preheader, label %next-block85
while_body.i.i.preheader: ; preds = %normal-return83
%432 = zext i32 %427 to i64
%433 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.5.0, i64 %432
%434 = getelementptr inbounds %"ll::limb::Limb"* %.sroa.0145.0, i64 %429
%435 = getelementptr inbounds %"ll::limb::Limb"* %401, i64 %429
%436 = add i32 %.sroa.8.0, -1
%437 = lshr i32 %sret_slot.0.i.i, 6
%438 = sub i32 %436, %437
%439 = add i32 %.sroa.8.0, -2
%440 = sub i32 %439, %437
%xtraiter525 = and i32 %438, 3
%lcmp.mod526 = icmp ne i32 %xtraiter525, 0
br i1 %lcmp.mod526, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%wp.04.i.i.prol = phi %"ll::limb::Limb"* [ %448, %while_body.i.i.prol ], [ %435, %while_body.i.i.preheader ]
%xp.03.i.i.prol = phi %"ll::limb::Limb"* [ %449, %while_body.i.i.prol ], [ %434, %while_body.i.i.preheader ]
%yp.02.i.i.prol = phi %"ll::limb::Limb"* [ %450, %while_body.i.i.prol ], [ %433, %while_body.i.i.preheader ]
%i.01.i.i.prol = phi i32 [ %451, %while_body.i.i.prol ], [ 0, %while_body.i.i.preheader ]
%prol.iter527 = phi i32 [ %xtraiter525, %while_body.i.i.preheader ], [ %prol.iter527.sub, %while_body.i.i.prol ]
%441 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i.prol, i64 0, i32 0
%442 = load i64* %441, align 8
%443 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i.prol, i64 0, i32 0
%444 = load i64* %443, align 8
%445 = xor i64 %444, -1
%446 = and i64 %442, %445
%447 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i.prol, i64 0, i32 0
store i64 %446, i64* %447, align 8
%448 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i.prol, i64 1
%449 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i.prol, i64 1
%450 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i.prol, i64 1
%451 = add nuw nsw i32 %i.01.i.i.prol, 1
%exitcond.i.i.prol = icmp eq i32 %451, %430
%prol.iter527.sub = sub i32 %prol.iter527, 1
%prol.iter527.cmp = icmp ne i32 %prol.iter527.sub, 0
br i1 %prol.iter527.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2372
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%wp.04.i.i.unr = phi %"ll::limb::Limb"* [ %435, %while_body.i.i.preheader ], [ %448, %while_body.i.i.prol ]
%xp.03.i.i.unr = phi %"ll::limb::Limb"* [ %434, %while_body.i.i.preheader ], [ %449, %while_body.i.i.prol ]
%yp.02.i.i.unr = phi %"ll::limb::Limb"* [ %433, %while_body.i.i.preheader ], [ %450, %while_body.i.i.prol ]
%i.01.i.i.unr = phi i32 [ 0, %while_body.i.i.preheader ], [ %451, %while_body.i.i.prol ]
%452 = icmp ult i32 %440, 3
br i1 %452, label %next-block85.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%wp.04.i.i = phi %"ll::limb::Limb"* [ %wp.04.i.i.unr, %while_body.i.i.preheader.split.split ], [ %493, %while_body.i.i ]
%xp.03.i.i = phi %"ll::limb::Limb"* [ %xp.03.i.i.unr, %while_body.i.i.preheader.split.split ], [ %494, %while_body.i.i ]
%yp.02.i.i = phi %"ll::limb::Limb"* [ %yp.02.i.i.unr, %while_body.i.i.preheader.split.split ], [ %495, %while_body.i.i ]
%i.01.i.i = phi i32 [ %i.01.i.i.unr, %while_body.i.i.preheader.split.split ], [ %496, %while_body.i.i ]
%453 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i, i64 0, i32 0
%454 = load i64* %453, align 8
%455 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i, i64 0, i32 0
%456 = load i64* %455, align 8
%457 = xor i64 %456, -1
%458 = and i64 %454, %457
%459 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i, i64 0, i32 0
store i64 %458, i64* %459, align 8
%460 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i, i64 1
%461 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i, i64 1
%462 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i, i64 1
%463 = add nuw nsw i32 %i.01.i.i, 1
%464 = getelementptr inbounds %"ll::limb::Limb"* %461, i64 0, i32 0
%465 = load i64* %464, align 8
%466 = getelementptr inbounds %"ll::limb::Limb"* %462, i64 0, i32 0
%467 = load i64* %466, align 8
%468 = xor i64 %467, -1
%469 = and i64 %465, %468
%470 = getelementptr inbounds %"ll::limb::Limb"* %460, i64 0, i32 0
store i64 %469, i64* %470, align 8
%471 = getelementptr inbounds %"ll::limb::Limb"* %460, i64 1
%472 = getelementptr inbounds %"ll::limb::Limb"* %461, i64 1
%473 = getelementptr inbounds %"ll::limb::Limb"* %462, i64 1
%474 = add nuw nsw i32 %463, 1
%475 = getelementptr inbounds %"ll::limb::Limb"* %472, i64 0, i32 0
%476 = load i64* %475, align 8
%477 = getelementptr inbounds %"ll::limb::Limb"* %473, i64 0, i32 0
%478 = load i64* %477, align 8
%479 = xor i64 %478, -1
%480 = and i64 %476, %479
%481 = getelementptr inbounds %"ll::limb::Limb"* %471, i64 0, i32 0
store i64 %480, i64* %481, align 8
%482 = getelementptr inbounds %"ll::limb::Limb"* %471, i64 1
%483 = getelementptr inbounds %"ll::limb::Limb"* %472, i64 1
%484 = getelementptr inbounds %"ll::limb::Limb"* %473, i64 1
%485 = add nuw nsw i32 %474, 1
%486 = getelementptr inbounds %"ll::limb::Limb"* %483, i64 0, i32 0
%487 = load i64* %486, align 8
%488 = getelementptr inbounds %"ll::limb::Limb"* %484, i64 0, i32 0
%489 = load i64* %488, align 8
%490 = xor i64 %489, -1
%491 = and i64 %487, %490
%492 = getelementptr inbounds %"ll::limb::Limb"* %482, i64 0, i32 0
store i64 %491, i64* %492, align 8
%493 = getelementptr inbounds %"ll::limb::Limb"* %482, i64 1
%494 = getelementptr inbounds %"ll::limb::Limb"* %483, i64 1
%495 = getelementptr inbounds %"ll::limb::Limb"* %484, i64 1
%496 = add nuw nsw i32 %485, 1
%exitcond.i.i.3 = icmp eq i32 %496, %430
br i1 %exitcond.i.i.3, label %next-block85.loopexit.unr-lcssa, label %while_body.i.i
next-block85.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %next-block85.loopexit
next-block85.loopexit: ; preds = %while_body.i.i.preheader.split, %next-block85.loopexit.unr-lcssa
br label %next-block85
next-block85: ; preds = %next-block85.loopexit, %normal-return83, %normal-return77
store i32 %.sroa.8.0, i32* %8, align 4
%497 = icmp eq i32 %.sroa.8.0, 0
br i1 %497, label %normal-return86, label %join.lr.ph.i
join.lr.ph.i: ; preds = %next-block85
%498 = ashr i32 %.sroa.8.0, 31
%499 = or i32 %498, 1
%500 = load %"ll::limb::Limb"** %51, align 8, !alias.scope !2373
br label %join.i
while_body.i: ; preds = %join.i
%501 = sub i32 %503, %499
store i32 %501, i32* %8, align 4, !alias.scope !2373
%502 = icmp eq i32 %503, %499
br i1 %502, label %normal-return86.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%503 = phi i32 [ %.sroa.8.0, %join.lr.ph.i ], [ %501, %while_body.i ]
%504 = icmp slt i32 %503, 0
%505 = sub i32 0, %503
%sret_slot.0.i.i.i = select i1 %504, i32 %505, i32 %503
%506 = add i32 %sret_slot.0.i.i.i, -1
%507 = sext i32 %506 to i64
%508 = getelementptr inbounds %"ll::limb::Limb"* %500, i64 %507, i32 0
%509 = load i64* %508, align 8, !alias.scope !2376, !noalias !2379
%510 = icmp eq i64 %509, 0
br i1 %510, label %while_body.i, label %normal-return86.loopexit
normal-return86.loopexit: ; preds = %while_body.i, %join.i
br label %normal-return86
normal-return86: ; preds = %normal-return86.loopexit, %next-block85
%511 = bitcast %"int::Int"* %1 to i8*
%512 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %512, i8* %511, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %511, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit292
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), i32* noalias nocapture readonly dereferenceable(4)) unnamed_addr #13 {
entry-block:
%2 = load i32* %1, align 4
%3 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2381
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-22498-, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
_ZN3int3Int4sign20he27417198f6be603VJdE.exit: ; preds = %entry-block
%6 = ashr i32 %4, 31
%7 = or i32 %6, 1
%8 = icmp eq i32 %2, 0
br i1 %8, label %then-block-22498-, label %next-block
then-block-22498-: ; preds = %entry-block, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%sret_slot.0.i45 = phi i32 [ %7, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit ], [ 0, %entry-block ]
%9 = icmp eq i32 %2, %sret_slot.0.i45
%10 = zext i1 %9 to i8
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-22530-, %join3, %then-block-22498-, %next-block8, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
%sret_slot.0 = phi i8 [ %37, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit" ], [ %10, %then-block-22498- ], [ %26, %next-block8 ], [ 0, %join3 ], [ 0, %then-block-22530- ], [ 0, %next-block ]
%11 = icmp ne i8 %sret_slot.0, 0
ret i1 %11
next-block: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%12 = icmp slt i32 %7, 0
%13 = icmp sgt i32 %2, 0
%.37 = and i1 %13, %12
br i1 %.37, label %clean_custom_, label %join3
join3: ; preds = %next-block
%14 = icmp sgt i32 %7, 0
%15 = icmp slt i32 %2, 0
%.38 = and i1 %15, %14
br i1 %.38, label %clean_custom_, label %next-block7
next-block7: ; preds = %join3
br i1 %12, label %then-block-22530-, label %next-block9
then-block-22530-: ; preds = %next-block7
%16 = icmp slt i32 %4, 0
%17 = sub i32 0, %4
%sret_slot.0.i.i = select i1 %16, i32 %17, i32 %4
%18 = icmp sgt i32 %sret_slot.0.i.i, 1
br i1 %18, label %clean_custom_, label %next-block8
next-block8: ; preds = %then-block-22530-
%19 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2384
%21 = sub i32 0, %2
%sret_slot.0.i41 = select i1 %15, i32 %21, i32 %2
%22 = sext i32 %sret_slot.0.i41 to i64
%23 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 0, i32 0
%24 = load i64* %23, align 8, !alias.scope !2387, !noalias !2390
%25 = icmp eq i64 %24, %22
%26 = zext i1 %25 to i8
br label %clean_custom_
next-block9: ; preds = %next-block7
%27 = sub i32 0, %2
%sret_slot.0.i40 = select i1 %15, i32 %27, i32 %2
%28 = sext i32 %sret_slot.0.i40 to i64
%29 = or i32 %4, %sret_slot.0.i40
%30 = icmp eq i32 %29, 0
br i1 %30, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit", label %next-block.i
next-block.i: ; preds = %next-block9
%31 = icmp eq i32 %4, 1
br i1 %31, label %before_rhs2.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
before_rhs2.i: ; preds = %next-block.i
%32 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%33 = load %"ll::limb::Limb"** %32, align 8, !alias.scope !2392, !noalias !2397
%34 = getelementptr inbounds %"ll::limb::Limb"* %33, i64 0, i32 0
%35 = load i64* %34, align 8, !alias.scope !2399, !noalias !2402
%36 = icmp eq i64 %35, %28
br label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit": ; preds = %next-block9, %next-block.i, %before_rhs2.i
%sret_slot.0.i39 = phi i1 [ false, %next-block.i ], [ %36, %before_rhs2.i ], [ true, %next-block9 ]
%37 = zext i1 %sret_slot.0.i39 to i8
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37_$RF$$u27$a$u20$Int.BitAnd$LT$Int$GT$6bitand20h2e8ceaeaa054c494ygfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int36Int.BitAnd$LT$$RF$$u27$a$u20$Int$GT$6bitand20ha91cc2ba64d2a15cG9eE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %entry-block
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %5
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int52_$RF$$u27$b$u20$Int.BitAnd$LT$$RF$$u27$a$u20$Int$GT$6bitand20h994890a33c0c4979VgfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !2404, !noalias !2409
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %entry-block
%8 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2411, !noalias !2416
%9 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2411, !noalias !2416
%10 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2411, !noalias !2416
%11 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2411, !noalias !2416
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %entry-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%12 = icmp slt i32 %6, 0
%13 = sub i32 0, %6
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %6
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2417
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2420, !noalias !2409
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep4 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep45 = bitcast %"ll::limb::Limb"* %scevgep4 to i8*
%bound0 = icmp ule i8* %17, %scevgep45
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2423
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load7 = load <2 x i64>* %34, align 8, !noalias !2423
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2423
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load7, <2 x i64>* %37, align 8, !noalias !2423
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2424
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2423
store i64 %45, i64* %44, align 8, !noalias !2423
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2425
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2423
store i64 %49, i64* %48, align 8, !noalias !2423
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2423
store i64 %52, i64* %51, align 8, !noalias !2423
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2423
store i64 %55, i64* %54, align 8, !noalias !2423
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2423
store i64 %58, i64* %57, align 8, !noalias !2423
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2426
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2409, !noalias !2416
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %6, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2409, !noalias !2416
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2409, !noalias !2416
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2409, !noalias !2416
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %4, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2416
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int36Int.BitAnd$LT$$RF$$u27$a$u20$Int$GT$6bitand20ha91cc2ba64d2a15cG9eE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2)
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int21Int.BitAnd$LT$Int$GT$6bitand20ha192f9f4535b4778ohfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int36Int.BitAnd$LT$$RF$$u27$a$u20$Int$GT$6bitand20ha91cc2ba64d2a15cG9eE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%6 = load i8* %5, align 1
%7 = icmp eq i8 %6, -44
br i1 %7, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
cond.i: ; preds = %normal-return
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%9 = load i32* %8, align 4, !alias.scope !2427
%10 = icmp eq i32 %9, 0
br i1 %10, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%11 = bitcast %"int::Int"* %2 to i8**
%12 = load i8** %11, align 8, !alias.scope !2430
%13 = zext i32 %9 to i64
%14 = shl nuw nsw i64 %13, 3
tail call void @je_sdallocx(i8* %12, i64 %14, i32 0)
store i32 0, i32* %8, align 4, !alias.scope !2427
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %15, align 4, !alias.scope !2427
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5: ; preds = %then-block-15297-.i.i, %cond.i, %normal-return
%16 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %16)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
unwind_custom_: ; preds = %entry-block
%17 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%18 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%19 = load i8* %18, align 1
%20 = icmp eq i8 %19, -44
br i1 %20, label %cond.i6, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
cond.i6: ; preds = %unwind_custom_
%21 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%22 = load i32* %21, align 4, !alias.scope !2433
%23 = icmp eq i32 %22, 0
br i1 %23, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11, label %then-block-15297-.i.i7
then-block-15297-.i.i7: ; preds = %cond.i6
%24 = bitcast %"int::Int"* %2 to i8**
%25 = load i8** %24, align 8, !alias.scope !2436
%26 = zext i32 %22 to i64
%27 = shl nuw nsw i64 %26, 3
tail call void @je_sdallocx(i8* %25, i64 %27, i32 0)
store i32 0, i32* %21, align 4, !alias.scope !2433
%28 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %28, align 4, !alias.scope !2433
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %then-block-15297-.i.i7, %cond.i6, %unwind_custom_
%29 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %29)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %17
}
; Function Attrs: uwtable
define void @"_ZN3int35Int.BitOr$LT$$RF$$u27$a$u20$Int$GT$5bitor20h3c993c079f31835cJhfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2439, !noalias !2444
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-19709-, label %next-block
unwind_custom_: ; preds = %else-block.i354, %then-block-14817-.i353, %else-block.i, %then-block-14817-.i, %then-block-19718-
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%7 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%8 = load i8* %7, align 1
%9 = icmp eq i8 %8, -44
br i1 %9, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%10 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%11 = load i32* %10, align 4, !alias.scope !2446
%12 = icmp eq i32 %11, 0
br i1 %12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%13 = bitcast %"int::Int"* %1 to i8**
%14 = load i8** %13, align 8, !alias.scope !2449
%15 = zext i32 %11 to i64
%16 = shl nuw nsw i64 %15, 3
tail call void @je_sdallocx(i8* %14, i64 %16, i32 0)
store i32 0, i32* %10, align 4, !alias.scope !2446
store i32 0, i32* %21, align 4, !alias.scope !2446
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%17 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %17)
resume { i8*, i32 } %6
then-block-19709-: ; preds = %entry-block
%18 = bitcast %"int::Int"* %1 to i8*
%19 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %19, i8* %18, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %18, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294: ; preds = %then-block-19709-, %normal-return3, %normal-return7, %normal-return87, %normal-return59, %normal-return26
%20 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %20)
ret void
next-block: ; preds = %entry-block
%21 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%22 = load i32* %21, align 4, !alias.scope !2452, !noalias !2457
%23 = icmp eq i32 %22, 0
br i1 %23, label %then-block-19718-, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i298
then-block-19718-: ; preds = %next-block
invoke void @_ZN3int9Int.Clone10clone_from20h1f32a2d7daf5414eU6dE(%"int::Int"* noalias dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return3 unwind label %unwind_custom_
normal-return3: ; preds = %then-block-19718-
%24 = bitcast %"int::Int"* %1 to i8*
%25 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %25, i8* %24, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %24, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i298: ; preds = %next-block
%26 = ashr i32 %4, 31
%27 = or i32 %26, 1
%28 = icmp sgt i32 %27, 0
br i1 %28, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361, label %next-block7.i
next-block7.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i298
%29 = icmp slt i32 %27, 0
br i1 %29, label %then-block-22530-.i, label %next-block9.i
then-block-22530-.i: ; preds = %next-block7.i
%30 = icmp slt i32 %4, 0
%31 = sub i32 0, %4
%sret_slot.0.i.i.i300 = select i1 %30, i32 %31, i32 %4
%32 = icmp sgt i32 %sret_slot.0.i.i.i300, 1
br i1 %32, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361, label %normal-return5
next-block9.i: ; preds = %next-block7.i
%33 = icmp eq i32 %4, 1
br i1 %33, label %normal-return5, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361
normal-return5: ; preds = %next-block9.i, %then-block-22530-.i
%.pn422.in = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%.pn422 = load %"ll::limb::Limb"** %.pn422.in, align 8
%.sink408.in = getelementptr inbounds %"ll::limb::Limb"* %.pn422, i64 0, i32 0
%.sink408 = load i64* %.sink408.in, align 8
%34 = icmp eq i64 %.sink408, 1
br i1 %34, label %normal-return5.normal-return7_crit_edge, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361
normal-return5.normal-return7_crit_edge: ; preds = %normal-return5
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%.pre = load %"ll::limb::Limb"** %.phi.trans.insert, align 8, !alias.scope !2459
br label %normal-return7
join: ; preds = %next-block9.i369, %then-block-22530-.i367
%.pn.in = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%.pn = load %"ll::limb::Limb"** %.pn.in, align 8
%.sink407.in = getelementptr inbounds %"ll::limb::Limb"* %.pn, i64 0, i32 0
%.sink407 = load i64* %.sink407.in, align 8
%35 = icmp eq i64 %.sink407, 1
br i1 %35, label %normal-return7, label %normal-return12
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361: ; preds = %normal-return5, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i298, %then-block-22530-.i, %next-block9.i
%36 = ashr i32 %22, 31
%37 = or i32 %36, 1
%38 = icmp sgt i32 %37, 0
br i1 %38, label %normal-return12, label %next-block7.i365
next-block7.i365: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361
%39 = icmp slt i32 %37, 0
br i1 %39, label %then-block-22530-.i367, label %next-block9.i369
then-block-22530-.i367: ; preds = %next-block7.i365
%40 = icmp slt i32 %22, 0
%41 = sub i32 0, %22
%sret_slot.0.i.i.i366 = select i1 %40, i32 %41, i32 %22
%42 = icmp sgt i32 %sret_slot.0.i.i.i366, 1
br i1 %42, label %normal-return12, label %join
next-block9.i369: ; preds = %next-block7.i365
%43 = icmp eq i32 %22, 1
br i1 %43, label %join, label %normal-return12
normal-return7: ; preds = %normal-return5.normal-return7_crit_edge, %join
%44 = phi %"ll::limb::Limb"* [ %.pre, %normal-return5.normal-return7_crit_edge ], [ %.pn, %join ]
store i32 -1, i32* %21, align 4
%45 = getelementptr inbounds %"ll::limb::Limb"* %44, i64 0, i32 0
store i64 1, i64* %45, align 8
%46 = bitcast %"int::Int"* %1 to i8*
%47 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %47, i8* %46, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %46, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
normal-return12: ; preds = %next-block9.i369, %then-block-22530-.i367, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361, %join
%sret_slot.0.i380 = phi i32 [ %37, %join ], [ %37, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i361 ], [ %37, %then-block-22530-.i367 ], [ 0, %next-block9.i369 ]
%48 = ashr i32 %4, 31
%49 = or i32 %48, 1
%50 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%51 = load %"ll::limb::Limb"** %50, align 8, !alias.scope !2462
%52 = bitcast %"ll::limb::Limb"* %51 to i8*
%53 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%54 = load %"ll::limb::Limb"** %53, align 8, !alias.scope !2465
%55 = icmp sgt i32 %sret_slot.0.i380, 0
%56 = icmp sgt i32 %49, 0
%. = and i1 %55, %56
br i1 %., label %normal-return17, label %next-block27
normal-return17: ; preds = %normal-return12
%57 = icmp slt i32 %22, 0
%58 = sub i32 0, %22
%sret_slot.0.i.i376 = select i1 %57, i32 %58, i32 %22
%59 = icmp slt i32 %4, 0
%60 = sub i32 0, %4
%sret_slot.0.i.i375 = select i1 %59, i32 %60, i32 %4
%61 = icmp sge i32 %sret_slot.0.i.i375, %sret_slot.0.i.i376
%sret_slot.0.sroa.speculated.i374 = select i1 %61, i32 %sret_slot.0.i.i375, i32 %sret_slot.0.i.i376
%62 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%63 = load i32* %62, align 4, !alias.scope !2468
%64 = icmp ult i32 %63, %sret_slot.0.sroa.speculated.i374
br i1 %64, label %then-block-14806-.i352, label %normal-return19
then-block-14806-.i352: ; preds = %normal-return17
%65 = icmp eq i32 %63, 0
br i1 %65, label %else-block.i354, label %then-block-14817-.i353
then-block-14817-.i353: ; preds = %then-block-14806-.i352
%66 = zext i32 %63 to i64
%67 = shl nuw nsw i64 %66, 3
%68 = zext i32 %sret_slot.0.sroa.speculated.i374 to i64
%69 = shl nuw nsw i64 %68, 3
%70 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %52, i64 %67, i64 %69)
to label %while_exit.i357 unwind label %unwind_custom_
else-block.i354: ; preds = %then-block-14806-.i352
%71 = zext i32 %sret_slot.0.sroa.speculated.i374 to i64
%72 = shl nuw nsw i64 %71, 3
%73 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %72)
to label %while_exit.i357 unwind label %unwind_custom_
while_exit.i357: ; preds = %else-block.i354, %then-block-14817-.i353
%.pre-phi436 = phi i64 [ %67, %then-block-14817-.i353 ], [ 0, %else-block.i354 ]
%.sink.i355 = phi i8* [ %70, %then-block-14817-.i353 ], [ %73, %else-block.i354 ]
%scevgep.i356 = getelementptr i8* %.sink.i355, i64 %.pre-phi436
%74 = xor i32 %63, -1
%75 = add i32 %sret_slot.0.sroa.speculated.i374, %74
%76 = zext i32 %75 to i64
%77 = shl nuw nsw i64 %76, 3
%78 = add nuw nsw i64 %77, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i356, i8 0, i64 %78, i32 8, i1 false), !noalias !2468
%79 = ptrtoint i8* %.sink.i355 to i64
%80 = bitcast %"int::Int"* %1 to i64*
store i64 %79, i64* %80, align 8, !alias.scope !2468
store i32 %sret_slot.0.sroa.speculated.i374, i32* %62, align 4, !alias.scope !2468
%.pre432 = load i32* %21, align 4, !alias.scope !2471
br label %normal-return19
normal-return19: ; preds = %normal-return17, %while_exit.i357
%81 = phi i32 [ %22, %normal-return17 ], [ %.pre432, %while_exit.i357 ]
%82 = icmp slt i32 %81, 0
%83 = sub i32 0, %81
%sret_slot.0.i.i351 = select i1 %82, i32 %83, i32 %81
%84 = icmp sgt i32 %sret_slot.0.sroa.speculated.i374, %sret_slot.0.i.i351
br i1 %84, label %normal-return20, label %normal-return25
normal-return20: ; preds = %normal-return19
%85 = sext i32 %sret_slot.0.i.i351 to i64
%86 = sub i32 %sret_slot.0.sroa.speculated.i374, %sret_slot.0.i.i351
%87 = icmp sgt i32 %86, 0
br i1 %87, label %while_body.lr.ph.i.i, label %normal-return25
while_body.lr.ph.i.i: ; preds = %normal-return20
%88 = add i32 %sret_slot.0.sroa.speculated.i374, -1
%89 = sub i32 %88, %sret_slot.0.i.i351
%90 = icmp sgt i32 %sret_slot.0.i.i376, %sret_slot.0.i.i375
%smax = select i1 %90, i32 %sret_slot.0.i.i376, i32 %sret_slot.0.i.i375
%91 = add i32 %smax, -1
%92 = sub i32 %91, %sret_slot.0.i.i351
%93 = zext i32 %92 to i64
%94 = add nuw nsw i64 %93, 1
%end.idx468 = add nuw nsw i64 %93, 1
%n.vec470 = and i64 %94, 8589934588
%cmp.zero472 = icmp eq i64 %n.vec470, 0
%95 = sext i32 %sret_slot.0.i.i351 to i64
%96 = icmp sgt i32 %sret_slot.0.i.i376, %sret_slot.0.i.i375
%smax476 = select i1 %96, i32 %sret_slot.0.i.i376, i32 %sret_slot.0.i.i375
%97 = add i32 %smax476, -1
%98 = sub i32 %97, %sret_slot.0.i.i351
%99 = zext i32 %98 to i64
%100 = add nsw i64 %95, %99
br i1 %cmp.zero472, label %middle.block465, label %vector.memcheck487
vector.memcheck487: ; preds = %while_body.lr.ph.i.i
%scevgep474 = getelementptr %"ll::limb::Limb"* %51, i64 %95
%scevgep481 = getelementptr %"ll::limb::Limb"* %54, i64 %100
%bound0483 = icmp ule %"ll::limb::Limb"* %scevgep474, %scevgep481
%scevgep479 = getelementptr %"ll::limb::Limb"* %54, i64 %95
%scevgep477 = getelementptr %"ll::limb::Limb"* %51, i64 %100
%bound1484 = icmp ule %"ll::limb::Limb"* %scevgep479, %scevgep477
%memcheck.conflict486 = and i1 %bound0483, %bound1484
br i1 %memcheck.conflict486, label %middle.block465, label %vector.body464.preheader
vector.body464.preheader: ; preds = %vector.memcheck487
br label %vector.body464
vector.body464: ; preds = %vector.body464.preheader, %vector.body464
%index467 = phi i64 [ %index.next493, %vector.body464 ], [ 0, %vector.body464.preheader ]
%101 = add i64 %index467, %85
%102 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %101, i32 0
%103 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %101, i32 0
%104 = bitcast i64* %102 to <2 x i64>*
%wide.load500 = load <2 x i64>* %104, align 8
%105 = getelementptr i64* %102, i64 2
%106 = bitcast i64* %105 to <2 x i64>*
%wide.load501 = load <2 x i64>* %106, align 8
%107 = bitcast i64* %103 to <2 x i64>*
store <2 x i64> %wide.load500, <2 x i64>* %107, align 8
%108 = getelementptr i64* %103, i64 2
%109 = bitcast i64* %108 to <2 x i64>*
store <2 x i64> %wide.load501, <2 x i64>* %109, align 8
%index.next493 = add i64 %index467, 4
%110 = icmp eq i64 %index.next493, %n.vec470
br i1 %110, label %middle.block465.loopexit, label %vector.body464, !llvm.loop !2474
middle.block465.loopexit: ; preds = %vector.body464
br label %middle.block465
middle.block465: ; preds = %middle.block465.loopexit, %vector.memcheck487, %while_body.lr.ph.i.i
%resume.val488 = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck487 ], [ %n.vec470, %middle.block465.loopexit ]
%cmp.n492 = icmp eq i64 %end.idx468, %resume.val488
br i1 %cmp.n492, label %normal-return25.loopexit, label %while_body.i.i349.preheader
while_body.i.i349.preheader: ; preds = %middle.block465
%111 = icmp sgt i32 %sret_slot.0.i.i376, %sret_slot.0.i.i375
%smax517 = select i1 %111, i32 %sret_slot.0.i.i376, i32 %sret_slot.0.i.i375
%112 = sub i32 %smax517, %sret_slot.0.i.i351
%113 = trunc i64 %resume.val488 to i32
%114 = sub i32 %112, %113
%115 = add i32 %smax517, -1
%116 = sub i32 %115, %sret_slot.0.i.i351
%117 = sub i32 %116, %113
%xtraiter518 = and i32 %114, 3
%lcmp.mod519 = icmp ne i32 %xtraiter518, 0
br i1 %lcmp.mod519, label %while_body.i.i349.prol, label %while_body.i.i349.preheader.split
while_body.i.i349.prol: ; preds = %while_body.i.i349.prol, %while_body.i.i349.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i349.prol ], [ %resume.val488, %while_body.i.i349.preheader ]
%prol.iter520 = phi i32 [ %xtraiter518, %while_body.i.i349.preheader ], [ %prol.iter520.sub, %while_body.i.i349.prol ]
%.sum.i.prol = add i64 %indvars.iv.i.i.prol, %85
%118 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.prol, i32 0
%119 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum.i.prol, i32 0
%120 = load i64* %118, align 8
store i64 %120, i64* %119, align 8
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.i347.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.i348.prol = icmp eq i32 %lftr.wideiv.i347.prol, %89
%prol.iter520.sub = sub i32 %prol.iter520, 1
%prol.iter520.cmp = icmp ne i32 %prol.iter520.sub, 0
br i1 %prol.iter520.cmp, label %while_body.i.i349.prol, label %while_body.i.i349.preheader.split, !llvm.loop !2475
while_body.i.i349.preheader.split: ; preds = %while_body.i.i349.prol, %while_body.i.i349.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val488, %while_body.i.i349.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i349.prol ]
%121 = icmp ult i32 %117, 3
br i1 %121, label %normal-return25.loopexit.loopexit, label %while_body.i.i349.preheader.split.split
while_body.i.i349.preheader.split.split: ; preds = %while_body.i.i349.preheader.split
br label %while_body.i.i349
while_body.i.i349: ; preds = %while_body.i.i349, %while_body.i.i349.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i349.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i349 ]
%.sum.i = add i64 %indvars.iv.i.i, %85
%122 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i, i32 0
%123 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum.i, i32 0
%124 = load i64* %122, align 8
store i64 %124, i64* %123, align 8
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv.i347 = trunc i64 %indvars.iv.i.i to i32
%.sum.i.1 = add i64 %indvars.iv.next.i.i, %85
%125 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.1, i32 0
%126 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum.i.1, i32 0
%127 = load i64* %125, align 8
store i64 %127, i64* %126, align 8
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.i347.1 = trunc i64 %indvars.iv.next.i.i to i32
%.sum.i.2 = add i64 %indvars.iv.next.i.i.1, %85
%128 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.2, i32 0
%129 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum.i.2, i32 0
%130 = load i64* %128, align 8
store i64 %130, i64* %129, align 8
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.i347.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%.sum.i.3 = add i64 %indvars.iv.next.i.i.2, %85
%131 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %.sum.i.3, i32 0
%132 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum.i.3, i32 0
%133 = load i64* %131, align 8
store i64 %133, i64* %132, align 8
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.i347.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.i348.3 = icmp eq i32 %lftr.wideiv.i347.3, %89
br i1 %exitcond.i348.3, label %normal-return25.loopexit.loopexit.unr-lcssa, label %while_body.i.i349, !llvm.loop !2476
normal-return25.loopexit.loopexit.unr-lcssa: ; preds = %while_body.i.i349
br label %normal-return25.loopexit.loopexit
normal-return25.loopexit.loopexit: ; preds = %while_body.i.i349.preheader.split, %normal-return25.loopexit.loopexit.unr-lcssa
br label %normal-return25.loopexit
normal-return25.loopexit: ; preds = %normal-return25.loopexit.loopexit, %middle.block465
%.pre433 = load i32* %21, align 4, !alias.scope !2477
br label %normal-return25
normal-return25: ; preds = %normal-return25.loopexit, %normal-return19, %normal-return20
%134 = phi i32 [ %.pre433, %normal-return25.loopexit ], [ %81, %normal-return19 ], [ %81, %normal-return20 ]
%135 = icmp slt i32 %134, 0
%136 = sub i32 0, %134
%sret_slot.0.i.i346 = select i1 %135, i32 %136, i32 %134
%137 = icmp sle i32 %sret_slot.0.i.i346, %sret_slot.0.i.i375
%sret_slot.0.sroa.speculated.i344 = select i1 %137, i32 %sret_slot.0.i.i346, i32 %sret_slot.0.i.i375
%138 = icmp sgt i32 %sret_slot.0.sroa.speculated.i344, 0
br i1 %138, label %while_body.i.i343.preheader, label %normal-return26
while_body.i.i343.preheader: ; preds = %normal-return25
%139 = sub i32 -1, %sret_slot.0.i.i346
%140 = sub i32 -1, %sret_slot.0.i.i375
%141 = icmp sgt i32 %139, %140
%smax516 = select i1 %141, i32 %139, i32 %140
%142 = sub i32 -1, %smax516
%143 = sub i32 -2, %smax516
%xtraiter = and i32 %142, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i343.prol, label %while_body.i.i343.preheader.split
while_body.i.i343.prol: ; preds = %while_body.i.i343.prol, %while_body.i.i343.preheader
%wp.04.i.i338.prol = phi %"ll::limb::Limb"* [ %149, %while_body.i.i343.prol ], [ %51, %while_body.i.i343.preheader ]
%yp.02.i.i340.prol = phi %"ll::limb::Limb"* [ %150, %while_body.i.i343.prol ], [ %54, %while_body.i.i343.preheader ]
%i.01.i.i341.prol = phi i32 [ %151, %while_body.i.i343.prol ], [ 0, %while_body.i.i343.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i343.preheader ], [ %prol.iter.sub, %while_body.i.i343.prol ]
%144 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i338.prol, i64 0, i32 0
%145 = load i64* %144, align 8
%146 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i340.prol, i64 0, i32 0
%147 = load i64* %146, align 8
%148 = or i64 %147, %145
store i64 %148, i64* %144, align 8
%149 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i338.prol, i64 1
%150 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i340.prol, i64 1
%151 = add nuw nsw i32 %i.01.i.i341.prol, 1
%exitcond.i.i342.prol = icmp eq i32 %151, %sret_slot.0.sroa.speculated.i344
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i343.prol, label %while_body.i.i343.preheader.split, !llvm.loop !2480
while_body.i.i343.preheader.split: ; preds = %while_body.i.i343.prol, %while_body.i.i343.preheader
%wp.04.i.i338.unr = phi %"ll::limb::Limb"* [ %51, %while_body.i.i343.preheader ], [ %149, %while_body.i.i343.prol ]
%yp.02.i.i340.unr = phi %"ll::limb::Limb"* [ %54, %while_body.i.i343.preheader ], [ %150, %while_body.i.i343.prol ]
%i.01.i.i341.unr = phi i32 [ 0, %while_body.i.i343.preheader ], [ %151, %while_body.i.i343.prol ]
%152 = icmp ult i32 %143, 3
br i1 %152, label %normal-return26.loopexit, label %while_body.i.i343.preheader.split.split
while_body.i.i343.preheader.split.split: ; preds = %while_body.i.i343.preheader.split
br label %while_body.i.i343
while_body.i.i343: ; preds = %while_body.i.i343, %while_body.i.i343.preheader.split.split
%wp.04.i.i338 = phi %"ll::limb::Limb"* [ %wp.04.i.i338.unr, %while_body.i.i343.preheader.split.split ], [ %182, %while_body.i.i343 ]
%yp.02.i.i340 = phi %"ll::limb::Limb"* [ %yp.02.i.i340.unr, %while_body.i.i343.preheader.split.split ], [ %183, %while_body.i.i343 ]
%i.01.i.i341 = phi i32 [ %i.01.i.i341.unr, %while_body.i.i343.preheader.split.split ], [ %184, %while_body.i.i343 ]
%153 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i338, i64 0, i32 0
%154 = load i64* %153, align 8
%155 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i340, i64 0, i32 0
%156 = load i64* %155, align 8
%157 = or i64 %156, %154
store i64 %157, i64* %153, align 8
%158 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i338, i64 1
%159 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i340, i64 1
%160 = add nuw nsw i32 %i.01.i.i341, 1
%161 = getelementptr inbounds %"ll::limb::Limb"* %158, i64 0, i32 0
%162 = load i64* %161, align 8
%163 = getelementptr inbounds %"ll::limb::Limb"* %159, i64 0, i32 0
%164 = load i64* %163, align 8
%165 = or i64 %164, %162
store i64 %165, i64* %161, align 8
%166 = getelementptr inbounds %"ll::limb::Limb"* %158, i64 1
%167 = getelementptr inbounds %"ll::limb::Limb"* %159, i64 1
%168 = add nuw nsw i32 %160, 1
%169 = getelementptr inbounds %"ll::limb::Limb"* %166, i64 0, i32 0
%170 = load i64* %169, align 8
%171 = getelementptr inbounds %"ll::limb::Limb"* %167, i64 0, i32 0
%172 = load i64* %171, align 8
%173 = or i64 %172, %170
store i64 %173, i64* %169, align 8
%174 = getelementptr inbounds %"ll::limb::Limb"* %166, i64 1
%175 = getelementptr inbounds %"ll::limb::Limb"* %167, i64 1
%176 = add nuw nsw i32 %168, 1
%177 = getelementptr inbounds %"ll::limb::Limb"* %174, i64 0, i32 0
%178 = load i64* %177, align 8
%179 = getelementptr inbounds %"ll::limb::Limb"* %175, i64 0, i32 0
%180 = load i64* %179, align 8
%181 = or i64 %180, %178
store i64 %181, i64* %177, align 8
%182 = getelementptr inbounds %"ll::limb::Limb"* %174, i64 1
%183 = getelementptr inbounds %"ll::limb::Limb"* %175, i64 1
%184 = add nuw nsw i32 %176, 1
%exitcond.i.i342.3 = icmp eq i32 %184, %sret_slot.0.sroa.speculated.i344
br i1 %exitcond.i.i342.3, label %normal-return26.loopexit.unr-lcssa, label %while_body.i.i343
normal-return26.loopexit.unr-lcssa: ; preds = %while_body.i.i343
br label %normal-return26.loopexit
normal-return26.loopexit: ; preds = %while_body.i.i343.preheader.split, %normal-return26.loopexit.unr-lcssa
br label %normal-return26
normal-return26: ; preds = %normal-return26.loopexit, %normal-return25
store i32 %sret_slot.0.sroa.speculated.i374, i32* %21, align 4
%185 = bitcast %"int::Int"* %1 to i8*
%186 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %186, i8* %185, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %185, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
next-block27: ; preds = %normal-return12
%187 = icmp eq i32 %sret_slot.0.i380, %49
br i1 %187, label %normal-return31, label %normal-return64
normal-return31: ; preds = %next-block27
%188 = icmp slt i32 %22, 0
%189 = sub i32 0, %22
%sret_slot.0.i.i337 = select i1 %188, i32 %189, i32 %22
%190 = icmp slt i32 %4, 0
%191 = sub i32 0, %4
%sret_slot.0.i.i336 = select i1 %190, i32 %191, i32 %4
%192 = icmp sle i32 %sret_slot.0.i.i337, %sret_slot.0.i.i336
%sret_slot.0.sroa.speculated.i335 = select i1 %192, i32 %sret_slot.0.i.i337, i32 %sret_slot.0.i.i336
br label %while_cond.i.i331
while_exit.i.i327: ; preds = %while_cond.i.i331
%xp.0.i.i330.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i330, %while_cond.i.i331 ]
%cnt.0.i.i328.lcssa = phi i32 [ %cnt.0.i.i328, %while_cond.i.i331 ]
%193 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i330.lcssa, i64 1, i32 0
%194 = load i64* %193, align 8, !noalias !2481
%195 = tail call i64 @llvm.cttz.i64(i64 %194, i1 false) #20
%196 = trunc i64 %195 to i32
%197 = add i32 %196, %cnt.0.i.i328.lcssa
br label %normal-return32
while_cond.i.i331: ; preds = %while_body.i.i332, %normal-return31
%cnt.0.i.i328 = phi i32 [ 0, %normal-return31 ], [ %201, %while_body.i.i332 ]
%xs.0.i.i329 = phi i32 [ %sret_slot.0.sroa.speculated.i335, %normal-return31 ], [ %203, %while_body.i.i332 ]
%xp.0.i.i330 = phi %"ll::limb::Limb"* [ %51, %normal-return31 ], [ %202, %while_body.i.i332 ]
%198 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i330, i64 0, i32 0
%199 = load i64* %198, align 8, !alias.scope !2484, !noalias !2487
%200 = icmp eq i64 %199, 0
br i1 %200, label %while_body.i.i332, label %while_exit.i.i327
while_body.i.i332: ; preds = %while_cond.i.i331
%201 = add i32 %cnt.0.i.i328, 64
%202 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i330, i64 1
%203 = add i32 %xs.0.i.i329, -1
%204 = icmp eq i32 %203, 0
br i1 %204, label %normal-return32.loopexit, label %while_cond.i.i331
normal-return32.loopexit: ; preds = %while_body.i.i332
%.lcssa512 = phi i32 [ %201, %while_body.i.i332 ]
br label %normal-return32
normal-return32: ; preds = %normal-return32.loopexit, %while_exit.i.i327
%sret_slot.0.i.i333 = phi i32 [ %197, %while_exit.i.i327 ], [ %.lcssa512, %normal-return32.loopexit ]
%205 = lshr i32 %sret_slot.0.i.i333, 6
br label %while_cond.i.i323
while_exit.i.i319: ; preds = %while_cond.i.i323
%xp.0.i.i322.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i322, %while_cond.i.i323 ]
%cnt.0.i.i320.lcssa = phi i32 [ %cnt.0.i.i320, %while_cond.i.i323 ]
%206 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i322.lcssa, i64 1, i32 0
%207 = load i64* %206, align 8, !noalias !2489
%208 = tail call i64 @llvm.cttz.i64(i64 %207, i1 false) #20
%209 = trunc i64 %208 to i32
%210 = add i32 %209, %cnt.0.i.i320.lcssa
br label %normal-return35
while_cond.i.i323: ; preds = %while_body.i.i324, %normal-return32
%cnt.0.i.i320 = phi i32 [ 0, %normal-return32 ], [ %214, %while_body.i.i324 ]
%xs.0.i.i321 = phi i32 [ %sret_slot.0.sroa.speculated.i335, %normal-return32 ], [ %216, %while_body.i.i324 ]
%xp.0.i.i322 = phi %"ll::limb::Limb"* [ %54, %normal-return32 ], [ %215, %while_body.i.i324 ]
%211 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i322, i64 0, i32 0
%212 = load i64* %211, align 8, !alias.scope !2492, !noalias !2495
%213 = icmp eq i64 %212, 0
br i1 %213, label %while_body.i.i324, label %while_exit.i.i319
while_body.i.i324: ; preds = %while_cond.i.i323
%214 = add i32 %cnt.0.i.i320, 64
%215 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i322, i64 1
%216 = add i32 %xs.0.i.i321, -1
%217 = icmp eq i32 %216, 0
br i1 %217, label %normal-return35.loopexit, label %while_cond.i.i323
normal-return35.loopexit: ; preds = %while_body.i.i324
%.lcssa = phi i32 [ %214, %while_body.i.i324 ]
br label %normal-return35
normal-return35: ; preds = %normal-return35.loopexit, %while_exit.i.i319
%sret_slot.0.i.i325 = phi i32 [ %210, %while_exit.i.i319 ], [ %.lcssa, %normal-return35.loopexit ]
%218 = lshr i32 %sret_slot.0.i.i325, 6
%219 = icmp ugt i32 %205, %218
br i1 %219, label %normal-return44, label %normal-return53
normal-return44: ; preds = %normal-return35
%220 = zext i32 %218 to i64
%sret_slot.sroa.0.0..sroa_idx.i317 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %220, i32 0
%sret_slot.sroa.0.0.copyload.i318 = load i64* %sret_slot.sroa.0.0..sroa_idx.i317, align 8, !noalias !2497
%221 = sub i64 0, %sret_slot.sroa.0.0.copyload.i318
%222 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %220, i32 0
store i64 %221, i64* %222, align 8
%223 = sub nsw i32 %205, %218
%224 = icmp sgt i32 %223, 1
br i1 %224, label %normal-return46.lr.ph, label %normal-return53
normal-return46.lr.ph: ; preds = %normal-return44
%n.0418 = add nsw i32 %223, -1
%225 = add nuw nsw i32 %218, 1
%226 = zext i32 %225 to i64
%227 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %226
%.sum = add nuw nsw i64 %220, 1
%228 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %.sum
%229 = lshr i32 %sret_slot.0.i.i325, 6
%230 = add i32 %229, 1
%231 = lshr i32 %sret_slot.0.i.i333, 6
%232 = sub i32 %230, %231
%233 = icmp sgt i32 %232, -1
%smax525 = select i1 %233, i32 %232, i32 -1
%234 = add i32 %smax525, %231
%235 = sub i32 %234, %229
%236 = add i32 %234, -1
%237 = sub i32 %236, %229
%xtraiter526 = and i32 %235, 3
%lcmp.mod527 = icmp ne i32 %xtraiter526, 0
br i1 %lcmp.mod527, label %normal-return46.prol, label %normal-return46.lr.ph.split
normal-return46.prol: ; preds = %normal-return46.prol, %normal-return46.lr.ph
%n.0421.prol = phi i32 [ %n.0418, %normal-return46.lr.ph ], [ %n.0.prol, %normal-return46.prol ]
%p.0420.prol = phi %"ll::limb::Limb"* [ %228, %normal-return46.lr.ph ], [ %242, %normal-return46.prol ]
%o.0419.prol = phi %"ll::limb::Limb"* [ %227, %normal-return46.lr.ph ], [ %243, %normal-return46.prol ]
%prol.iter528 = phi i32 [ %xtraiter526, %normal-return46.lr.ph ], [ %prol.iter528.sub, %normal-return46.prol ]
%238 = getelementptr inbounds %"ll::limb::Limb"* %o.0419.prol, i64 0, i32 0
%239 = load i64* %238, align 8
%240 = xor i64 %239, -1
%241 = getelementptr inbounds %"ll::limb::Limb"* %p.0420.prol, i64 0, i32 0
store i64 %240, i64* %241, align 8
%242 = getelementptr inbounds %"ll::limb::Limb"* %p.0420.prol, i64 1
%243 = getelementptr inbounds %"ll::limb::Limb"* %o.0419.prol, i64 1
%n.0.prol = add i32 %n.0421.prol, -1
%244 = icmp sgt i32 %n.0.prol, 0
%prol.iter528.sub = sub i32 %prol.iter528, 1
%prol.iter528.cmp = icmp ne i32 %prol.iter528.sub, 0
br i1 %prol.iter528.cmp, label %normal-return46.prol, label %normal-return46.lr.ph.split, !llvm.loop !2500
normal-return46.lr.ph.split: ; preds = %normal-return46.prol, %normal-return46.lr.ph
%n.0421.unr = phi i32 [ %n.0418, %normal-return46.lr.ph ], [ %n.0.prol, %normal-return46.prol ]
%p.0420.unr = phi %"ll::limb::Limb"* [ %228, %normal-return46.lr.ph ], [ %242, %normal-return46.prol ]
%o.0419.unr = phi %"ll::limb::Limb"* [ %227, %normal-return46.lr.ph ], [ %243, %normal-return46.prol ]
%245 = icmp ult i32 %237, 3
br i1 %245, label %normal-return53.loopexit, label %normal-return46.lr.ph.split.split
normal-return46.lr.ph.split.split: ; preds = %normal-return46.lr.ph.split
br label %normal-return46
normal-return46: ; preds = %normal-return46, %normal-return46.lr.ph.split.split
%n.0421 = phi i32 [ %n.0421.unr, %normal-return46.lr.ph.split.split ], [ %n.0.3, %normal-return46 ]
%p.0420 = phi %"ll::limb::Limb"* [ %p.0420.unr, %normal-return46.lr.ph.split.split ], [ %268, %normal-return46 ]
%o.0419 = phi %"ll::limb::Limb"* [ %o.0419.unr, %normal-return46.lr.ph.split.split ], [ %269, %normal-return46 ]
%246 = getelementptr inbounds %"ll::limb::Limb"* %o.0419, i64 0, i32 0
%247 = load i64* %246, align 8
%248 = xor i64 %247, -1
%249 = getelementptr inbounds %"ll::limb::Limb"* %p.0420, i64 0, i32 0
store i64 %248, i64* %249, align 8
%250 = getelementptr inbounds %"ll::limb::Limb"* %p.0420, i64 1
%251 = getelementptr inbounds %"ll::limb::Limb"* %o.0419, i64 1
%n.0 = add i32 %n.0421, -1
%252 = getelementptr inbounds %"ll::limb::Limb"* %251, i64 0, i32 0
%253 = load i64* %252, align 8
%254 = xor i64 %253, -1
%255 = getelementptr inbounds %"ll::limb::Limb"* %250, i64 0, i32 0
store i64 %254, i64* %255, align 8
%256 = getelementptr inbounds %"ll::limb::Limb"* %250, i64 1
%257 = getelementptr inbounds %"ll::limb::Limb"* %251, i64 1
%n.0.1 = add i32 %n.0, -1
%258 = getelementptr inbounds %"ll::limb::Limb"* %257, i64 0, i32 0
%259 = load i64* %258, align 8
%260 = xor i64 %259, -1
%261 = getelementptr inbounds %"ll::limb::Limb"* %256, i64 0, i32 0
store i64 %260, i64* %261, align 8
%262 = getelementptr inbounds %"ll::limb::Limb"* %256, i64 1
%263 = getelementptr inbounds %"ll::limb::Limb"* %257, i64 1
%n.0.2 = add i32 %n.0.1, -1
%264 = getelementptr inbounds %"ll::limb::Limb"* %263, i64 0, i32 0
%265 = load i64* %264, align 8
%266 = xor i64 %265, -1
%267 = getelementptr inbounds %"ll::limb::Limb"* %262, i64 0, i32 0
store i64 %266, i64* %267, align 8
%268 = getelementptr inbounds %"ll::limb::Limb"* %262, i64 1
%269 = getelementptr inbounds %"ll::limb::Limb"* %263, i64 1
%n.0.3 = add i32 %n.0.2, -1
%270 = icmp sgt i32 %n.0.3, 0
br i1 %270, label %normal-return46, label %normal-return53.loopexit.unr-lcssa
normal-return53.loopexit.unr-lcssa: ; preds = %normal-return46
br label %normal-return53.loopexit
normal-return53.loopexit: ; preds = %normal-return46.lr.ph.split, %normal-return53.loopexit.unr-lcssa
br label %normal-return53
normal-return53: ; preds = %normal-return53.loopexit, %normal-return44, %normal-return35
%271 = icmp ule i32 %205, %218
%sret_slot.0.sroa.speculated.i316 = select i1 %271, i32 %218, i32 %205
%272 = add nuw nsw i32 %sret_slot.0.sroa.speculated.i316, 1
%273 = icmp sgt i32 %sret_slot.0.sroa.speculated.i335, %272
br i1 %273, label %normal-return56, label %next-block58
normal-return56: ; preds = %normal-return53
%274 = sub i32 %sret_slot.0.sroa.speculated.i335, %272
%275 = zext i32 %272 to i64
%276 = icmp sgt i32 %274, 0
br i1 %276, label %while_body.i.i315.preheader, label %next-block58
while_body.i.i315.preheader: ; preds = %normal-return56
%277 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %275
%278 = getelementptr inbounds %"ll::limb::Limb"* %54, i64 %275
%279 = sub i32 -1, %sret_slot.0.i.i337
%280 = sub i32 -1, %sret_slot.0.i.i336
%281 = icmp sgt i32 %279, %280
%smax521 = select i1 %281, i32 %279, i32 %280
%282 = sub i32 -2, %smax521
%283 = lshr i32 %sret_slot.0.i.i333, 6
%284 = lshr i32 %sret_slot.0.i.i325, 6
%285 = icmp ugt i32 %283, %284
%umax = select i1 %285, i32 %283, i32 %284
%286 = sub i32 %282, %umax
%287 = sub i32 -3, %smax521
%288 = sub i32 %287, %umax
%xtraiter522 = and i32 %286, 3
%lcmp.mod523 = icmp ne i32 %xtraiter522, 0
br i1 %lcmp.mod523, label %while_body.i.i315.prol, label %while_body.i.i315.preheader.split
while_body.i.i315.prol: ; preds = %while_body.i.i315.prol, %while_body.i.i315.preheader
%wp.04.i.i310.prol = phi %"ll::limb::Limb"* [ %295, %while_body.i.i315.prol ], [ %277, %while_body.i.i315.preheader ]
%yp.02.i.i312.prol = phi %"ll::limb::Limb"* [ %296, %while_body.i.i315.prol ], [ %278, %while_body.i.i315.preheader ]
%i.01.i.i313.prol = phi i32 [ %297, %while_body.i.i315.prol ], [ 0, %while_body.i.i315.preheader ]
%prol.iter524 = phi i32 [ %xtraiter522, %while_body.i.i315.preheader ], [ %prol.iter524.sub, %while_body.i.i315.prol ]
%289 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i310.prol, i64 0, i32 0
%290 = load i64* %289, align 8
%291 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i312.prol, i64 0, i32 0
%292 = load i64* %291, align 8
%293 = and i64 %292, %290
%294 = xor i64 %293, -1
store i64 %294, i64* %289, align 8
%295 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i310.prol, i64 1
%296 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i312.prol, i64 1
%297 = add nuw nsw i32 %i.01.i.i313.prol, 1
%exitcond.i.i314.prol = icmp eq i32 %297, %274
%prol.iter524.sub = sub i32 %prol.iter524, 1
%prol.iter524.cmp = icmp ne i32 %prol.iter524.sub, 0
br i1 %prol.iter524.cmp, label %while_body.i.i315.prol, label %while_body.i.i315.preheader.split, !llvm.loop !2501
while_body.i.i315.preheader.split: ; preds = %while_body.i.i315.prol, %while_body.i.i315.preheader
%wp.04.i.i310.unr = phi %"ll::limb::Limb"* [ %277, %while_body.i.i315.preheader ], [ %295, %while_body.i.i315.prol ]
%yp.02.i.i312.unr = phi %"ll::limb::Limb"* [ %278, %while_body.i.i315.preheader ], [ %296, %while_body.i.i315.prol ]
%i.01.i.i313.unr = phi i32 [ 0, %while_body.i.i315.preheader ], [ %297, %while_body.i.i315.prol ]
%298 = icmp ult i32 %288, 3
br i1 %298, label %next-block58.loopexit, label %while_body.i.i315.preheader.split.split
while_body.i.i315.preheader.split.split: ; preds = %while_body.i.i315.preheader.split
br label %while_body.i.i315
while_body.i.i315: ; preds = %while_body.i.i315, %while_body.i.i315.preheader.split.split
%wp.04.i.i310 = phi %"ll::limb::Limb"* [ %wp.04.i.i310.unr, %while_body.i.i315.preheader.split.split ], [ %332, %while_body.i.i315 ]
%yp.02.i.i312 = phi %"ll::limb::Limb"* [ %yp.02.i.i312.unr, %while_body.i.i315.preheader.split.split ], [ %333, %while_body.i.i315 ]
%i.01.i.i313 = phi i32 [ %i.01.i.i313.unr, %while_body.i.i315.preheader.split.split ], [ %334, %while_body.i.i315 ]
%299 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i310, i64 0, i32 0
%300 = load i64* %299, align 8
%301 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i312, i64 0, i32 0
%302 = load i64* %301, align 8
%303 = and i64 %302, %300
%304 = xor i64 %303, -1
store i64 %304, i64* %299, align 8
%305 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i310, i64 1
%306 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i312, i64 1
%307 = add nuw nsw i32 %i.01.i.i313, 1
%308 = getelementptr inbounds %"ll::limb::Limb"* %305, i64 0, i32 0
%309 = load i64* %308, align 8
%310 = getelementptr inbounds %"ll::limb::Limb"* %306, i64 0, i32 0
%311 = load i64* %310, align 8
%312 = and i64 %311, %309
%313 = xor i64 %312, -1
store i64 %313, i64* %308, align 8
%314 = getelementptr inbounds %"ll::limb::Limb"* %305, i64 1
%315 = getelementptr inbounds %"ll::limb::Limb"* %306, i64 1
%316 = add nuw nsw i32 %307, 1
%317 = getelementptr inbounds %"ll::limb::Limb"* %314, i64 0, i32 0
%318 = load i64* %317, align 8
%319 = getelementptr inbounds %"ll::limb::Limb"* %315, i64 0, i32 0
%320 = load i64* %319, align 8
%321 = and i64 %320, %318
%322 = xor i64 %321, -1
store i64 %322, i64* %317, align 8
%323 = getelementptr inbounds %"ll::limb::Limb"* %314, i64 1
%324 = getelementptr inbounds %"ll::limb::Limb"* %315, i64 1
%325 = add nuw nsw i32 %316, 1
%326 = getelementptr inbounds %"ll::limb::Limb"* %323, i64 0, i32 0
%327 = load i64* %326, align 8
%328 = getelementptr inbounds %"ll::limb::Limb"* %324, i64 0, i32 0
%329 = load i64* %328, align 8
%330 = and i64 %329, %327
%331 = xor i64 %330, -1
store i64 %331, i64* %326, align 8
%332 = getelementptr inbounds %"ll::limb::Limb"* %323, i64 1
%333 = getelementptr inbounds %"ll::limb::Limb"* %324, i64 1
%334 = add nuw nsw i32 %325, 1
%exitcond.i.i314.3 = icmp eq i32 %334, %274
br i1 %exitcond.i.i314.3, label %next-block58.loopexit.unr-lcssa, label %while_body.i.i315
next-block58.loopexit.unr-lcssa: ; preds = %while_body.i.i315
br label %next-block58.loopexit
next-block58.loopexit: ; preds = %while_body.i.i315.preheader.split, %next-block58.loopexit.unr-lcssa
br label %next-block58
next-block58: ; preds = %next-block58.loopexit, %normal-return56, %normal-return53
%335 = sub i32 0, %sret_slot.0.sroa.speculated.i335
store i32 %335, i32* %21, align 4
%336 = icmp eq i32 %sret_slot.0.sroa.speculated.i335, 0
br i1 %336, label %normal-return59, label %join.lr.ph.i304
join.lr.ph.i304: ; preds = %next-block58
%337 = ashr i32 %335, 31
%338 = or i32 %337, 1
%339 = load %"ll::limb::Limb"** %50, align 8, !alias.scope !2502
br label %join.i308
while_body.i306: ; preds = %join.i308
%340 = sub i32 %342, %338
store i32 %340, i32* %21, align 4, !alias.scope !2502
%341 = icmp eq i32 %342, %338
br i1 %341, label %normal-return59.loopexit, label %join.i308
join.i308: ; preds = %while_body.i306, %join.lr.ph.i304
%342 = phi i32 [ %335, %join.lr.ph.i304 ], [ %340, %while_body.i306 ]
%343 = icmp slt i32 %342, 0
%344 = sub i32 0, %342
%sret_slot.0.i.i.i307 = select i1 %343, i32 %344, i32 %342
%345 = add i32 %sret_slot.0.i.i.i307, -1
%346 = sext i32 %345 to i64
%347 = getelementptr inbounds %"ll::limb::Limb"* %339, i64 %346, i32 0
%348 = load i64* %347, align 8, !alias.scope !2505, !noalias !2508
%349 = icmp eq i64 %348, 0
br i1 %349, label %while_body.i306, label %normal-return59.loopexit
normal-return59.loopexit: ; preds = %while_body.i306, %join.i308
br label %normal-return59
normal-return59: ; preds = %normal-return59.loopexit, %next-block58
%350 = bitcast %"int::Int"* %1 to i8*
%351 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %351, i8* %350, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %350, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
normal-return64: ; preds = %next-block27
%352 = icmp slt i32 %4, 0
%353 = sub i32 0, %4
%sret_slot.0.i.i303 = select i1 %352, i32 %353, i32 %4
%354 = icmp slt i32 %22, 0
%355 = sub i32 0, %22
%sret_slot.0.i.i302 = select i1 %354, i32 %355, i32 %22
%356 = icmp sge i32 %sret_slot.0.i.i302, %sret_slot.0.i.i303
%sret_slot.0.sroa.speculated.i = select i1 %356, i32 %sret_slot.0.i.i302, i32 %sret_slot.0.i.i303
%357 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%358 = load i32* %357, align 4, !alias.scope !2510
%359 = icmp ult i32 %358, %sret_slot.0.sroa.speculated.i
br i1 %359, label %then-block-14806-.i, label %normal-return65
then-block-14806-.i: ; preds = %normal-return64
%360 = icmp eq i32 %358, 0
br i1 %360, label %else-block.i, label %then-block-14817-.i
then-block-14817-.i: ; preds = %then-block-14806-.i
%361 = zext i32 %358 to i64
%362 = shl nuw nsw i64 %361, 3
%363 = zext i32 %sret_slot.0.sroa.speculated.i to i64
%364 = shl nuw nsw i64 %363, 3
%365 = invoke fastcc i8* @_ZN3mem10reallocate20hbbb9a01f101d0dea5CdE(i8* %52, i64 %362, i64 %364)
to label %while_exit.i unwind label %unwind_custom_
else-block.i: ; preds = %then-block-14806-.i
%366 = zext i32 %sret_slot.0.sroa.speculated.i to i64
%367 = shl nuw nsw i64 %366, 3
%368 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %367)
to label %while_exit.i unwind label %unwind_custom_
while_exit.i: ; preds = %else-block.i, %then-block-14817-.i
%.pre-phi440 = phi i64 [ %362, %then-block-14817-.i ], [ 0, %else-block.i ]
%.sink.i = phi i8* [ %365, %then-block-14817-.i ], [ %368, %else-block.i ]
%scevgep.i = getelementptr i8* %.sink.i, i64 %.pre-phi440
%369 = xor i32 %358, -1
%370 = add i32 %sret_slot.0.sroa.speculated.i, %369
%371 = zext i32 %370 to i64
%372 = shl nuw nsw i64 %371, 3
%373 = add nuw nsw i64 %372, 8
tail call void @llvm.memset.p0i8.i64(i8* %scevgep.i, i8 0, i64 %373, i32 8, i1 false), !noalias !2510
%374 = ptrtoint i8* %.sink.i to i64
%375 = bitcast %"int::Int"* %1 to i64*
store i64 %374, i64* %375, align 8, !alias.scope !2510
store i32 %sret_slot.0.sroa.speculated.i, i32* %357, align 4, !alias.scope !2510
br label %normal-return65
normal-return65: ; preds = %while_exit.i, %normal-return64
%376 = icmp slt i32 %49, 0
%.287 = select i1 %376, %"ll::limb::Limb"* %51, %"ll::limb::Limb"* %54
%.288 = select i1 %376, %"ll::limb::Limb"* %54, %"ll::limb::Limb"* %51
br label %while_cond.i.i
while_exit.i.i: ; preds = %while_cond.i.i
%xp.0.i.i.lcssa = phi %"ll::limb::Limb"* [ %xp.0.i.i, %while_cond.i.i ]
%cnt.0.i.i.lcssa = phi i32 [ %cnt.0.i.i, %while_cond.i.i ]
%377 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i.lcssa, i64 1, i32 0
%378 = load i64* %377, align 8, !noalias !2513
%379 = tail call i64 @llvm.cttz.i64(i64 %378, i1 false) #20
%380 = trunc i64 %379 to i32
%381 = add i32 %380, %cnt.0.i.i.lcssa
br label %normal-return68
while_cond.i.i: ; preds = %while_body.i.i290, %normal-return65
%cnt.0.i.i = phi i32 [ 0, %normal-return65 ], [ %385, %while_body.i.i290 ]
%xs.0.i.i = phi i32 [ %sret_slot.0.sroa.speculated.i, %normal-return65 ], [ %387, %while_body.i.i290 ]
%xp.0.i.i = phi %"ll::limb::Limb"* [ %.288, %normal-return65 ], [ %386, %while_body.i.i290 ]
%382 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 0, i32 0
%383 = load i64* %382, align 8, !alias.scope !2516, !noalias !2519
%384 = icmp eq i64 %383, 0
br i1 %384, label %while_body.i.i290, label %while_exit.i.i
while_body.i.i290: ; preds = %while_cond.i.i
%385 = add i32 %cnt.0.i.i, 64
%386 = getelementptr inbounds %"ll::limb::Limb"* %xp.0.i.i, i64 1
%387 = add i32 %xs.0.i.i, -1
%388 = icmp eq i32 %387, 0
br i1 %388, label %normal-return68.loopexit, label %while_cond.i.i
normal-return68.loopexit: ; preds = %while_body.i.i290
%.lcssa515 = phi i32 [ %385, %while_body.i.i290 ]
br label %normal-return68
normal-return68: ; preds = %normal-return68.loopexit, %while_exit.i.i
%sret_slot.0.i.i = phi i32 [ %381, %while_exit.i.i ], [ %.lcssa515, %normal-return68.loopexit ]
%389 = lshr i32 %sret_slot.0.i.i, 6
%390 = zext i32 %389 to i64
%391 = icmp ne %"ll::limb::Limb"* %.287, %51
%392 = icmp ne i32 %389, 0
%or.cond = and i1 %391, %392
br i1 %or.cond, label %while_body.lr.ph.i, label %normal-return77
while_body.lr.ph.i: ; preds = %normal-return68
%393 = add nsw i32 %389, -1
%394 = lshr i32 %sret_slot.0.i.i, 6
%395 = add nsw i32 %394, -1
%396 = zext i32 %395 to i64
%397 = add nuw nsw i64 %396, 1
%end.idx = add nuw nsw i64 %396, 1
%n.vec = and i64 %397, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%398 = lshr i32 %sret_slot.0.i.i, 6
%399 = add nsw i32 %398, -1
%400 = zext i32 %399 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i
%scevgep451 = getelementptr %"ll::limb::Limb"* %.287, i64 %400
%bound0 = icmp ule %"ll::limb::Limb"* %51, %scevgep451
%scevgep = getelementptr %"ll::limb::Limb"* %51, i64 %400
%bound1 = icmp ule %"ll::limb::Limb"* %.287, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%401 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %index, i32 0
%402 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %index, i32 0
%403 = bitcast i64* %401 to <2 x i64>*
%wide.load = load <2 x i64>* %403, align 8
%404 = getelementptr i64* %401, i64 2
%405 = bitcast i64* %404 to <2 x i64>*
%wide.load454 = load <2 x i64>* %405, align 8
%406 = bitcast i64* %402 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %406, align 8
%407 = getelementptr i64* %402, i64 2
%408 = bitcast i64* %407 to <2 x i64>*
store <2 x i64> %wide.load454, <2 x i64>* %408, align 8
%index.next = add i64 %index, 4
%409 = icmp eq i64 %index.next, %n.vec
br i1 %409, label %middle.block.loopexit, label %vector.body, !llvm.loop !2521
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %normal-return77, label %while_body.i289.preheader
while_body.i289.preheader: ; preds = %middle.block
%410 = lshr i32 %sret_slot.0.i.i, 6
%411 = trunc i64 %resume.val to i32
%412 = sub i32 %410, %411
%413 = add i32 %410, -1
%414 = sub i32 %413, %411
%xtraiter533 = and i32 %412, 3
%lcmp.mod534 = icmp ne i32 %xtraiter533, 0
br i1 %lcmp.mod534, label %while_body.i289.prol, label %while_body.i289.preheader.split
while_body.i289.prol: ; preds = %while_body.i289.prol, %while_body.i289.preheader
%indvars.iv.i.prol = phi i64 [ %indvars.iv.next.i.prol, %while_body.i289.prol ], [ %resume.val, %while_body.i289.preheader ]
%prol.iter535 = phi i32 [ %xtraiter533, %while_body.i289.preheader ], [ %prol.iter535.sub, %while_body.i289.prol ]
%415 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %indvars.iv.i.prol, i32 0
%416 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %indvars.iv.i.prol, i32 0
%417 = load i64* %415, align 8
store i64 %417, i64* %416, align 8
%indvars.iv.next.i.prol = add nuw nsw i64 %indvars.iv.i.prol, 1
%lftr.wideiv.i.prol = trunc i64 %indvars.iv.i.prol to i32
%exitcond.i.prol = icmp eq i32 %lftr.wideiv.i.prol, %393
%prol.iter535.sub = sub i32 %prol.iter535, 1
%prol.iter535.cmp = icmp ne i32 %prol.iter535.sub, 0
br i1 %prol.iter535.cmp, label %while_body.i289.prol, label %while_body.i289.preheader.split, !llvm.loop !2522
while_body.i289.preheader.split: ; preds = %while_body.i289.prol, %while_body.i289.preheader
%indvars.iv.i.unr = phi i64 [ %resume.val, %while_body.i289.preheader ], [ %indvars.iv.next.i.prol, %while_body.i289.prol ]
%418 = icmp ult i32 %414, 3
br i1 %418, label %normal-return77.loopexit, label %while_body.i289.preheader.split.split
while_body.i289.preheader.split.split: ; preds = %while_body.i289.preheader.split
br label %while_body.i289
while_body.i289: ; preds = %while_body.i289, %while_body.i289.preheader.split.split
%indvars.iv.i = phi i64 [ %indvars.iv.i.unr, %while_body.i289.preheader.split.split ], [ %indvars.iv.next.i.3, %while_body.i289 ]
%419 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %indvars.iv.i, i32 0
%420 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %indvars.iv.i, i32 0
%421 = load i64* %419, align 8
store i64 %421, i64* %420, align 8
%indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1
%lftr.wideiv.i = trunc i64 %indvars.iv.i to i32
%422 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %indvars.iv.next.i, i32 0
%423 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %indvars.iv.next.i, i32 0
%424 = load i64* %422, align 8
store i64 %424, i64* %423, align 8
%indvars.iv.next.i.1 = add nuw nsw i64 %indvars.iv.next.i, 1
%lftr.wideiv.i.1 = trunc i64 %indvars.iv.next.i to i32
%425 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %indvars.iv.next.i.1, i32 0
%426 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %indvars.iv.next.i.1, i32 0
%427 = load i64* %425, align 8
store i64 %427, i64* %426, align 8
%indvars.iv.next.i.2 = add nuw nsw i64 %indvars.iv.next.i.1, 1
%lftr.wideiv.i.2 = trunc i64 %indvars.iv.next.i.1 to i32
%428 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %indvars.iv.next.i.2, i32 0
%429 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %indvars.iv.next.i.2, i32 0
%430 = load i64* %428, align 8
store i64 %430, i64* %429, align 8
%indvars.iv.next.i.3 = add nuw nsw i64 %indvars.iv.next.i.2, 1
%lftr.wideiv.i.3 = trunc i64 %indvars.iv.next.i.2 to i32
%exitcond.i.3 = icmp eq i32 %lftr.wideiv.i.3, %393
br i1 %exitcond.i.3, label %normal-return77.loopexit.unr-lcssa, label %while_body.i289, !llvm.loop !2523
normal-return77.loopexit.unr-lcssa: ; preds = %while_body.i289
br label %normal-return77.loopexit
normal-return77.loopexit: ; preds = %while_body.i289.preheader.split, %normal-return77.loopexit.unr-lcssa
br label %normal-return77
normal-return77: ; preds = %normal-return77.loopexit, %middle.block, %normal-return68
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %.288, i64 %390, i32 0
%sret_slot.sroa.0.0.copyload.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !2524
%431 = sub i64 0, %sret_slot.sroa.0.0.copyload.i
%432 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %390, i32 0
%433 = load i64* %432, align 8
%434 = or i64 %433, %431
%435 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %390, i32 0
store i64 %434, i64* %435, align 8
%436 = add nuw nsw i32 %389, 1
%437 = icmp slt i32 %436, %sret_slot.0.sroa.speculated.i
br i1 %437, label %normal-return84, label %next-block86
normal-return84: ; preds = %normal-return77
%438 = add nuw nsw i64 %390, 1
%.neg3.i = xor i32 %389, -1
%439 = add i32 %sret_slot.0.sroa.speculated.i, %.neg3.i
%440 = icmp sgt i32 %439, 0
br i1 %440, label %while_body.i.i.preheader, label %next-block86
while_body.i.i.preheader: ; preds = %normal-return84
%441 = zext i32 %436 to i64
%442 = getelementptr inbounds %"ll::limb::Limb"* %.288, i64 %441
%443 = getelementptr inbounds %"ll::limb::Limb"* %.287, i64 %438
%444 = getelementptr inbounds %"ll::limb::Limb"* %51, i64 %438
%445 = icmp sgt i32 %sret_slot.0.i.i303, %sret_slot.0.i.i302
%smax529 = select i1 %445, i32 %sret_slot.0.i.i303, i32 %sret_slot.0.i.i302
%446 = add i32 %smax529, -1
%447 = lshr i32 %sret_slot.0.i.i, 6
%448 = sub i32 %446, %447
%449 = add i32 %smax529, -2
%450 = sub i32 %449, %447
%xtraiter530 = and i32 %448, 3
%lcmp.mod531 = icmp ne i32 %xtraiter530, 0
br i1 %lcmp.mod531, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%wp.04.i.i.prol = phi %"ll::limb::Limb"* [ %458, %while_body.i.i.prol ], [ %444, %while_body.i.i.preheader ]
%xp.03.i.i.prol = phi %"ll::limb::Limb"* [ %459, %while_body.i.i.prol ], [ %443, %while_body.i.i.preheader ]
%yp.02.i.i.prol = phi %"ll::limb::Limb"* [ %460, %while_body.i.i.prol ], [ %442, %while_body.i.i.preheader ]
%i.01.i.i.prol = phi i32 [ %461, %while_body.i.i.prol ], [ 0, %while_body.i.i.preheader ]
%prol.iter532 = phi i32 [ %xtraiter530, %while_body.i.i.preheader ], [ %prol.iter532.sub, %while_body.i.i.prol ]
%451 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i.prol, i64 0, i32 0
%452 = load i64* %451, align 8
%453 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i.prol, i64 0, i32 0
%454 = load i64* %453, align 8
%455 = xor i64 %454, -1
%456 = or i64 %452, %455
%457 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i.prol, i64 0, i32 0
store i64 %456, i64* %457, align 8
%458 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i.prol, i64 1
%459 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i.prol, i64 1
%460 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i.prol, i64 1
%461 = add nuw nsw i32 %i.01.i.i.prol, 1
%exitcond.i.i.prol = icmp eq i32 %461, %439
%prol.iter532.sub = sub i32 %prol.iter532, 1
%prol.iter532.cmp = icmp ne i32 %prol.iter532.sub, 0
br i1 %prol.iter532.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2527
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%wp.04.i.i.unr = phi %"ll::limb::Limb"* [ %444, %while_body.i.i.preheader ], [ %458, %while_body.i.i.prol ]
%xp.03.i.i.unr = phi %"ll::limb::Limb"* [ %443, %while_body.i.i.preheader ], [ %459, %while_body.i.i.prol ]
%yp.02.i.i.unr = phi %"ll::limb::Limb"* [ %442, %while_body.i.i.preheader ], [ %460, %while_body.i.i.prol ]
%i.01.i.i.unr = phi i32 [ 0, %while_body.i.i.preheader ], [ %461, %while_body.i.i.prol ]
%462 = icmp ult i32 %450, 3
br i1 %462, label %next-block86.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%wp.04.i.i = phi %"ll::limb::Limb"* [ %wp.04.i.i.unr, %while_body.i.i.preheader.split.split ], [ %503, %while_body.i.i ]
%xp.03.i.i = phi %"ll::limb::Limb"* [ %xp.03.i.i.unr, %while_body.i.i.preheader.split.split ], [ %504, %while_body.i.i ]
%yp.02.i.i = phi %"ll::limb::Limb"* [ %yp.02.i.i.unr, %while_body.i.i.preheader.split.split ], [ %505, %while_body.i.i ]
%i.01.i.i = phi i32 [ %i.01.i.i.unr, %while_body.i.i.preheader.split.split ], [ %506, %while_body.i.i ]
%463 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i, i64 0, i32 0
%464 = load i64* %463, align 8
%465 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i, i64 0, i32 0
%466 = load i64* %465, align 8
%467 = xor i64 %466, -1
%468 = or i64 %464, %467
%469 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i, i64 0, i32 0
store i64 %468, i64* %469, align 8
%470 = getelementptr inbounds %"ll::limb::Limb"* %wp.04.i.i, i64 1
%471 = getelementptr inbounds %"ll::limb::Limb"* %xp.03.i.i, i64 1
%472 = getelementptr inbounds %"ll::limb::Limb"* %yp.02.i.i, i64 1
%473 = add nuw nsw i32 %i.01.i.i, 1
%474 = getelementptr inbounds %"ll::limb::Limb"* %471, i64 0, i32 0
%475 = load i64* %474, align 8
%476 = getelementptr inbounds %"ll::limb::Limb"* %472, i64 0, i32 0
%477 = load i64* %476, align 8
%478 = xor i64 %477, -1
%479 = or i64 %475, %478
%480 = getelementptr inbounds %"ll::limb::Limb"* %470, i64 0, i32 0
store i64 %479, i64* %480, align 8
%481 = getelementptr inbounds %"ll::limb::Limb"* %470, i64 1
%482 = getelementptr inbounds %"ll::limb::Limb"* %471, i64 1
%483 = getelementptr inbounds %"ll::limb::Limb"* %472, i64 1
%484 = add nuw nsw i32 %473, 1
%485 = getelementptr inbounds %"ll::limb::Limb"* %482, i64 0, i32 0
%486 = load i64* %485, align 8
%487 = getelementptr inbounds %"ll::limb::Limb"* %483, i64 0, i32 0
%488 = load i64* %487, align 8
%489 = xor i64 %488, -1
%490 = or i64 %486, %489
%491 = getelementptr inbounds %"ll::limb::Limb"* %481, i64 0, i32 0
store i64 %490, i64* %491, align 8
%492 = getelementptr inbounds %"ll::limb::Limb"* %481, i64 1
%493 = getelementptr inbounds %"ll::limb::Limb"* %482, i64 1
%494 = getelementptr inbounds %"ll::limb::Limb"* %483, i64 1
%495 = add nuw nsw i32 %484, 1
%496 = getelementptr inbounds %"ll::limb::Limb"* %493, i64 0, i32 0
%497 = load i64* %496, align 8
%498 = getelementptr inbounds %"ll::limb::Limb"* %494, i64 0, i32 0
%499 = load i64* %498, align 8
%500 = xor i64 %499, -1
%501 = or i64 %497, %500
%502 = getelementptr inbounds %"ll::limb::Limb"* %492, i64 0, i32 0
store i64 %501, i64* %502, align 8
%503 = getelementptr inbounds %"ll::limb::Limb"* %492, i64 1
%504 = getelementptr inbounds %"ll::limb::Limb"* %493, i64 1
%505 = getelementptr inbounds %"ll::limb::Limb"* %494, i64 1
%506 = add nuw nsw i32 %495, 1
%exitcond.i.i.3 = icmp eq i32 %506, %439
br i1 %exitcond.i.i.3, label %next-block86.loopexit.unr-lcssa, label %while_body.i.i
next-block86.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %next-block86.loopexit
next-block86.loopexit: ; preds = %while_body.i.i.preheader.split, %next-block86.loopexit.unr-lcssa
br label %next-block86
next-block86: ; preds = %next-block86.loopexit, %normal-return84, %normal-return77
%507 = sub i32 0, %sret_slot.0.sroa.speculated.i
store i32 %507, i32* %21, align 4
%508 = icmp eq i32 %sret_slot.0.sroa.speculated.i, 0
br i1 %508, label %normal-return87, label %join.lr.ph.i
join.lr.ph.i: ; preds = %next-block86
%509 = ashr i32 %507, 31
%510 = or i32 %509, 1
%511 = load %"ll::limb::Limb"** %50, align 8, !alias.scope !2528
br label %join.i
while_body.i: ; preds = %join.i
%512 = sub i32 %514, %510
store i32 %512, i32* %21, align 4, !alias.scope !2528
%513 = icmp eq i32 %514, %510
br i1 %513, label %normal-return87.loopexit, label %join.i
join.i: ; preds = %while_body.i, %join.lr.ph.i
%514 = phi i32 [ %507, %join.lr.ph.i ], [ %512, %while_body.i ]
%515 = icmp slt i32 %514, 0
%516 = sub i32 0, %514
%sret_slot.0.i.i.i = select i1 %515, i32 %516, i32 %514
%517 = add i32 %sret_slot.0.i.i.i, -1
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds %"ll::limb::Limb"* %511, i64 %518, i32 0
%520 = load i64* %519, align 8, !alias.scope !2531, !noalias !2534
%521 = icmp eq i64 %520, 0
br i1 %521, label %while_body.i, label %normal-return87.loopexit
normal-return87.loopexit: ; preds = %while_body.i, %join.i
br label %normal-return87
normal-return87: ; preds = %normal-return87.loopexit, %next-block86
%522 = bitcast %"int::Int"* %1 to i8*
%523 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %523, i8* %522, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %522, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit294
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.BitOr$LT$Int$GT$5bitor20h424f2206cb5b3db02ofE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int35Int.BitOr$LT$$RF$$u27$a$u20$Int$GT$5bitor20h3c993c079f31835cJhfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %1)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %entry-block
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %5
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int51_$RF$$u27$b$u20$Int.BitOr$LT$$RF$$u27$a$u20$Int$GT$5bitor20hcf40d6f6f671b59appfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !2536, !noalias !2541
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %entry-block
%8 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2543, !noalias !2548
%9 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2543, !noalias !2548
%10 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2543, !noalias !2548
%11 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2543, !noalias !2548
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %entry-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%12 = icmp slt i32 %6, 0
%13 = sub i32 0, %6
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %6
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2549
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2552, !noalias !2541
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep4 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep45 = bitcast %"ll::limb::Limb"* %scevgep4 to i8*
%bound0 = icmp ule i8* %17, %scevgep45
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2555
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load7 = load <2 x i64>* %34, align 8, !noalias !2555
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2555
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load7, <2 x i64>* %37, align 8, !noalias !2555
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2556
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2555
store i64 %45, i64* %44, align 8, !noalias !2555
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2557
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2555
store i64 %49, i64* %48, align 8, !noalias !2555
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2555
store i64 %52, i64* %51, align 8, !noalias !2555
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2555
store i64 %55, i64* %54, align 8, !noalias !2555
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2555
store i64 %58, i64* %57, align 8, !noalias !2555
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2558
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2541, !noalias !2548
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %6, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2541, !noalias !2548
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2541, !noalias !2548
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2541, !noalias !2548
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %4, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2548
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int35Int.BitOr$LT$$RF$$u27$a$u20$Int$GT$5bitor20h3c993c079f31835cJhfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2)
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.BitOr$LT$Int$GT$5bitor20h428dfa071eb98f92SpfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int35Int.BitOr$LT$$RF$$u27$a$u20$Int$GT$5bitor20h3c993c079f31835cJhfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %2)
to label %normal-return unwind label %unwind_custom_
normal-return: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%6 = load i8* %5, align 1
%7 = icmp eq i8 %6, -44
br i1 %7, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
cond.i: ; preds = %normal-return
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%9 = load i32* %8, align 4, !alias.scope !2559
%10 = icmp eq i32 %9, 0
br i1 %10, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%11 = bitcast %"int::Int"* %2 to i8**
%12 = load i8** %11, align 8, !alias.scope !2562
%13 = zext i32 %9 to i64
%14 = shl nuw nsw i64 %13, 3
tail call void @je_sdallocx(i8* %12, i64 %14, i32 0)
store i32 0, i32* %8, align 4, !alias.scope !2559
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %15, align 4, !alias.scope !2559
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit5: ; preds = %then-block-15297-.i.i, %cond.i, %normal-return
%16 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %16)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
unwind_custom_: ; preds = %entry-block
%17 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%18 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%19 = load i8* %18, align 1
%20 = icmp eq i8 %19, -44
br i1 %20, label %cond.i6, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
cond.i6: ; preds = %unwind_custom_
%21 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%22 = load i32* %21, align 4, !alias.scope !2565
%23 = icmp eq i32 %22, 0
br i1 %23, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11, label %then-block-15297-.i.i7
then-block-15297-.i.i7: ; preds = %cond.i6
%24 = bitcast %"int::Int"* %2 to i8**
%25 = load i8** %24, align 8, !alias.scope !2568
%26 = zext i32 %22 to i64
%27 = shl nuw nsw i64 %26, 3
tail call void @je_sdallocx(i8* %25, i64 %27, i32 0)
store i32 0, i32* %21, align 4, !alias.scope !2565
%28 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
store i32 0, i32* %28, align 4, !alias.scope !2565
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %then-block-15297-.i.i7, %cond.i6, %unwind_custom_
%29 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %29)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %17
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%arg4 = alloca %"int::Int", align 8
%3 = icmp eq i32 %2, 0
br i1 %3, label %then-block-20230-, label %next-block
then-block-20230-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %1 to i8*
%5 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20230-, %normal-return2, %normal-return5
%6 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i32 %2, 0
br i1 %7, label %normal-return, label %next-block3
normal-return: ; preds = %next-block
%8 = sub i32 0, %2
%9 = sext i32 %8 to i64
%10 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %10)
%11 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %9)
to label %normal-return2 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20: ; preds = %normal-return, %next-block3
%12 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%13 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %13)
resume { i8*, i32 } %12
normal-return2: ; preds = %normal-return
call void @llvm.lifetime.end(i64 24, i8* %10)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block3: ; preds = %next-block
%14 = sext i32 %2 to i64
%15 = bitcast %"int::Int"* %arg4 to i8*
call void @llvm.lifetime.start(i64 24, i8* %15)
%16 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %16, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %16, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4, i64 %14)
to label %normal-return5 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
normal-return5: ; preds = %next-block3
call void @llvm.lifetime.end(i64 24, i8* %15)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%arg4 = alloca %"int::Int", align 8
%3 = icmp eq i32 %2, 0
br i1 %3, label %then-block-20281-, label %next-block
then-block-20281-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %1 to i8*
%5 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20281-, %normal-return2, %normal-return5
%6 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i32 %2, 0
br i1 %7, label %normal-return, label %next-block3
normal-return: ; preds = %next-block
%8 = sub i32 0, %2
%9 = sext i32 %8 to i64
%10 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %10)
%11 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %11, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %9)
to label %normal-return2 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20: ; preds = %normal-return, %next-block3
%12 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%13 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %13)
resume { i8*, i32 } %12
normal-return2: ; preds = %normal-return
call void @llvm.lifetime.end(i64 24, i8* %10)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block3: ; preds = %next-block
%14 = sext i32 %2 to i64
%15 = bitcast %"int::Int"* %arg4 to i8*
call void @llvm.lifetime.start(i64 24, i8* %15)
%16 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %16, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %16, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4, i64 %14)
to label %normal-return5 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20
normal-return5: ; preds = %next-block3
call void @llvm.lifetime.end(i64 24, i8* %15)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18Int.Mul$LT$i32$GT$3mul20h6efcb9cffddd5e36RrfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg.sroa.7 = alloca [12 x i8], align 4
%3 = alloca %"int::Int", align 8
%arg5.sroa.7 = alloca [12 x i8], align 4
%arg10 = alloca %"int::Int", align 8
switch i32 %2, label %before_rhs [
i32 0, label %then-block-20332-
i32 1, label %then-block-20351-
]
then-block-20332-: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %4, align 4
%5 = bitcast %"int::Int"* %1 to i8*
%6 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %5, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %5, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20332-, %then-block-20351-, %normal-return3, %normal-return8, %normal-return11
%7 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %7)
ret void
before_rhs: ; preds = %entry-block
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !2571
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-20351-, label %next-block2
unwind_custom_: ; preds = %next-block9, %normal-return7
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i29, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31
cond.i29: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !2574
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31, label %then-block-15297-.i.i30
then-block-15297-.i.i30: ; preds = %cond.i29
%18 = bitcast %"int::Int"* %1 to i8**
%19 = load i8** %18, align 8, !alias.scope !2577
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !2574
store i32 0, i32* %8, align 4, !alias.scope !2574
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit31: ; preds = %unwind_custom_, %cond.i29, %then-block-15297-.i.i30
%22 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
then-block-20351-: ; preds = %entry-block, %before_rhs
%23 = bitcast %"int::Int"* %1 to i8*
%24 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %23, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %23, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block2: ; preds = %before_rhs
%25 = icmp eq i32 %2, -1
br i1 %25, label %normal-return3, label %next-block4
normal-return3: ; preds = %next-block2
%arg.sroa.7.0..sroa_idx68 = getelementptr inbounds [12 x i8]* %arg.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.7.0..sroa_idx68)
%26 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.7.0..sroa_idx61 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx61 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_idx68, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %26, i8 29, i64 24, i32 8, i1 false)
%27 = sub i32 0, %9
%arg.sroa.0.0..sroa_idx53 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx53, align 8
%arg.sroa.5.0..sroa_idx58 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %27, i32* %arg.sroa.5.0..sroa_idx58, align 8
%arg.sroa.7.0..sroa_idx64 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.7.0..sroa_cast65 = bitcast i32* %arg.sroa.7.0..sroa_idx64 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_cast65, i8* %arg.sroa.7.0..sroa_idx68, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx68)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx68)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block4: ; preds = %next-block2
%28 = icmp slt i32 %2, 0
br i1 %28, label %normal-return7, label %next-block9
normal-return7: ; preds = %next-block4
%29 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %29)
%arg5.sroa.7.0..sroa_idx49 = getelementptr inbounds [12 x i8]* %arg5.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg5.sroa.7.0..sroa_idx49)
%30 = bitcast %"int::Int"* %1 to i8*
%arg5.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg5.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg5.sroa.0.0..sroa_idx, align 8
%arg5.sroa.7.0..sroa_idx42 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg5.sroa.7.0..sroa_cast = bitcast i32* %arg5.sroa.7.0..sroa_idx42 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg5.sroa.7.0..sroa_idx49, i8* %arg5.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %30, i8 29, i64 24, i32 8, i1 false)
%31 = sub i32 0, %9
%arg5.sroa.0.0..sroa_idx34 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg5.sroa.0.0.copyload, %"ll::limb::Limb"** %arg5.sroa.0.0..sroa_idx34, align 8
%arg5.sroa.5.0..sroa_idx39 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %31, i32* %arg5.sroa.5.0..sroa_idx39, align 8
%arg5.sroa.7.0..sroa_idx45 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
%arg5.sroa.7.0..sroa_cast46 = bitcast i32* %arg5.sroa.7.0..sroa_idx45 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg5.sroa.7.0..sroa_cast46, i8* %arg5.sroa.7.0..sroa_idx49, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg5.sroa.7.0..sroa_idx49)
call void @llvm.lifetime.end(i64 12, i8* %arg5.sroa.7.0..sroa_idx49)
%32 = sub i32 0, %2
%33 = sext i32 %32 to i64
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i64 %33)
to label %normal-return8 unwind label %unwind_custom_
normal-return8: ; preds = %normal-return7
call void @llvm.lifetime.end(i64 24, i8* %29)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block9: ; preds = %next-block4
%34 = sext i32 %2 to i64
%35 = bitcast %"int::Int"* %arg10 to i8*
call void @llvm.lifetime.start(i64 24, i8* %35)
%36 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %35, i8* %36, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %36, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg10, i64 %34)
to label %normal-return11 unwind label %unwind_custom_
normal-return11: ; preds = %next-block9
call void @llvm.lifetime.end(i64 24, i8* %35)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18Int.Div$LT$i32$GT$3div20hff388f76bef35600btfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg.sroa.7 = alloca [12 x i8], align 4
%.sroa.12 = alloca [12 x i8], align 4
%arg11.sroa.11 = alloca [12 x i8], align 4
switch i32 %2, label %before_rhs [
i32 0, label %then-block-20414-
i32 1, label %then-block-20428-
]
then-block-20414-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2580
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-20428-, label %next-block3
then-block-20428-: ; preds = %entry-block, %before_rhs
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32: ; preds = %then-block-20428-, %normal-return4, %normal-return9, %normal-return12
%8 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
next-block3: ; preds = %before_rhs
%9 = icmp eq i32 %2, -1
br i1 %9, label %normal-return4, label %next-block5
normal-return4: ; preds = %next-block3
%arg.sroa.7.0..sroa_idx134 = getelementptr inbounds [12 x i8]* %arg.sroa.7, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.7.0..sroa_idx134)
%10 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.7.0..sroa_idx127 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx127 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_idx134, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %10, i8 29, i64 24, i32 8, i1 false)
%11 = sub i32 0, %4
%arg.sroa.0.0..sroa_idx119 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx119, align 8
%arg.sroa.5.0..sroa_idx124 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %11, i32* %arg.sroa.5.0..sroa_idx124, align 8
%arg.sroa.7.0..sroa_idx130 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.7.0..sroa_cast131 = bitcast i32* %arg.sroa.7.0..sroa_idx130 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.7.0..sroa_cast131, i8* %arg.sroa.7.0..sroa_idx134, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx134)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.7.0..sroa_idx134)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
next-block5: ; preds = %next-block3
%12 = icmp slt i32 %2, 0
br i1 %12, label %normal-return8, label %next-block10
normal-return8: ; preds = %next-block5
%.sroa.12.0..sroa_idx111 = getelementptr inbounds [12 x i8]* %.sroa.12, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %.sroa.12.0..sroa_idx111)
%13 = bitcast %"int::Int"* %1 to i8*
%arg6.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg6.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg6.sroa.0.0..sroa_idx, align 8
%arg6.sroa.7.0..sroa_idx83 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg6.sroa.7.0..sroa_cast = bitcast i32* %arg6.sroa.7.0..sroa_idx83 to i8*
%.sroa.12142 = getelementptr inbounds [12 x i8]* %.sroa.12, i64 0, i64 0
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12142, i8* %arg6.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %13, i8 29, i64 24, i32 8, i1 false)
%14 = sub i32 0, %4
%15 = sub i32 0, %2
%16 = sext i32 %15 to i64
switch i64 %16, label %join.lr.ph.i.i37 [
i64 0, label %then-block-17821-.i33
i64 1, label %then-block-17835-.i35
]
then-block-17821-.i33: ; preds = %normal-return8
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2583
unreachable
then-block-17835-.i35: ; preds = %normal-return8
%.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg6.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx, align 8
%.sroa.9.0..sroa_idx98 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %14, i32* %.sroa.9.0..sroa_idx98, align 8
%.sroa.12.0..sroa_idx103 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%.sroa.12.0..sroa_cast = bitcast i32* %.sroa.12.0..sroa_idx103 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12.0..sroa_cast, i8* %.sroa.12.0..sroa_idx111, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.12.0..sroa_idx111, i8 29, i64 12, i32 4, i1 false)
br label %normal-return9
join.lr.ph.i.i37: ; preds = %normal-return8
%17 = icmp slt i32 %14, 0
%sret_slot.0.i.i.i36 = select i1 %17, i32 %4, i32 %14
%18 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %arg6.sroa.0.0.copyload, i32 0, %"ll::limb::Limb"* %arg6.sroa.0.0.copyload, i32 %sret_slot.0.i.i.i36, i64 %16), !noalias !2583
%19 = ashr i32 %14, 31
%20 = or i32 %19, 1
br label %join.i.i40
while_body.i.i38: ; preds = %join.i.i40
%21 = sub i32 %.sroa.9.0.copyload139, %20
%22 = icmp eq i32 %.sroa.9.0.copyload139, %20
br i1 %22, label %normal-return9.i41, label %join.i.i40
join.i.i40: ; preds = %while_body.i.i38, %join.lr.ph.i.i37
%.sroa.9.0.copyload139 = phi i32 [ %14, %join.lr.ph.i.i37 ], [ %21, %while_body.i.i38 ]
%23 = icmp slt i32 %.sroa.9.0.copyload139, 0
%24 = sub i32 0, %.sroa.9.0.copyload139
%sret_slot.0.i.i.i.i39 = select i1 %23, i32 %24, i32 %.sroa.9.0.copyload139
%25 = add i32 %sret_slot.0.i.i.i.i39, -1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds %"ll::limb::Limb"* %arg6.sroa.0.0.copyload, i64 %26, i32 0
%28 = load i64* %27, align 8, !alias.scope !2587, !noalias !2590
%29 = icmp eq i64 %28, 0
br i1 %29, label %while_body.i.i38, label %normal-return9.i41
normal-return9.i41: ; preds = %join.i.i40, %while_body.i.i38
%.sroa.9.0.copyload140 = phi i32 [ %.sroa.9.0.copyload139, %join.i.i40 ], [ %21, %while_body.i.i38 ]
%.sroa.0.0..sroa_idx95 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg6.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx95, align 8
%.sroa.9.0..sroa_idx100 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sroa.9.0.copyload140, i32* %.sroa.9.0..sroa_idx100, align 8
%.sroa.12.0..sroa_idx107 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%.sroa.12.0..sroa_cast108 = bitcast i32* %.sroa.12.0..sroa_idx107 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12.0..sroa_cast108, i8* %.sroa.12.0..sroa_idx111, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.12.0..sroa_idx111, i8 29, i64 12, i32 4, i1 false)
br label %normal-return9
normal-return9: ; preds = %normal-return9.i41, %then-block-17835-.i35
call void @llvm.lifetime.end(i64 12, i8* %.sroa.12.0..sroa_idx111)
call void @llvm.lifetime.end(i64 12, i8* %.sroa.12.0..sroa_idx111)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
next-block10: ; preds = %next-block5
%30 = sext i32 %2 to i64
%arg11.sroa.11.0..sroa_idx69 = getelementptr inbounds [12 x i8]* %arg11.sroa.11, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg11.sroa.11.0..sroa_idx69)
%31 = bitcast %"int::Int"* %1 to i8*
%arg11.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg11.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg11.sroa.0.0..sroa_idx, align 8
%arg11.sroa.11.0..sroa_idx57 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg11.sroa.11.0..sroa_cast = bitcast i32* %arg11.sroa.11.0..sroa_idx57 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg11.sroa.11.0..sroa_idx69, i8* %arg11.sroa.11.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %31, i8 29, i64 24, i32 8, i1 false)
switch i64 %30, label %join.lr.ph.i.i [
i64 0, label %then-block-17821-.i
i64 1, label %then-block-17835-.i
]
then-block-17821-.i: ; preds = %next-block10
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2594
unreachable
then-block-17835-.i: ; preds = %next-block10
%arg11.sroa.0.0..sroa_idx45 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg11.sroa.0.0.copyload, %"ll::limb::Limb"** %arg11.sroa.0.0..sroa_idx45, align 8
%arg11.sroa.9.0..sroa_idx52 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %4, i32* %arg11.sroa.9.0..sroa_idx52, align 8
%arg11.sroa.11.0..sroa_idx60 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg11.sroa.11.0..sroa_cast61 = bitcast i32* %arg11.sroa.11.0..sroa_idx60 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg11.sroa.11.0..sroa_cast61, i8* %arg11.sroa.11.0..sroa_idx69, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg11.sroa.11.0..sroa_idx69, i8 29, i64 12, i32 4, i1 false)
br label %normal-return12
join.lr.ph.i.i: ; preds = %next-block10
%32 = icmp slt i32 %4, 0
%33 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %32, i32 %33, i32 %4
%34 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %arg11.sroa.0.0.copyload, i32 0, %"ll::limb::Limb"* %arg11.sroa.0.0.copyload, i32 %sret_slot.0.i.i.i, i64 %30), !noalias !2594
%35 = ashr i32 %4, 31
%36 = or i32 %35, 1
br label %join.i.i
while_body.i.i: ; preds = %join.i.i
%37 = sub i32 %arg11.sroa.9.0.copyload137, %36
%38 = icmp eq i32 %arg11.sroa.9.0.copyload137, %36
br i1 %38, label %normal-return9.i, label %join.i.i
join.i.i: ; preds = %while_body.i.i, %join.lr.ph.i.i
%arg11.sroa.9.0.copyload137 = phi i32 [ %4, %join.lr.ph.i.i ], [ %37, %while_body.i.i ]
%39 = icmp slt i32 %arg11.sroa.9.0.copyload137, 0
%40 = sub i32 0, %arg11.sroa.9.0.copyload137
%sret_slot.0.i.i.i.i = select i1 %39, i32 %40, i32 %arg11.sroa.9.0.copyload137
%41 = add i32 %sret_slot.0.i.i.i.i, -1
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds %"ll::limb::Limb"* %arg11.sroa.0.0.copyload, i64 %42, i32 0
%44 = load i64* %43, align 8, !alias.scope !2598, !noalias !2601
%45 = icmp eq i64 %44, 0
br i1 %45, label %while_body.i.i, label %normal-return9.i
normal-return9.i: ; preds = %join.i.i, %while_body.i.i
%arg11.sroa.9.0.copyload138 = phi i32 [ %arg11.sroa.9.0.copyload137, %join.i.i ], [ %37, %while_body.i.i ]
%arg11.sroa.0.0..sroa_idx48 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg11.sroa.0.0.copyload, %"ll::limb::Limb"** %arg11.sroa.0.0..sroa_idx48, align 8
%arg11.sroa.9.0..sroa_idx55 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg11.sroa.9.0.copyload138, i32* %arg11.sroa.9.0..sroa_idx55, align 8
%arg11.sroa.11.0..sroa_idx65 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg11.sroa.11.0..sroa_cast66 = bitcast i32* %arg11.sroa.11.0..sroa_idx65 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg11.sroa.11.0..sroa_cast66, i8* %arg11.sroa.11.0..sroa_idx69, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg11.sroa.11.0..sroa_idx69, i8 29, i64 12, i32 4, i1 false)
br label %normal-return12
normal-return12: ; preds = %normal-return9.i, %then-block-17835-.i
call void @llvm.lifetime.end(i64 12, i8* %arg11.sroa.11.0..sroa_idx69)
call void @llvm.lifetime.end(i64 12, i8* %arg11.sroa.11.0..sroa_idx69)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit32
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg.sroa.11 = alloca [12 x i8], align 4
switch i32 %2, label %before_rhs2 [
i32 0, label %then-block-20491-
i32 -1, label %then-block-20510-
i32 1, label %then-block-20510-
]
then-block-20491-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs2: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2605
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-20510-, label %next-block5
then-block-20510-: ; preds = %entry-block, %entry-block, %before_rhs2
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %6, align 4
%7 = bitcast %"int::Int"* %1 to i8*
%8 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %7, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %7, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit19
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit19: ; preds = %then-block-20510-, %normal-return6
%9 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %9)
ret void
next-block5: ; preds = %before_rhs2
%10 = sext i32 %2 to i64
%arg.sroa.11.0..sroa_idx45 = getelementptr inbounds [12 x i8]* %arg.sroa.11, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.11.0..sroa_idx45)
%11 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.11.0..sroa_idx33 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.11.0..sroa_cast = bitcast i32* %arg.sroa.11.0..sroa_idx33 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_idx45, i8* %arg.sroa.11.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 24, i32 8, i1 false)
switch i64 %10, label %join.lr.ph.i.i [
i64 0, label %then-block-17821-.i
i64 1, label %then-block-17835-.i
]
then-block-17821-.i: ; preds = %next-block5
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2608
unreachable
then-block-17835-.i: ; preds = %next-block5
%arg.sroa.0.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21, align 8
%arg.sroa.9.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %4, i32* %arg.sroa.9.0..sroa_idx28, align 8
%arg.sroa.11.0..sroa_idx36 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.11.0..sroa_cast37 = bitcast i32* %arg.sroa.11.0..sroa_idx36 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_cast37, i8* %arg.sroa.11.0..sroa_idx45, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.11.0..sroa_idx45, i8 29, i64 12, i32 4, i1 false)
br label %normal-return6
join.lr.ph.i.i: ; preds = %next-block5
%12 = icmp slt i32 %4, 0
%13 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %12, i32 %13, i32 %4
%14 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 0, %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 %sret_slot.0.i.i.i, i64 %10), !noalias !2608
%15 = ashr i32 %4, 31
%16 = or i32 %15, 1
br label %join.i.i
while_body.i.i: ; preds = %join.i.i
%17 = sub i32 %arg.sroa.9.0.copyload50, %16
%18 = icmp eq i32 %arg.sroa.9.0.copyload50, %16
br i1 %18, label %normal-return9.i, label %join.i.i
join.i.i: ; preds = %while_body.i.i, %join.lr.ph.i.i
%arg.sroa.9.0.copyload50 = phi i32 [ %4, %join.lr.ph.i.i ], [ %17, %while_body.i.i ]
%19 = icmp slt i32 %arg.sroa.9.0.copyload50, 0
%20 = sub i32 0, %arg.sroa.9.0.copyload50
%sret_slot.0.i.i.i.i = select i1 %19, i32 %20, i32 %arg.sroa.9.0.copyload50
%21 = add i32 %sret_slot.0.i.i.i.i, -1
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i64 %22, i32 0
%24 = load i64* %23, align 8, !alias.scope !2612, !noalias !2615
%25 = icmp eq i64 %24, 0
br i1 %25, label %while_body.i.i, label %normal-return9.i
normal-return9.i: ; preds = %join.i.i, %while_body.i.i
%arg.sroa.9.0.copyload51 = phi i32 [ %arg.sroa.9.0.copyload50, %join.i.i ], [ %17, %while_body.i.i ]
%arg.sroa.0.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx24, align 8
%arg.sroa.9.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload51, i32* %arg.sroa.9.0..sroa_idx31, align 8
%arg.sroa.11.0..sroa_idx41 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.11.0..sroa_cast42 = bitcast i32* %arg.sroa.11.0..sroa_idx41 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_cast42, i8* %arg.sroa.11.0..sroa_idx45, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.11.0..sroa_idx45, i8 29, i64 12, i32 4, i1 false)
br label %normal-return6
normal-return6: ; preds = %normal-return9.i, %then-block-17835-.i
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx45)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx45)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit19
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Add$LT$i32$GT$3add20h93e45fb345d1c3b6nvfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg4.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.18 = alloca [7 x i8], align 1
%.sroa.18.0..sroa_idx47 = getelementptr inbounds [7 x i8]* %.sroa.18, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.18.0..sroa_idx47)
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2619, !noalias !2624
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !2626
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !2629, !noalias !2624
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep55 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep5556 = bitcast %"ll::limb::Limb"* %scevgep55 to i8*
%bound0 = icmp ule i8* %11, %scevgep5556
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !2632
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load58 = load <2 x i64>* %28, align 8, !noalias !2632
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !2632
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load58, <2 x i64>* %31, align 8, !noalias !2632
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !2633
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !2632
store i64 %39, i64* %38, align 8, !noalias !2632
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2634
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !2632
store i64 %43, i64* %42, align 8, !noalias !2632
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !2632
store i64 %46, i64* %45, align 8, !noalias !2632
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !2632
store i64 %49, i64* %48, align 8, !noalias !2632
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !2632
store i64 %52, i64* %51, align 8, !noalias !2632
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2635
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i54 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i32 %2, 0
br i1 %55, label %then-block-20230-.i, label %next-block.i4
then-block-20230-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.14.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx26, align 4
%.sroa.16.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx31, align 8
%.sroa.18.0..sroa_raw_cast42 = bitcast %"int::Int"* %0 to i8*
%.sroa.18.0..sroa_raw_idx43 = getelementptr inbounds i8* %.sroa.18.0..sroa_raw_cast42, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx43, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = icmp slt i32 %2, 0
br i1 %56, label %normal-return.i, label %next-block3.i
normal-return.i: ; preds = %next-block.i4
%57 = sub i32 0, %2
%58 = sext i32 %57 to i64
%59 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %59), !noalias !2636
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.14.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx24, align 4
%.sroa.16.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx29, align 8
%.sroa.18.0..sroa_raw_idx39 = getelementptr inbounds i8* %59, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx39, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %58)
to label %normal-return2.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2640
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i: ; preds = %next-block3.i, %normal-return.i
%60 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
resume { i8*, i32 } %60
normal-return2.i: ; preds = %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %59), !noalias !2636
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
next-block3.i: ; preds = %next-block.i4
%61 = sext i32 %2 to i64
%62 = bitcast %"int::Int"* %arg4.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %62), !noalias !2636
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg4.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.12.0..sroa_idx13 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx13, align 8
%.sroa.14.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx21, align 4
%.sroa.16.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx, align 8
%.sroa.18.0..sroa_raw_idx = getelementptr inbounds i8* %62, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4.i, i64 %61)
to label %normal-return5.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2640
normal-return5.i: ; preds = %next-block3.i
call void @llvm.lifetime.end(i64 24, i8* %62), !noalias !2636
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit": ; preds = %then-block-20230-.i, %normal-return2.i, %normal-return5.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18i32.Add$LT$Int$GT$3add20h28ea9a3f6e3b9709LvfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg4.i = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
%5 = icmp eq i32 %1, 0
br i1 %5, label %then-block-20230-.i, label %next-block.i
then-block-20230-.i: ; preds = %entry-block
%6 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %3, i64 24, i32 8, i1 false), !alias.scope !2641
call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block.i: ; preds = %entry-block
%7 = icmp slt i32 %1, 0
br i1 %7, label %normal-return.i, label %next-block3.i
normal-return.i: ; preds = %next-block.i
%8 = sub i32 0, %1
%9 = sext i32 %8 to i64
%10 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %10), !noalias !2641
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* %3, i64 24, i32 8, i1 false), !noalias !2645
call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %9)
to label %normal-return2.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !2646
normal-return2.i: ; preds = %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %10), !noalias !2641
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block3.i: ; preds = %next-block.i
%11 = sext i32 %1 to i64
%12 = bitcast %"int::Int"* %arg4.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %12), !noalias !2641
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %3, i64 24, i32 8, i1 false), !noalias !2645
call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4.i, i64 %11)
to label %normal-return5.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !2646
normal-return5.i: ; preds = %next-block3.i
call void @llvm.lifetime.end(i64 24, i8* %12), !noalias !2641
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20230-.i, %normal-return2.i, %normal-return5.i
call void @llvm.lifetime.end(i64 24, i8* %3)
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %next-block3.i, %normal-return.i
%13 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %13
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int33i32.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h2ca61497eb80c57b7vfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg4.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.18 = alloca [7 x i8], align 1
%.sroa.18.0..sroa_idx47 = getelementptr inbounds [7 x i8]* %.sroa.18, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.18.0..sroa_idx47)
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2647, !noalias !2652
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !2654
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !2657, !noalias !2652
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep55 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep5556 = bitcast %"ll::limb::Limb"* %scevgep55 to i8*
%bound0 = icmp ule i8* %11, %scevgep5556
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !2660
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load58 = load <2 x i64>* %28, align 8, !noalias !2660
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !2660
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load58, <2 x i64>* %31, align 8, !noalias !2660
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !2661
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !2660
store i64 %39, i64* %38, align 8, !noalias !2660
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2662
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !2660
store i64 %43, i64* %42, align 8, !noalias !2660
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !2660
store i64 %46, i64* %45, align 8, !noalias !2660
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !2660
store i64 %49, i64* %48, align 8, !noalias !2660
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !2660
store i64 %52, i64* %51, align 8, !noalias !2660
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2663
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i54 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i32 %1, 0
br i1 %55, label %then-block-20230-.i, label %next-block.i4
then-block-20230-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.14.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx26, align 4
%.sroa.16.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx31, align 8
%.sroa.18.0..sroa_raw_cast42 = bitcast %"int::Int"* %0 to i8*
%.sroa.18.0..sroa_raw_idx43 = getelementptr inbounds i8* %.sroa.18.0..sroa_raw_cast42, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx43, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = icmp slt i32 %1, 0
br i1 %56, label %normal-return.i, label %next-block3.i
normal-return.i: ; preds = %next-block.i4
%57 = sub i32 0, %1
%58 = sext i32 %57 to i64
%59 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %59), !noalias !2664
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.14.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx24, align 4
%.sroa.16.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx29, align 8
%.sroa.18.0..sroa_raw_idx39 = getelementptr inbounds i8* %59, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx39, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %58)
to label %normal-return2.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2668
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i: ; preds = %next-block3.i, %normal-return.i
%60 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
resume { i8*, i32 } %60
normal-return2.i: ; preds = %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %59), !noalias !2664
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
next-block3.i: ; preds = %next-block.i4
%61 = sext i32 %1 to i64
%62 = bitcast %"int::Int"* %arg4.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %62), !noalias !2664
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg4.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.12.0..sroa_idx13 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx13, align 8
%.sroa.14.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx21, align 4
%.sroa.16.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx, align 8
%.sroa.18.0..sroa_raw_idx = getelementptr inbounds i8* %62, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4.i, i64 %61)
to label %normal-return5.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2668
normal-return5.i: ; preds = %next-block3.i
call void @llvm.lifetime.end(i64 24, i8* %62), !noalias !2664
br label %"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit"
"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE.exit": ; preds = %then-block-20230-.i, %normal-return2.i, %normal-return5.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Sub$LT$i32$GT$3sub20ha338e584c06a7393xwfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg4.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.18 = alloca [7 x i8], align 1
%.sroa.18.0..sroa_idx47 = getelementptr inbounds [7 x i8]* %.sroa.18, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.18.0..sroa_idx47)
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2669, !noalias !2674
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !2676
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !2679, !noalias !2674
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep55 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep5556 = bitcast %"ll::limb::Limb"* %scevgep55 to i8*
%bound0 = icmp ule i8* %11, %scevgep5556
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !2682
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load58 = load <2 x i64>* %28, align 8, !noalias !2682
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !2682
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load58, <2 x i64>* %31, align 8, !noalias !2682
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !2683
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !2682
store i64 %39, i64* %38, align 8, !noalias !2682
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2684
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !2682
store i64 %43, i64* %42, align 8, !noalias !2682
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !2682
store i64 %46, i64* %45, align 8, !noalias !2682
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !2682
store i64 %49, i64* %48, align 8, !noalias !2682
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !2682
store i64 %52, i64* %51, align 8, !noalias !2682
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2685
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i54 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i32 %2, 0
br i1 %55, label %then-block-20281-.i, label %next-block.i4
then-block-20281-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.14.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx26, align 4
%.sroa.16.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx31, align 8
%.sroa.18.0..sroa_raw_cast42 = bitcast %"int::Int"* %0 to i8*
%.sroa.18.0..sroa_raw_idx43 = getelementptr inbounds i8* %.sroa.18.0..sroa_raw_cast42, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx43, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = icmp slt i32 %2, 0
br i1 %56, label %normal-return.i, label %next-block3.i
normal-return.i: ; preds = %next-block.i4
%57 = sub i32 0, %2
%58 = sext i32 %57 to i64
%59 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %59), !noalias !2686
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.14.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx24, align 4
%.sroa.16.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx29, align 8
%.sroa.18.0..sroa_raw_idx39 = getelementptr inbounds i8* %59, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx39, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %58)
to label %normal-return2.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2690
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i: ; preds = %next-block3.i, %normal-return.i
%60 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
resume { i8*, i32 } %60
normal-return2.i: ; preds = %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %59), !noalias !2686
br label %"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE.exit"
next-block3.i: ; preds = %next-block.i4
%61 = sext i32 %2 to i64
%62 = bitcast %"int::Int"* %arg4.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %62), !noalias !2686
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg4.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.12.0..sroa_idx13 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 1
store i32 %54, i32* %.sroa.12.0..sroa_idx13, align 8
%.sroa.14.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 2
store i32 %53, i32* %.sroa.14.0..sroa_idx21, align 4
%.sroa.16.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx, align 8
%.sroa.18.0..sroa_raw_idx = getelementptr inbounds i8* %62, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx, i8* %.sroa.18.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4.i, i64 %61)
to label %normal-return5.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit20.i, !noalias !2690
normal-return5.i: ; preds = %next-block3.i
call void @llvm.lifetime.end(i64 24, i8* %62), !noalias !2686
br label %"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE.exit"
"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE.exit": ; preds = %then-block-20281-.i, %normal-return2.i, %normal-return5.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx47)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18i32.Sub$LT$Int$GT$3sub20hb2ec8b6fb4bff772VwfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
normal-return:
%arg.i = alloca %"int::Int", align 8
%arg4.i = alloca %"int::Int", align 8
%.sroa.12 = alloca [12 x i8], align 4
%.sroa.12.0..sroa_idx57 = getelementptr inbounds [12 x i8]* %.sroa.12, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %.sroa.12.0..sroa_idx57)
%3 = bitcast %"int::Int"* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.5.0..sroa_idx13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%arg.sroa.5.0.copyload = load i32* %arg.sroa.5.0..sroa_idx13, align 8
%arg.sroa.7.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx18 to i8*
%.sroa.1266 = getelementptr inbounds [12 x i8]* %.sroa.12, i64 0, i64 0
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.1266, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
%4 = sub i32 0, %arg.sroa.5.0.copyload
%5 = icmp eq i32 %1, 0
br i1 %5, label %then-block-20230-.i, label %next-block.i
then-block-20230-.i: ; preds = %normal-return
%.sroa.0.0..sroa_idx33 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx33, align 8
%.sroa.11.0..sroa_idx41 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %4, i32* %.sroa.11.0..sroa_idx41, align 8
%.sroa.12.0..sroa_idx53 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%.sroa.12.0..sroa_cast54 = bitcast i32* %.sroa.12.0..sroa_idx53 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12.0..sroa_cast54, i8* %.sroa.12.0..sroa_idx57, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.12.0..sroa_idx57, i8 29, i64 12, i32 4, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block.i: ; preds = %normal-return
%6 = icmp slt i32 %1, 0
br i1 %6, label %normal-return.i, label %next-block3.i
normal-return.i: ; preds = %next-block.i
%7 = sub i32 0, %1
%8 = sext i32 %7 to i64
%9 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %9), !noalias !2691
%.sroa.0.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx31, align 8
%.sroa.11.0..sroa_idx39 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %4, i32* %.sroa.11.0..sroa_idx39, align 8
%.sroa.12.0..sroa_idx49 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
%.sroa.12.0..sroa_cast50 = bitcast i32* %.sroa.12.0..sroa_idx49 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12.0..sroa_cast50, i8* %.sroa.12.0..sroa_idx57, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.12.0..sroa_idx57, i8 29, i64 12, i32 4, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %8)
to label %normal-return2.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !2695
normal-return2.i: ; preds = %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %9), !noalias !2691
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block3.i: ; preds = %next-block.i
%10 = sext i32 %1 to i64
%11 = bitcast %"int::Int"* %arg4.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %11), !noalias !2691
%.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx, align 8
%.sroa.11.0..sroa_idx36 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 1
store i32 %4, i32* %.sroa.11.0..sroa_idx36, align 8
%.sroa.12.0..sroa_idx44 = getelementptr inbounds %"int::Int"* %arg4.i, i64 0, i32 2
%.sroa.12.0..sroa_cast = bitcast i32* %.sroa.12.0..sroa_idx44 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.12.0..sroa_cast, i8* %.sroa.12.0..sroa_idx57, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.12.0..sroa_idx57, i8 29, i64 12, i32 4, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg4.i, i64 %10)
to label %normal-return5.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !2695
normal-return5.i: ; preds = %next-block3.i
call void @llvm.lifetime.end(i64 24, i8* %11), !noalias !2691
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %next-block3.i, %normal-return.i
%12 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 12, i8* %.sroa.12.0..sroa_idx57)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %12
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20230-.i, %normal-return2.i, %normal-return5.i
call void @llvm.lifetime.end(i64 12, i8* %.sroa.12.0..sroa_idx57)
call void @llvm.lifetime.end(i64 12, i8* %.sroa.12.0..sroa_idx57)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int33i32.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20h6b8447e50b257483gxfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
call void @"_ZN3int34_$RF$$u27$a$u20$Int.Sub$LT$i32$GT$3sub20ha338e584c06a7393xwfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %2, i32 %1)
%5 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%6 = load i32* %5, align 8, !alias.scope !2696, !noalias !2699
%7 = sub i32 0, %6
store i32 %7, i32* %5, align 8, !alias.scope !2696, !noalias !2699
%8 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %8, i8* %4, i64 24, i32 8, i1 false), !alias.scope !2701
call void @llvm.lifetime.end(i64 24, i8* %4), !alias.scope !2696, !noalias !2699
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Mul$LT$i32$GT$3mul20h941eb263f5411c30HxfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%5 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !2702, !noalias !2707
%7 = icmp eq i32 %6, 0
br i1 %7, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %entry-block
%8 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2709, !noalias !2714
%9 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2709, !noalias !2714
%10 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2709, !noalias !2714
%11 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2709, !noalias !2714
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %entry-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%12 = icmp slt i32 %6, 0
%13 = sub i32 0, %6
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %6
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2715
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2718, !noalias !2707
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep4 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep45 = bitcast %"ll::limb::Limb"* %scevgep4 to i8*
%bound0 = icmp ule i8* %17, %scevgep45
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2721
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load7 = load <2 x i64>* %34, align 8, !noalias !2721
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2721
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load7, <2 x i64>* %37, align 8, !noalias !2721
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2722
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2721
store i64 %45, i64* %44, align 8, !noalias !2721
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2723
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2721
store i64 %49, i64* %48, align 8, !noalias !2721
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2721
store i64 %52, i64* %51, align 8, !noalias !2721
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2721
store i64 %55, i64* %54, align 8, !noalias !2721
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2721
store i64 %58, i64* %57, align 8, !noalias !2721
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2724
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2707, !noalias !2714
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %6, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2707, !noalias !2714
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2707, !noalias !2714
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2707, !noalias !2714
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %4, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2714
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int18Int.Mul$LT$i32$GT$3mul20h6efcb9cffddd5e36RrfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i32 %2)
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18i32.Mul$LT$Int$GT$3mul20h15f4a93c1437c75e7xfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int18Int.Mul$LT$i32$GT$3mul20h6efcb9cffddd5e36RrfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i32 %1)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %entry-block
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %entry-block
%5 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %5
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int33i32.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h0b461a1324ed4d84ryfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = icmp eq i32 %1, 0
br i1 %4, label %then-block-20742-, label %next-block
then-block-20742-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !2725
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !2725
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !2725
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !2725
br label %clean_custom_
clean_custom_: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, %then-block-20742-
ret void
next-block: ; preds = %entry-block
%9 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %9)
%10 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%11 = load i32* %10, align 4, !alias.scope !2730, !noalias !2735
%12 = icmp eq i32 %11, 0
br i1 %12, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %next-block
%13 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %13, align 8, !alias.scope !2737, !noalias !2742
%14 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %14, align 8, !alias.scope !2737, !noalias !2742
%15 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %15, align 4, !alias.scope !2737, !noalias !2742
%16 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %16, align 8, !alias.scope !2737, !noalias !2742
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %next-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%17 = icmp slt i32 %11, 0
%18 = sub i32 0, %11
%sret_slot.0.i.i25.i = select i1 %17, i32 %18, i32 %11
%19 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %19, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%20 = zext i32 %sret_slot.0.i.i25.i to i64
%21 = shl nuw nsw i64 %20, 3
%22 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %21), !noalias !2743
%23 = ptrtoint i8* %22 to i64
%24 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%25 = load %"ll::limb::Limb"** %24, align 8, !alias.scope !2746, !noalias !2735
%26 = bitcast %"ll::limb::Limb"* %25 to i8*
%27 = bitcast i8* %22 to %"ll::limb::Limb"*
%28 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %28, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%29 = add i32 %sret_slot.0.i.i25.i, -1
%30 = zext i32 %29 to i64
%31 = add nuw nsw i64 %30, 1
%end.idx = add nuw nsw i64 %30, 1
%n.vec = and i64 %31, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%32 = add i32 %sret_slot.0.i.i25.i, -1
%33 = zext i32 %32 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep5 = getelementptr %"ll::limb::Limb"* %25, i64 %33
%scevgep56 = bitcast %"ll::limb::Limb"* %scevgep5 to i8*
%bound0 = icmp ule i8* %22, %scevgep56
%34 = shl nuw nsw i64 %33, 3
%scevgep = getelementptr i8* %22, i64 %34
%bound1 = icmp ule i8* %26, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%35 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %index, i32 0
%36 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %index, i32 0
%37 = bitcast i64* %35 to <2 x i64>*
%wide.load = load <2 x i64>* %37, align 8, !noalias !2749
%38 = getelementptr i64* %35, i64 2
%39 = bitcast i64* %38 to <2 x i64>*
%wide.load8 = load <2 x i64>* %39, align 8, !noalias !2749
%40 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %40, align 8, !noalias !2749
%41 = getelementptr i64* %36, i64 2
%42 = bitcast i64* %41 to <2 x i64>*
store <2 x i64> %wide.load8, <2 x i64>* %42, align 8, !noalias !2749
%index.next = add i64 %index, 4
%43 = icmp eq i64 %index.next, %n.vec
br i1 %43, label %middle.block.loopexit, label %vector.body, !llvm.loop !2750
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%44 = trunc i64 %resume.val to i32
%45 = sub i32 %sret_slot.0.i.i25.i, %44
%46 = add i32 %sret_slot.0.i.i25.i, -1
%47 = sub i32 %46, %44
%xtraiter = and i32 %45, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%48 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.i.i.prol, i32 0
%49 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.i.i.prol, i32 0
%50 = load i64* %48, align 8, !noalias !2749
store i64 %50, i64* %49, align 8, !noalias !2749
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %29
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2751
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%51 = icmp ult i32 %47, 3
br i1 %51, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%52 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.i.i, i32 0
%53 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.i.i, i32 0
%54 = load i64* %52, align 8, !noalias !2749
store i64 %54, i64* %53, align 8, !noalias !2749
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%55 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i, i32 0
%56 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i, i32 0
%57 = load i64* %55, align 8, !noalias !2749
store i64 %57, i64* %56, align 8, !noalias !2749
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%58 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i.1, i32 0
%59 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i.1, i32 0
%60 = load i64* %58, align 8, !noalias !2749
store i64 %60, i64* %59, align 8, !noalias !2749
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%61 = getelementptr inbounds %"ll::limb::Limb"* %25, i64 %indvars.iv.next.i.i.2, i32 0
%62 = getelementptr inbounds %"ll::limb::Limb"* %27, i64 %indvars.iv.next.i.i.2, i32 0
%63 = load i64* %61, align 8, !noalias !2749
store i64 %63, i64* %62, align 8, !noalias !2749
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %29
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2752
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %23, %normal-return3.i ], [ 1, %next-block.i ], [ %23, %middle.block ], [ %23, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2735, !noalias !2742
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %11, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2735, !noalias !2742
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2735, !noalias !2742
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2735, !noalias !2742
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %9, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2742
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int18Int.Mul$LT$i32$GT$3mul20h6efcb9cffddd5e36RrfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i32 %1)
call void @llvm.lifetime.end(i64 24, i8* %9)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Div$LT$i32$GT$3div20h931f71ce23c0f6f00yfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = icmp eq i32 %2, 0
br i1 %4, label %then-block-20775-, label %next-block
then-block-20775-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%5 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %5)
%6 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%7 = load i32* %6, align 4, !alias.scope !2753, !noalias !2758
%8 = icmp eq i32 %7, 0
br i1 %8, label %then-block-15139-.i, label %next-block.i
then-block-15139-.i: ; preds = %next-block
%9 = bitcast %"int::Int"* %3 to i64*
store i64 1, i64* %9, align 8, !alias.scope !2760, !noalias !2765
%10 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 0, i32* %10, align 8, !alias.scope !2760, !noalias !2765
%11 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 0, i32* %11, align 4, !alias.scope !2760, !noalias !2765
%12 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %12, align 8, !alias.scope !2760, !noalias !2765
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
next-block.i: ; preds = %next-block
%new.sroa.16.0..sroa_idx36.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
%13 = icmp slt i32 %7, 0
%14 = sub i32 0, %7
%sret_slot.0.i.i25.i = select i1 %13, i32 %14, i32 %7
%15 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %15, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%16 = zext i32 %sret_slot.0.i.i25.i to i64
%17 = shl nuw nsw i64 %16, 3
%18 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %17), !noalias !2766
%19 = ptrtoint i8* %18 to i64
%20 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%21 = load %"ll::limb::Limb"** %20, align 8, !alias.scope !2769, !noalias !2758
%22 = bitcast %"ll::limb::Limb"* %21 to i8*
%23 = bitcast i8* %18 to %"ll::limb::Limb"*
%24 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %24, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%25 = add i32 %sret_slot.0.i.i25.i, -1
%26 = zext i32 %25 to i64
%27 = add nuw nsw i64 %26, 1
%end.idx = add nuw nsw i64 %26, 1
%n.vec = and i64 %27, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%28 = add i32 %sret_slot.0.i.i25.i, -1
%29 = zext i32 %28 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep5 = getelementptr %"ll::limb::Limb"* %21, i64 %29
%scevgep56 = bitcast %"ll::limb::Limb"* %scevgep5 to i8*
%bound0 = icmp ule i8* %18, %scevgep56
%30 = shl nuw nsw i64 %29, 3
%scevgep = getelementptr i8* %18, i64 %30
%bound1 = icmp ule i8* %22, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%31 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %index, i32 0
%32 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %index, i32 0
%33 = bitcast i64* %31 to <2 x i64>*
%wide.load = load <2 x i64>* %33, align 8, !noalias !2772
%34 = getelementptr i64* %31, i64 2
%35 = bitcast i64* %34 to <2 x i64>*
%wide.load8 = load <2 x i64>* %35, align 8, !noalias !2772
%36 = bitcast i64* %32 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %36, align 8, !noalias !2772
%37 = getelementptr i64* %32, i64 2
%38 = bitcast i64* %37 to <2 x i64>*
store <2 x i64> %wide.load8, <2 x i64>* %38, align 8, !noalias !2772
%index.next = add i64 %index, 4
%39 = icmp eq i64 %index.next, %n.vec
br i1 %39, label %middle.block.loopexit, label %vector.body, !llvm.loop !2773
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%40 = trunc i64 %resume.val to i32
%41 = sub i32 %sret_slot.0.i.i25.i, %40
%42 = add i32 %sret_slot.0.i.i25.i, -1
%43 = sub i32 %42, %40
%xtraiter = and i32 %41, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%44 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.i.i.prol, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.i.i.prol, i32 0
%46 = load i64* %44, align 8, !noalias !2772
store i64 %46, i64* %45, align 8, !noalias !2772
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %25
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2774
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%47 = icmp ult i32 %43, 3
br i1 %47, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%48 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.i.i, i32 0
%49 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.i.i, i32 0
%50 = load i64* %48, align 8, !noalias !2772
store i64 %50, i64* %49, align 8, !noalias !2772
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%51 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i, i32 0
%52 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i, i32 0
%53 = load i64* %51, align 8, !noalias !2772
store i64 %53, i64* %52, align 8, !noalias !2772
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%54 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i.1, i32 0
%55 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i.1, i32 0
%56 = load i64* %54, align 8, !noalias !2772
store i64 %56, i64* %55, align 8, !noalias !2772
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%57 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i.2, i32 0
%58 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 %indvars.iv.next.i.i.2, i32 0
%59 = load i64* %57, align 8, !noalias !2772
store i64 %59, i64* %58, align 8, !noalias !2772
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %25
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2775
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %19, %normal-return3.i ], [ 1, %next-block.i ], [ %19, %middle.block ], [ %19, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0..sroa_cast27.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %new.sroa.0.0..sroa_cast27.i, align 8, !alias.scope !2758, !noalias !2765
%new.sroa.8.0..sroa_idx29.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %7, i32* %new.sroa.8.0..sroa_idx29.i, align 8, !alias.scope !2758, !noalias !2765
%new.sroa.11.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %.sink.i41.i, i32* %new.sroa.11.0..sroa_idx31.i, align 4, !alias.scope !2758, !noalias !2765
%new.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %new.sroa.14.0..sroa_idx.i, align 8, !alias.scope !2758, !noalias !2765
%new.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %5, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %new.sroa.16.0..sroa_raw_idx.i, i8* %new.sroa.16.0..sroa_idx36.i, i64 7, i32 1, i1 false), !noalias !2765
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.0..sroa_idx36.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %then-block-15139-.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
call void @"_ZN3int18Int.Div$LT$i32$GT$3div20hff388f76bef35600btfE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, i32 %2)
call void @llvm.lifetime.end(i64 24, i8* %5)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%3 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%4 = icmp eq i32 %1, 0
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
br i1 %4, label %then-block-20810-, label %next-block
then-block-20810-: ; preds = %entry-block
store i32 0, i32* %5, align 4
%6 = bitcast %"int::Int"* %2 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-20810-, %normal-return5
%8 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
next-block: ; preds = %entry-block
%9 = load i32* %5, align 4, !alias.scope !2776
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-20825-, label %next-block.i
unwind_custom_: ; preds = %next-block.i, %normal-return4
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14
cond.i12: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !2779
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14, label %then-block-15297-.i.i13
then-block-15297-.i.i13: ; preds = %cond.i12
%18 = bitcast %"int::Int"* %2 to i8**
%19 = load i8** %18, align 8, !alias.scope !2782
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !2779
store i32 0, i32* %5, align 4, !alias.scope !2779
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14: ; preds = %unwind_custom_, %cond.i12, %then-block-15297-.i.i13
%22 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
then-block-20825-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %next-block
%23 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %23)
%24 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return4 unwind label %unwind_custom_
normal-return4: ; preds = %next-block.i
%25 = icmp slt i32 %1, 0
%26 = sub i32 0, %1
%sret_slot.0.i.i = select i1 %25, i32 %26, i32 %1
%27 = sext i32 %sret_slot.0.i.i to i64
%28 = ptrtoint i8* %24 to i64
%limb.sroa.0.0..sroa_idx.i.i = bitcast i8* %24 to i64*
store i64 %27, i64* %limb.sroa.0.0..sroa_idx.i.i, align 8, !noalias !2785
%29 = ashr i32 %1, 31
%30 = or i32 %29, 1
%i6.sroa.0.0..sroa_cast30.i = bitcast %"int::Int"* %3 to i64*
store i64 %28, i64* %i6.sroa.0.0..sroa_cast30.i, align 8, !alias.scope !2790
%31 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %30, i32* %31, align 8, !alias.scope !2790
%32 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %32, align 4, !alias.scope !2790
%33 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %33, align 8, !alias.scope !2790
%34 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %34)
%35 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %34, i8* %35, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %35, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int18Int.Div$LT$Int$GT$3div20h1633d9a6bb8c8a8awReE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg)
to label %normal-return5 unwind label %unwind_custom_
normal-return5: ; preds = %normal-return4
call void @llvm.lifetime.end(i64 24, i8* %34)
call void @llvm.lifetime.end(i64 24, i8* %23)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int33i32.Div$LT$$RF$$u27$a$u20$Int$GT$3div20h1341210c9c913a84jAfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%arg.i = alloca %"int::Int", align 8
%.sroa.23 = alloca [7 x i8], align 1
%4 = icmp eq i32 %1, 0
br i1 %4, label %then-block-20858-, label %next-block
then-block-20858-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !2791
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !2791
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !2791
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !2791
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE.exit", %then-block-20858-
ret void
next-block: ; preds = %entry-block
%9 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%10 = load i32* %9, align 4, !alias.scope !2796
%11 = icmp eq i32 %10, 0
br i1 %11, label %then-block-20868-, label %next-block.i7
then-block-20868-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i7: ; preds = %next-block
%.sroa.23.0..sroa_idx42 = getelementptr inbounds [7 x i8]* %.sroa.23, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.23.0..sroa_idx42)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %10, 0
%13 = sub i32 0, %10
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %10
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %next-block.i.thread48, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i7
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2799
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2805, !noalias !2808
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %next-block.i.thread48
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep52 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5253 = bitcast %"ll::limb::Limb"* %scevgep52 to i8*
%bound0 = icmp ule i8* %17, %scevgep5253
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2809
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load55 = load <2 x i64>* %34, align 8, !noalias !2809
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2809
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load55, <2 x i64>* %37, align 8, !noalias !2809
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2810
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %next-block.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2809
store i64 %45, i64* %44, align 8, !noalias !2809
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2811
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %next-block.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2809
store i64 %49, i64* %48, align 8, !noalias !2809
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2809
store i64 %52, i64* %51, align 8, !noalias !2809
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2809
store i64 %55, i64* %54, align 8, !noalias !2809
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2809
store i64 %58, i64* %57, align 8, !noalias !2809
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %next-block.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2812
next-block.i.thread48: ; preds = %normal-return3.i, %next-block.i7
%.sink.i41.i.ph = phi i32 [ 0, %next-block.i7 ], [ %sret_slot.0.i.i25.i, %normal-return3.i ]
%new.sroa.0.0.3940.i.ph = phi i64 [ 1, %next-block.i7 ], [ %18, %normal-return3.i ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %next-block.i.i
next-block.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %next-block.i.loopexit
next-block.i.loopexit: ; preds = %while_body.i.i.preheader.split, %next-block.i.loopexit.unr-lcssa
br label %next-block.i
next-block.i: ; preds = %next-block.i.loopexit, %middle.block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %next-block.i.i
cond.i12.i: ; preds = %next-block.i.i
%59 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%60 = icmp eq i32 %65, 0
br i1 %60, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i, label %then-block-15297-.i.i13.i
then-block-15297-.i.i13.i: ; preds = %cond.i12.i
%61 = inttoptr i64 %new.sroa.0.0.3940.i454649 to i8*
%62 = zext i32 %65 to i64
%63 = shl nuw nsw i64 %62, 3
tail call void @je_sdallocx(i8* %61, i64 %63, i32 0), !noalias !2813
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i: ; preds = %unwind_custom_.i.thread51, %then-block-15297-.i.i13.i, %cond.i12.i
%64 = phi { i8*, i32 } [ %59, %then-block-15297-.i.i13.i ], [ %59, %cond.i12.i ], [ %78, %unwind_custom_.i.thread51 ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
resume { i8*, i32 } %64
next-block.i.i: ; preds = %next-block.i, %next-block.i.thread48
%65 = phi i32 [ %.sink.i41.i.ph, %next-block.i.thread48 ], [ %sret_slot.0.i.i25.i, %next-block.i ]
%new.sroa.0.0.3940.i454649 = phi i64 [ %new.sroa.0.0.3940.i.ph, %next-block.i.thread48 ], [ %18, %next-block.i ]
%66 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %66), !noalias !2813
%67 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return4.i unwind label %cond.i12.i, !noalias !2813
normal-return4.i: ; preds = %next-block.i.i
%68 = icmp slt i32 %1, 0
%69 = sub i32 0, %1
%sret_slot.0.i.i.i = select i1 %68, i32 %69, i32 %1
%70 = sext i32 %sret_slot.0.i.i.i to i64
%71 = ptrtoint i8* %67 to i64
%limb.sroa.0.0..sroa_idx.i.i.i = bitcast i8* %67 to i64*
store i64 %70, i64* %limb.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !2817
%72 = ashr i32 %1, 31
%73 = or i32 %72, 1
%i6.sroa.0.0..sroa_cast30.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %71, i64* %i6.sroa.0.0..sroa_cast30.i.i, align 8, !alias.scope !2822, !noalias !2813
%74 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %73, i32* %74, align 8, !alias.scope !2822, !noalias !2813
%75 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %75, align 4, !alias.scope !2822, !noalias !2813
%76 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %76, align 8, !alias.scope !2822, !noalias !2813
%77 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %77), !noalias !2813
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i454649, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.11.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %10, i32* %.sroa.11.0..sroa_idx16, align 8
%.sroa.16.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %65, i32* %.sroa.16.0..sroa_idx22, align 4
%.sroa.20.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.20.0..sroa_idx26, align 8
%.sroa.23.0..sroa_raw_idx33 = getelementptr inbounds i8* %77, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_raw_idx33, i8* %.sroa.23.0..sroa_idx42, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int18Int.Div$LT$Int$GT$3div20h1633d9a6bb8c8a8awReE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i)
to label %"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE.exit" unwind label %unwind_custom_.i.thread51, !noalias !2823
unwind_custom_.i.thread51: ; preds = %normal-return4.i
%78 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i
"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE.exit": ; preds = %normal-return4.i
call void @llvm.lifetime.end(i64 24, i8* %77), !noalias !2813
call void @llvm.lifetime.end(i64 24, i8* %66), !noalias !2813
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int34_$RF$$u27$a$u20$Int.Rem$LT$i32$GT$3rem20h6dc62612b5c326772AfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i32) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%arg.sroa.11.i.sroa.9 = alloca [7 x i8], align 1
%.sroa.18 = alloca [7 x i8], align 1
%3 = icmp eq i32 %2, 0
br i1 %3, label %then-block-20901-, label %next-block
then-block-20901-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !2824
%6 = icmp eq i32 %5, 0
%7 = icmp eq i32 %2, 1
%. = or i1 %7, %6
br i1 %., label %then-block-20915-, label %next-block.i
then-block-20915-: ; preds = %next-block
%8 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %8, align 8, !alias.scope !2827
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !2827
%10 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !2827
%11 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !2827
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE.exit", %then-block-20915-
ret void
next-block.i: ; preds = %next-block
%.sroa.18.0..sroa_idx45 = getelementptr inbounds [7 x i8]* %.sroa.18, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.18.0..sroa_idx45)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %5, 0
%13 = sub i32 0, %5
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %5
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2832
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2838, !noalias !2841
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep52 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5253 = bitcast %"ll::limb::Limb"* %scevgep52 to i8*
%bound0 = icmp ule i8* %17, %scevgep5253
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2842
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load55 = load <2 x i64>* %34, align 8, !noalias !2842
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2842
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load55, <2 x i64>* %37, align 8, !noalias !2842
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2843
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2842
store i64 %45, i64* %44, align 8, !noalias !2842
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2844
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2842
store i64 %49, i64* %48, align 8, !noalias !2842
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2842
store i64 %52, i64* %51, align 8, !noalias !2842
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2842
store i64 %55, i64* %54, align 8, !noalias !2842
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2842
store i64 %58, i64* %57, align 8, !noalias !2842
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2845
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, %middle.block, %next-block.i, %normal-return3.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_idx45, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
switch i32 %2, label %next-block5.i [
i32 0, label %then-block-20491-.i
i32 -1, label %then-block-20510-.i
i32 1, label %then-block-20510-.i
]
then-block-20491-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2846
unreachable
then-block-20510-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.9.0..sroa_idx11 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.9.0..sroa_idx11, align 8
%.sroa.13.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %.sroa.13.0..sroa_idx14, align 4
%.sroa.16.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.16.0..sroa_idx, align 8
%.sroa.18.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.18.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.18.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.18.0..sroa_raw_idx, i8* %.sroa.18.0..sroa_idx45, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx45, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE.exit"
next-block5.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%59 = sext i32 %2 to i64
%arg.sroa.11.i.sroa.9.0..sroa_idx37 = getelementptr inbounds [7 x i8]* %arg.sroa.11.i.sroa.9, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37)
%60 = inttoptr i64 %new.sroa.0.0.3940.i to %"ll::limb::Limb"*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37, i8* %.sroa.18.0..sroa_idx45, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.18.0..sroa_idx45, i8 29, i64 7, i32 1, i1 false)
switch i64 %59, label %join.lr.ph.i.i.i [
i64 0, label %then-block-17821-.i.i
i64 1, label %then-block-17835-.i.i
]
then-block-17821-.i.i: ; preds = %next-block5.i
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2850
unreachable
then-block-17835-.i.i: ; preds = %next-block5.i
%arg.sroa.0.0..sroa_idx21.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %60, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21.i, align 8, !alias.scope !2854, !noalias !2855
%arg.sroa.9.0..sroa_idx28.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %5, i32* %arg.sroa.9.0..sroa_idx28.i, align 8, !alias.scope !2854, !noalias !2855
%arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast37.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast37.i.sroa_idx, align 4
%arg.sroa.11.i.sroa.8.0.arg.sroa.11.0..sroa_cast37.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %arg.sroa.11.i.sroa.8.0.arg.sroa.11.0..sroa_cast37.i.sroa_idx, align 8
%arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast37.i.sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast37.i.sroa_raw_idx = getelementptr inbounds i8* %arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast37.i.sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast37.i.sroa_raw_idx, i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37, i8 29, i64 7, i32 1, i1 false)
br label %normal-return6.i
join.lr.ph.i.i.i: ; preds = %next-block5.i
%61 = icmp slt i32 %5, 0
%62 = sub i32 0, %5
%sret_slot.0.i.i.i.i = select i1 %61, i32 %62, i32 %5
%63 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %60, i32 0, %"ll::limb::Limb"* %60, i32 %sret_slot.0.i.i.i.i, i64 %59), !noalias !2850
%64 = ashr i32 %5, 31
%65 = or i32 %64, 1
br label %join.i.i.i
while_body.i.i.i: ; preds = %join.i.i.i
%66 = sub i32 %arg.sroa.9.0.copyload50.i, %65
%67 = icmp eq i32 %arg.sroa.9.0.copyload50.i, %65
br i1 %67, label %normal-return9.i.i, label %join.i.i.i
join.i.i.i: ; preds = %while_body.i.i.i, %join.lr.ph.i.i.i
%arg.sroa.9.0.copyload50.i = phi i32 [ %5, %join.lr.ph.i.i.i ], [ %66, %while_body.i.i.i ]
%68 = icmp slt i32 %arg.sroa.9.0.copyload50.i, 0
%69 = sub i32 0, %arg.sroa.9.0.copyload50.i
%sret_slot.0.i.i.i.i.i = select i1 %68, i32 %69, i32 %arg.sroa.9.0.copyload50.i
%70 = add i32 %sret_slot.0.i.i.i.i.i, -1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds %"ll::limb::Limb"* %60, i64 %71, i32 0
%73 = load i64* %72, align 8, !alias.scope !2856, !noalias !2859
%74 = icmp eq i64 %73, 0
br i1 %74, label %while_body.i.i.i, label %normal-return9.i.i
normal-return9.i.i: ; preds = %join.i.i.i, %while_body.i.i.i
%arg.sroa.9.0.copyload51.i = phi i32 [ %arg.sroa.9.0.copyload50.i, %join.i.i.i ], [ %66, %while_body.i.i.i ]
%arg.sroa.0.0..sroa_idx24.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %60, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx24.i, align 8, !alias.scope !2854, !noalias !2855
%arg.sroa.9.0..sroa_idx31.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload51.i, i32* %arg.sroa.9.0..sroa_idx31.i, align 8, !alias.scope !2854, !noalias !2855
%arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast42.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast42.i.sroa_idx, align 4
%arg.sroa.11.i.sroa.8.0.arg.sroa.11.0..sroa_cast42.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %arg.sroa.11.i.sroa.8.0.arg.sroa.11.0..sroa_cast42.i.sroa_idx, align 8
%arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast42.i.sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast42.i.sroa_raw_idx = getelementptr inbounds i8* %arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast42.i.sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.9.0.arg.sroa.11.0..sroa_cast42.i.sroa_raw_idx, i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37, i8 29, i64 7, i32 1, i1 false)
br label %normal-return6.i
normal-return6.i: ; preds = %normal-return9.i.i, %then-block-17835-.i.i
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37)
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.9.0..sroa_idx37)
br label %"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE.exit"
"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE.exit": ; preds = %then-block-20510-.i, %normal-return6.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx45)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.18.0..sroa_idx45)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%3 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%4 = icmp eq i32 %1, 0
%.pre = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
br i1 %4, label %then-block-20954-, label %before_rhs
before_rhs: ; preds = %entry-block
%5 = load i32* %.pre, align 4, !alias.scope !2863, !noalias !2868
switch i32 %5, label %next-block.i [
i32 1, label %before_rhs2.i.i
i32 0, label %then-block-20969-
]
before_rhs2.i.i: ; preds = %before_rhs
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8, !alias.scope !2870, !noalias !2875
%8 = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%9 = load i64* %8, align 8, !alias.scope !2877, !noalias !2880
%10 = icmp eq i64 %9, 1
br i1 %10, label %then-block-20954-, label %next-block.i
unwind_custom_: ; preds = %next-block.i, %normal-return5
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !2882
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%18 = bitcast %"int::Int"* %2 to i8**
%19 = load i8** %18, align 8, !alias.scope !2885
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !2882
store i32 0, i32* %.pre, align 4, !alias.scope !2882
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%22 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
then-block-20954-: ; preds = %entry-block, %before_rhs2.i.i
store i32 0, i32* %.pre, align 4
%23 = bitcast %"int::Int"* %2 to i8*
%24 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %23, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %23, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16: ; preds = %then-block-20954-, %normal-return6
%25 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %25)
ret void
then-block-20969-: ; preds = %before_rhs
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %before_rhs, %before_rhs2.i.i
%26 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %26)
%27 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return5 unwind label %unwind_custom_
normal-return5: ; preds = %next-block.i
%28 = icmp slt i32 %1, 0
%29 = sub i32 0, %1
%sret_slot.0.i.i = select i1 %28, i32 %29, i32 %1
%30 = sext i32 %sret_slot.0.i.i to i64
%31 = ptrtoint i8* %27 to i64
%limb.sroa.0.0..sroa_idx.i.i = bitcast i8* %27 to i64*
store i64 %30, i64* %limb.sroa.0.0..sroa_idx.i.i, align 8, !noalias !2888
%32 = ashr i32 %1, 31
%33 = or i32 %32, 1
%i6.sroa.0.0..sroa_cast30.i = bitcast %"int::Int"* %3 to i64*
store i64 %31, i64* %i6.sroa.0.0..sroa_cast30.i, align 8, !alias.scope !2893
%34 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %33, i32* %34, align 8, !alias.scope !2893
%35 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %35, align 4, !alias.scope !2893
%36 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %36, align 8, !alias.scope !2893
%37 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %37)
%38 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %37, i8* %38, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %38, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int18Int.Rem$LT$Int$GT$3rem20h360830dc24e586ceHWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg)
to label %normal-return6 unwind label %unwind_custom_
normal-return6: ; preds = %normal-return5
call void @llvm.lifetime.end(i64 24, i8* %37)
call void @llvm.lifetime.end(i64 24, i8* %26)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int33i32.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20hb618c4056a3cb13eDCfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%arg.i = alloca %"int::Int", align 8
%.sroa.24 = alloca [7 x i8], align 1
%4 = icmp eq i32 %1, 0
br i1 %4, label %then-block-21002-, label %next-block
then-block-21002-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !2894
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !2894
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !2894
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !2894
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE.exit", %then-block-21002-
ret void
next-block: ; preds = %entry-block
%9 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%10 = load i32* %9, align 4, !alias.scope !2899
%11 = icmp eq i32 %10, 0
br i1 %11, label %then-block-21012-, label %next-block.i
then-block-21012-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %next-block
%.sroa.24.0..sroa_idx44 = getelementptr inbounds [7 x i8]* %.sroa.24, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.24.0..sroa_idx44)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %10, 0
%13 = sub i32 0, %10
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %10
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !2902
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !2908, !noalias !2911
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep53 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5354 = bitcast %"ll::limb::Limb"* %scevgep53 to i8*
%bound0 = icmp ule i8* %17, %scevgep5354
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !2912
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load56 = load <2 x i64>* %34, align 8, !noalias !2912
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !2912
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load56, <2 x i64>* %37, align 8, !noalias !2912
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !2913
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !2912
store i64 %45, i64* %44, align 8, !noalias !2912
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2914
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !2912
store i64 %49, i64* %48, align 8, !noalias !2912
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !2912
store i64 %52, i64* %51, align 8, !noalias !2912
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !2912
store i64 %55, i64* %54, align 8, !noalias !2912
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !2912
store i64 %58, i64* %57, align 8, !noalias !2912
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2915
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50: ; preds = %next-block.i, %normal-return3.i
%.sink.i41.i.ph = phi i32 [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %normal-return3.i ]
%new.sroa.0.0.3940.i.ph = phi i64 [ 1, %next-block.i ], [ %18, %normal-return3.i ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %before_rhs.i
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, %middle.block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %before_rhs.i
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50
%.sroa.0.0.4748 = phi i64 [ %18, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit ], [ %new.sroa.0.0.3940.i.ph, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50 ]
%59 = phi i32 [ %sret_slot.0.i.i25.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit ], [ %.sink.i41.i.ph, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50 ]
switch i32 %10, label %next-block.i.i [
i32 1, label %before_rhs2.i.i.i
i32 0, label %then-block-20969-.i
]
before_rhs2.i.i.i: ; preds = %before_rhs.i
%60 = inttoptr i64 %.sroa.0.0.4748 to %"ll::limb::Limb"*
%61 = getelementptr inbounds %"ll::limb::Limb"* %60, i64 0, i32 0
%62 = load i64* %61, align 8, !alias.scope !2916, !noalias !2919
%63 = icmp eq i64 %62, 1
br i1 %63, label %then-block-20954-.i, label %next-block.i.i
cond.i.i: ; preds = %next-block.i.i
%64 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%65 = icmp eq i32 %59, 0
br i1 %65, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %then-block-15297-.i.i.i
then-block-15297-.i.i.i: ; preds = %cond.i.i
%66 = inttoptr i64 %.sroa.0.0.4748 to i8*
%67 = zext i32 %59 to i64
%68 = shl nuw nsw i64 %67, 3
tail call void @je_sdallocx(i8* %66, i64 %68, i32 0), !noalias !2930
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %unwind_custom_.i.thread52, %then-block-15297-.i.i.i, %cond.i.i
%69 = phi { i8*, i32 } [ %64, %then-block-15297-.i.i.i ], [ %64, %cond.i.i ], [ %82, %unwind_custom_.i.thread52 ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
resume { i8*, i32 } %69
then-block-20954-.i: ; preds = %before_rhs2.i.i.i
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %0 to i64*
store i64 %.sroa.0.0.4748, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.17.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %59, i32* %.sroa.17.0..sroa_idx22, align 4
%.sroa.21.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.21.0..sroa_idx, align 8
%.sroa.24.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.24.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.24.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_raw_idx, i8* %.sroa.24.0..sroa_idx44, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE.exit"
then-block-20969-.i: ; preds = %before_rhs.i
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !2930
unreachable
next-block.i.i: ; preds = %before_rhs2.i.i.i, %before_rhs.i
%70 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %70), !noalias !2930
%71 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return5.i unwind label %cond.i.i, !noalias !2930
normal-return5.i: ; preds = %next-block.i.i
%72 = icmp slt i32 %1, 0
%73 = sub i32 0, %1
%sret_slot.0.i.i.i = select i1 %72, i32 %73, i32 %1
%74 = sext i32 %sret_slot.0.i.i.i to i64
%75 = ptrtoint i8* %71 to i64
%limb.sroa.0.0..sroa_idx.i.i.i = bitcast i8* %71 to i64*
store i64 %74, i64* %limb.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !2931
%76 = ashr i32 %1, 31
%77 = or i32 %76, 1
%i6.sroa.0.0..sroa_cast30.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %75, i64* %i6.sroa.0.0..sroa_cast30.i.i, align 8, !alias.scope !2936, !noalias !2930
%78 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %77, i32* %78, align 8, !alias.scope !2936, !noalias !2930
%79 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %79, align 4, !alias.scope !2936, !noalias !2930
%80 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %80, align 8, !alias.scope !2936, !noalias !2930
%81 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %81), !noalias !2930
%.sroa.0.0..sroa_cast12 = bitcast %"int::Int"* %arg.i to i64*
store i64 %.sroa.0.0.4748, i64* %.sroa.0.0..sroa_cast12, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %10, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.17.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %59, i32* %.sroa.17.0..sroa_idx24, align 4
%.sroa.21.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.21.0..sroa_idx28, align 8
%.sroa.24.0..sroa_raw_idx35 = getelementptr inbounds i8* %81, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_raw_idx35, i8* %.sroa.24.0..sroa_idx44, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int18Int.Rem$LT$Int$GT$3rem20h360830dc24e586ceHWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i)
to label %normal-return6.i unwind label %unwind_custom_.i.thread52, !noalias !2937
unwind_custom_.i.thread52: ; preds = %normal-return5.i
%82 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
normal-return6.i: ; preds = %normal-return5.i
call void @llvm.lifetime.end(i64 24, i8* %81), !noalias !2930
call void @llvm.lifetime.end(i64 24, i8* %70), !noalias !2930
br label %"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE.exit"
"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE.exit": ; preds = %then-block-20954-.i, %normal-return6.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-21045-, label %next-block
then-block-21045-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %1 to i8*
%5 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21045-, %normal-return
%6 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
next-block: ; preds = %entry-block
%7 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %7)
%8 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %8, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %2)
to label %normal-return unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
normal-return: ; preds = %next-block
call void @llvm.lifetime.end(i64 24, i8* %7)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %next-block
%9 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %8)
resume { i8*, i32 } %9
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-21080-, label %next-block
then-block-21080-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %1 to i8*
%5 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21080-, %normal-return
%6 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
next-block: ; preds = %entry-block
%7 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %7)
%8 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %8, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %8, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %2)
to label %normal-return unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11
normal-return: ; preds = %next-block
call void @llvm.lifetime.end(i64 24, i8* %7)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11: ; preds = %next-block
%9 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %8)
resume { i8*, i32 } %9
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg = alloca %"int::Int", align 8
switch i64 %2, label %before_rhs [
i64 0, label %then-block-21115-
i64 1, label %then-block-21134-
]
then-block-21115-: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
store i32 0, i32* %3, align 4
%4 = bitcast %"int::Int"* %1 to i8*
%5 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21115-, %then-block-21134-, %normal-return3
%6 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %6)
ret void
before_rhs: ; preds = %entry-block
%7 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%8 = load i32* %7, align 4, !alias.scope !2938
%9 = icmp eq i32 %8, 0
br i1 %9, label %then-block-21134-, label %next-block2
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15: ; preds = %next-block2
%10 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
tail call void @llvm.lifetime.end(i64 24, i8* %14)
resume { i8*, i32 } %10
then-block-21134-: ; preds = %entry-block, %before_rhs
%11 = bitcast %"int::Int"* %1 to i8*
%12 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %12, i8* %11, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %11, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block2: ; preds = %before_rhs
%13 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %13)
%14 = bitcast %"int::Int"* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %13, i8* %14, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %14, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg, i64 %2)
to label %normal-return3 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15
normal-return3: ; preds = %next-block2
call void @llvm.lifetime.end(i64 24, i8* %13)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.sroa.11 = alloca [12 x i8], align 4
switch i64 %2, label %before_rhs [
i64 0, label %then-block-21169-
i64 1, label %then-block-21183-
]
then-block-21169-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2941
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-21183-, label %join.lr.ph.i.i
then-block-21183-: ; preds = %entry-block, %before_rhs
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16: ; preds = %then-block-21183-, %normal-return4
%8 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
join.lr.ph.i.i: ; preds = %before_rhs
%arg.sroa.11.0..sroa_idx42 = getelementptr inbounds [12 x i8]* %arg.sroa.11, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
%9 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.11.0..sroa_idx30 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.11.0..sroa_cast = bitcast i32* %arg.sroa.11.0..sroa_idx30 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_idx42, i8* %arg.sroa.11.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %9, i8 29, i64 24, i32 8, i1 false)
%10 = icmp slt i32 %4, 0
%11 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %10, i32 %11, i32 %4
%12 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 0, %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 %sret_slot.0.i.i.i, i64 %2), !noalias !2944
%13 = ashr i32 %4, 31
%14 = or i32 %13, 1
br label %join.i.i
while_body.i.i: ; preds = %join.i.i
%15 = sub i32 %arg.sroa.9.0.copyload47, %14
%16 = icmp eq i32 %arg.sroa.9.0.copyload47, %14
br i1 %16, label %normal-return4, label %join.i.i
join.i.i: ; preds = %while_body.i.i, %join.lr.ph.i.i
%arg.sroa.9.0.copyload47 = phi i32 [ %4, %join.lr.ph.i.i ], [ %15, %while_body.i.i ]
%17 = icmp slt i32 %arg.sroa.9.0.copyload47, 0
%18 = sub i32 0, %arg.sroa.9.0.copyload47
%sret_slot.0.i.i.i.i = select i1 %17, i32 %18, i32 %arg.sroa.9.0.copyload47
%19 = add i32 %sret_slot.0.i.i.i.i, -1
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i64 %20, i32 0
%22 = load i64* %21, align 8, !alias.scope !2948, !noalias !2951
%23 = icmp eq i64 %22, 0
br i1 %23, label %while_body.i.i, label %normal-return4
normal-return4: ; preds = %while_body.i.i, %join.i.i
%arg.sroa.9.0.copyload48 = phi i32 [ %arg.sroa.9.0.copyload47, %join.i.i ], [ %15, %while_body.i.i ]
%arg.sroa.0.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21, align 8
%arg.sroa.9.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload48, i32* %arg.sroa.9.0..sroa_idx28, align 8
%arg.sroa.11.0..sroa_idx38 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.11.0..sroa_cast39 = bitcast i32* %arg.sroa.11.0..sroa_idx38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_cast39, i8* %arg.sroa.11.0..sroa_idx42, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.sroa.11 = alloca [12 x i8], align 4
switch i64 %2, label %before_rhs [
i64 0, label %then-block-21218-
i64 1, label %entry-block.then-block-21232-_crit_edge
]
entry-block.then-block-21232-_crit_edge: ; preds = %entry-block
%.pre = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
br label %then-block-21232-
then-block-21218-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
before_rhs: ; preds = %entry-block
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2955
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-21232-, label %join.lr.ph.i.i
then-block-21232-: ; preds = %entry-block.then-block-21232-_crit_edge, %before_rhs
%.pre-phi = phi i32* [ %.pre, %entry-block.then-block-21232-_crit_edge ], [ %3, %before_rhs ]
store i32 0, i32* %.pre-phi, align 4
%6 = bitcast %"int::Int"* %1 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16: ; preds = %then-block-21232-, %normal-return4
%8 = bitcast %"int::Int"* %1 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
join.lr.ph.i.i: ; preds = %before_rhs
%arg.sroa.11.0..sroa_idx42 = getelementptr inbounds [12 x i8]* %arg.sroa.11, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
%9 = bitcast %"int::Int"* %1 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.11.0..sroa_idx30 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 2
%arg.sroa.11.0..sroa_cast = bitcast i32* %arg.sroa.11.0..sroa_idx30 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_idx42, i8* %arg.sroa.11.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %9, i8 29, i64 24, i32 8, i1 false)
%10 = icmp slt i32 %4, 0
%11 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %10, i32 %11, i32 %4
%12 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 0, %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i32 %sret_slot.0.i.i.i, i64 %2), !noalias !2958
%13 = ashr i32 %4, 31
%14 = or i32 %13, 1
br label %join.i.i
while_body.i.i: ; preds = %join.i.i
%15 = sub i32 %arg.sroa.9.0.copyload47, %14
%16 = icmp eq i32 %arg.sroa.9.0.copyload47, %14
br i1 %16, label %normal-return4, label %join.i.i
join.i.i: ; preds = %while_body.i.i, %join.lr.ph.i.i
%arg.sroa.9.0.copyload47 = phi i32 [ %4, %join.lr.ph.i.i ], [ %15, %while_body.i.i ]
%17 = icmp slt i32 %arg.sroa.9.0.copyload47, 0
%18 = sub i32 0, %arg.sroa.9.0.copyload47
%sret_slot.0.i.i.i.i = select i1 %17, i32 %18, i32 %arg.sroa.9.0.copyload47
%19 = add i32 %sret_slot.0.i.i.i.i, -1
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds %"ll::limb::Limb"* %arg.sroa.0.0.copyload, i64 %20, i32 0
%22 = load i64* %21, align 8, !alias.scope !2962, !noalias !2965
%23 = icmp eq i64 %22, 0
br i1 %23, label %while_body.i.i, label %normal-return4
normal-return4: ; preds = %while_body.i.i, %join.i.i
%arg.sroa.9.0.copyload48 = phi i32 [ %arg.sroa.9.0.copyload47, %join.i.i ], [ %15, %while_body.i.i ]
%arg.sroa.0.0..sroa_idx21 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21, align 8
%arg.sroa.9.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload48, i32* %arg.sroa.9.0..sroa_idx28, align 8
%arg.sroa.11.0..sroa_idx38 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.11.0..sroa_cast39 = bitcast i32* %arg.sroa.11.0..sroa_idx38 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.0..sroa_cast39, i8* %arg.sroa.11.0..sroa_idx42, i64 12, i32 4, i1 false)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.11.0..sroa_idx42)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Add$LT$usize$GT$3add20heec1351e99798e6b1GfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.16 = alloca [7 x i8], align 1
%.sroa.16.0..sroa_idx35 = getelementptr inbounds [7 x i8]* %.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.16.0..sroa_idx35)
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2969, !noalias !2974
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !2976
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !2979, !noalias !2974
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep42 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep4243 = bitcast %"ll::limb::Limb"* %scevgep42 to i8*
%bound0 = icmp ule i8* %11, %scevgep4243
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !2982
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load45 = load <2 x i64>* %28, align 8, !noalias !2982
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !2982
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load45, <2 x i64>* %31, align 8, !noalias !2982
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !2983
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !2982
store i64 %39, i64* %38, align 8, !noalias !2982
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !2984
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !2982
store i64 %43, i64* %42, align 8, !noalias !2982
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !2982
store i64 %46, i64* %45, align 8, !noalias !2982
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !2982
store i64 %49, i64* %48, align 8, !noalias !2982
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !2982
store i64 %52, i64* %51, align 8, !noalias !2982
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !2985
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i41 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i64 %2, 0
br i1 %55, label %then-block-21045-.i, label %next-block.i4
then-block-21045-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.10.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx14, align 8
%.sroa.12.0..sroa_idx20 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx20, align 4
%.sroa.14.0..sroa_idx23 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx23, align 8
%.sroa.16.0..sroa_raw_cast30 = bitcast %"int::Int"* %0 to i8*
%.sroa.16.0..sroa_raw_idx31 = getelementptr inbounds i8* %.sroa.16.0..sroa_raw_cast30, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx31, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %56), !noalias !2986
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.10.0..sroa_idx11 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx11, align 8
%.sroa.12.0..sroa_idx17 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx17, align 4
%.sroa.14.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx, align 8
%.sroa.16.0..sroa_raw_idx = getelementptr inbounds i8* %56, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %2)
to label %normal-return.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i, !noalias !2990
normal-return.i: ; preds = %next-block.i4
call void @llvm.lifetime.end(i64 24, i8* %56), !noalias !2986
br label %"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit"
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i: ; preds = %next-block.i4
%57 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
resume { i8*, i32 } %57
"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit": ; preds = %then-block-21045-.i, %normal-return.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20usize.Add$LT$Int$GT$3add20h564c1c588e49c0acpHfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%3 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
%4 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %3, i8* %4, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %4, i8 29, i64 24, i32 8, i1 false)
%5 = icmp eq i64 %1, 0
br i1 %5, label %then-block-21045-.i, label %next-block.i
then-block-21045-.i: ; preds = %entry-block
%6 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* %3, i64 24, i32 8, i1 false), !alias.scope !2991
call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block.i: ; preds = %entry-block
%7 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %7), !noalias !2991
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %3, i64 24, i32 8, i1 false), !noalias !2995
call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %1)
to label %normal-return.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !2996
normal-return.i: ; preds = %next-block.i
call void @llvm.lifetime.end(i64 24, i8* %7), !noalias !2991
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21045-.i, %normal-return.i
call void @llvm.lifetime.end(i64 24, i8* %3)
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %next-block.i
%8 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 24, i8* %3)
tail call void @llvm.lifetime.end(i64 24, i8* %4)
resume { i8*, i32 } %8
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int35usize.Add$LT$$RF$$u27$a$u20$Int$GT$3add20hc8c0793b4fdb17faLHfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.16 = alloca [7 x i8], align 1
%.sroa.16.0..sroa_idx35 = getelementptr inbounds [7 x i8]* %.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.16.0..sroa_idx35)
%3 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !2997, !noalias !3002
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !3004
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !3007, !noalias !3002
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep42 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep4243 = bitcast %"ll::limb::Limb"* %scevgep42 to i8*
%bound0 = icmp ule i8* %11, %scevgep4243
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !3010
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load45 = load <2 x i64>* %28, align 8, !noalias !3010
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !3010
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load45, <2 x i64>* %31, align 8, !noalias !3010
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !3011
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !3010
store i64 %39, i64* %38, align 8, !noalias !3010
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3012
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !3010
store i64 %43, i64* %42, align 8, !noalias !3010
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !3010
store i64 %46, i64* %45, align 8, !noalias !3010
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !3010
store i64 %49, i64* %48, align 8, !noalias !3010
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !3010
store i64 %52, i64* %51, align 8, !noalias !3010
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3013
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i41 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i64 %1, 0
br i1 %55, label %then-block-21045-.i, label %next-block.i4
then-block-21045-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.10.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx14, align 8
%.sroa.12.0..sroa_idx20 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx20, align 4
%.sroa.14.0..sroa_idx23 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx23, align 8
%.sroa.16.0..sroa_raw_cast30 = bitcast %"int::Int"* %0 to i8*
%.sroa.16.0..sroa_raw_idx31 = getelementptr inbounds i8* %.sroa.16.0..sroa_raw_cast30, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx31, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %56), !noalias !3014
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.10.0..sroa_idx11 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx11, align 8
%.sroa.12.0..sroa_idx17 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx17, align 4
%.sroa.14.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx, align 8
%.sroa.16.0..sroa_raw_idx = getelementptr inbounds i8* %56, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %1)
to label %normal-return.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i, !noalias !3018
normal-return.i: ; preds = %next-block.i4
call void @llvm.lifetime.end(i64 24, i8* %56), !noalias !3014
br label %"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit"
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i: ; preds = %next-block.i4
%57 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
resume { i8*, i32 } %57
"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE.exit": ; preds = %then-block-21045-.i, %normal-return.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.16 = alloca [7 x i8], align 1
%.sroa.16.0..sroa_idx35 = getelementptr inbounds [7 x i8]* %.sroa.16, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.16.0..sroa_idx35)
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !3019, !noalias !3024
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !3026
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !3029, !noalias !3024
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep42 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep4243 = bitcast %"ll::limb::Limb"* %scevgep42 to i8*
%bound0 = icmp ule i8* %11, %scevgep4243
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !3032
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load45 = load <2 x i64>* %28, align 8, !noalias !3032
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !3032
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load45, <2 x i64>* %31, align 8, !noalias !3032
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !3033
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !3032
store i64 %39, i64* %38, align 8, !noalias !3032
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3034
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !3032
store i64 %43, i64* %42, align 8, !noalias !3032
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !3032
store i64 %46, i64* %45, align 8, !noalias !3032
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !3032
store i64 %49, i64* %48, align 8, !noalias !3032
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !3032
store i64 %52, i64* %51, align 8, !noalias !3032
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3035
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%53 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%54 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i41 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
%55 = icmp eq i64 %2, 0
br i1 %55, label %then-block-21080-.i, label %next-block.i4
then-block-21080-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.10.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx14, align 8
%.sroa.12.0..sroa_idx20 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx20, align 4
%.sroa.14.0..sroa_idx23 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx23, align 8
%.sroa.16.0..sroa_raw_cast30 = bitcast %"int::Int"* %0 to i8*
%.sroa.16.0..sroa_raw_idx31 = getelementptr inbounds i8* %.sroa.16.0..sroa_raw_cast30, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx31, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE.exit"
next-block.i4: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %56), !noalias !3036
%.sroa.0.0..sroa_cast5 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i41, i64* %.sroa.0.0..sroa_cast5, align 8
%.sroa.10.0..sroa_idx11 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %54, i32* %.sroa.10.0..sroa_idx11, align 8
%.sroa.12.0..sroa_idx17 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %53, i32* %.sroa.12.0..sroa_idx17, align 4
%.sroa.14.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx, align 8
%.sroa.16.0..sroa_raw_idx = getelementptr inbounds i8* %56, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx, i8* %.sroa.16.0..sroa_idx35, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %2)
to label %normal-return.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i, !noalias !3040
normal-return.i: ; preds = %next-block.i4
call void @llvm.lifetime.end(i64 24, i8* %56), !noalias !3036
br label %"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE.exit"
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i: ; preds = %next-block.i4
%57 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
resume { i8*, i32 } %57
"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE.exit": ; preds = %then-block-21080-.i, %normal-return.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20usize.Sub$LT$Int$GT$3sub20h77155b13679e9959zIfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
normal-return:
%arg.i = alloca %"int::Int", align 8
%.sroa.10 = alloca [12 x i8], align 4
%.sroa.10.0..sroa_idx49 = getelementptr inbounds [12 x i8]* %.sroa.10, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %.sroa.10.0..sroa_idx49)
%3 = bitcast %"int::Int"* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.5.0..sroa_idx13 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%arg.sroa.5.0.copyload = load i32* %arg.sroa.5.0..sroa_idx13, align 8
%arg.sroa.7.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg.sroa.7.0..sroa_cast = bitcast i32* %arg.sroa.7.0..sroa_idx18 to i8*
%.sroa.1057 = getelementptr inbounds [12 x i8]* %.sroa.10, i64 0, i64 0
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.1057, i8* %arg.sroa.7.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
%4 = sub i32 0, %arg.sroa.5.0.copyload
%5 = icmp eq i64 %1, 0
br i1 %5, label %then-block-21045-.i, label %next-block.i
then-block-21045-.i: ; preds = %normal-return
%.sroa.0.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx31, align 8
%.sroa.9.0..sroa_idx37 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %4, i32* %.sroa.9.0..sroa_idx37, align 8
%.sroa.10.0..sroa_idx45 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%.sroa.10.0..sroa_cast46 = bitcast i32* %.sroa.10.0..sroa_idx45 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.10.0..sroa_cast46, i8* %.sroa.10.0..sroa_idx49, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.10.0..sroa_idx49, i8 29, i64 12, i32 4, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block.i: ; preds = %normal-return
%6 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %6), !noalias !3041
%.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %.sroa.0.0..sroa_idx, align 8
%.sroa.9.0..sroa_idx34 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %4, i32* %.sroa.9.0..sroa_idx34, align 8
%.sroa.10.0..sroa_idx40 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
%.sroa.10.0..sroa_cast = bitcast i32* %.sroa.10.0..sroa_idx40 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.10.0..sroa_cast, i8* %.sroa.10.0..sroa_idx49, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.10.0..sroa_idx49, i8 29, i64 12, i32 4, i1 false)
invoke void @"_ZN3int19Int.Add$LT$Limb$GT$3add20hbfb7d4c72eeca765HgeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %1)
to label %normal-return.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8, !noalias !3045
normal-return.i: ; preds = %next-block.i
call void @llvm.lifetime.end(i64 24, i8* %6), !noalias !3041
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit8: ; preds = %next-block.i
%7 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 12, i8* %.sroa.10.0..sroa_idx49)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %7
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21045-.i, %normal-return.i
call void @llvm.lifetime.end(i64 12, i8* %.sroa.10.0..sroa_idx49)
call void @llvm.lifetime.end(i64 12, i8* %.sroa.10.0..sroa_idx49)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int35usize.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20h2dadf1f9ade6d4e0UIfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i.i = alloca %"int::Int", align 8
%new.sroa.16.i.i = alloca [7 x i8], align 1
%.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%4 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %4)
%.sroa.16.0..sroa_idx35.i = getelementptr inbounds [7 x i8]* %.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.16.0..sroa_idx35.i)
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%6 = load i32* %5, align 4, !alias.scope !3046, !noalias !3053
%7 = icmp eq i32 %6, 0
br i1 %7, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.i, label %next-block.i.i
next-block.i.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx.i = getelementptr inbounds [7 x i8]* %new.sroa.16.i.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx.i)
%8 = icmp slt i32 %6, 0
%9 = sub i32 0, %6
%sret_slot.0.i.i25.i.i = select i1 %8, i32 %9, i32 %6
%10 = icmp eq i32 %sret_slot.0.i.i25.i.i, 0
br i1 %10, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i, label %normal-return3.i.i
normal-return3.i.i: ; preds = %next-block.i.i
%11 = zext i32 %sret_slot.0.i.i25.i.i to i64
%12 = shl nuw nsw i64 %11, 3
%13 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %12), !noalias !3056
%14 = ptrtoint i8* %13 to i64
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%16 = load %"ll::limb::Limb"** %15, align 8, !alias.scope !3059, !noalias !3053
%17 = bitcast %"ll::limb::Limb"* %16 to i8*
%18 = bitcast i8* %13 to %"ll::limb::Limb"*
%19 = icmp sgt i32 %sret_slot.0.i.i25.i.i, 0
br i1 %19, label %while_body.lr.ph.i.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i
while_body.lr.ph.i.i.i: ; preds = %normal-return3.i.i
%20 = add i32 %sret_slot.0.i.i25.i.i, -1
%21 = zext i32 %20 to i64
%22 = add nuw nsw i64 %21, 1
%end.idx = add nuw nsw i64 %21, 1
%n.vec = and i64 %22, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%23 = add i32 %sret_slot.0.i.i25.i.i, -1
%24 = zext i32 %23 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i.i
%scevgep9 = getelementptr %"ll::limb::Limb"* %16, i64 %24
%scevgep910 = bitcast %"ll::limb::Limb"* %scevgep9 to i8*
%bound0 = icmp ule i8* %13, %scevgep910
%25 = shl nuw nsw i64 %24, 3
%scevgep = getelementptr i8* %13, i64 %25
%bound1 = icmp ule i8* %17, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%26 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%27 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %index, i32 0
%28 = bitcast i64* %26 to <2 x i64>*
%wide.load = load <2 x i64>* %28, align 8, !noalias !3062
%29 = getelementptr i64* %26, i64 2
%30 = bitcast i64* %29 to <2 x i64>*
%wide.load12 = load <2 x i64>* %30, align 8, !noalias !3062
%31 = bitcast i64* %27 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %31, align 8, !noalias !3062
%32 = getelementptr i64* %27, i64 2
%33 = bitcast i64* %32 to <2 x i64>*
store <2 x i64> %wide.load12, <2 x i64>* %33, align 8, !noalias !3062
%index.next = add i64 %index, 4
%34 = icmp eq i64 %index.next, %n.vec
br i1 %34, label %middle.block.loopexit, label %vector.body, !llvm.loop !3063
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i, label %while_body.i.i.i.preheader
while_body.i.i.i.preheader: ; preds = %middle.block
%35 = trunc i64 %resume.val to i32
%36 = sub i32 %sret_slot.0.i.i25.i.i, %35
%37 = add i32 %sret_slot.0.i.i25.i.i, -1
%38 = sub i32 %37, %35
%xtraiter = and i32 %36, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split
while_body.i.i.i.prol: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.prol = phi i64 [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ], [ %resume.val, %while_body.i.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.i.prol ]
%39 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.i.prol, i32 0
%40 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.i.i.i.prol, i32 0
%41 = load i64* %39, align 8, !noalias !3062
store i64 %41, i64* %40, align 8, !noalias !3062
%indvars.iv.next.i.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %20
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.i.prol, label %while_body.i.i.i.preheader.split, !llvm.loop !3064
while_body.i.i.i.preheader.split: ; preds = %while_body.i.i.i.prol, %while_body.i.i.i.preheader
%indvars.iv.i.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.i.preheader ], [ %indvars.iv.next.i.i.i.prol, %while_body.i.i.i.prol ]
%42 = icmp ult i32 %38, 3
br i1 %42, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit, label %while_body.i.i.i.preheader.split.split
while_body.i.i.i.preheader.split.split: ; preds = %while_body.i.i.i.preheader.split
br label %while_body.i.i.i
while_body.i.i.i: ; preds = %while_body.i.i.i, %while_body.i.i.i.preheader.split.split
%indvars.iv.i.i.i = phi i64 [ %indvars.iv.i.i.i.unr, %while_body.i.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.i.3, %while_body.i.i.i ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.i, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.i.i.i, i32 0
%45 = load i64* %43, align 8, !noalias !3062
store i64 %45, i64* %44, align 8, !noalias !3062
%indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i.i to i32
%46 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.i, i32 0
%47 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i, i32 0
%48 = load i64* %46, align 8, !noalias !3062
store i64 %48, i64* %47, align 8, !noalias !3062
%indvars.iv.next.i.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i.i to i32
%49 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.i.1, i32 0
%50 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i.1, i32 0
%51 = load i64* %49, align 8, !noalias !3062
store i64 %51, i64* %50, align 8, !noalias !3062
%indvars.iv.next.i.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.i.1 to i32
%52 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.i.2, i32 0
%53 = getelementptr inbounds %"ll::limb::Limb"* %18, i64 %indvars.iv.next.i.i.i.2, i32 0
%54 = load i64* %52, align 8, !noalias !3062
store i64 %54, i64* %53, align 8, !noalias !3062
%indvars.iv.next.i.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %20
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa, label %while_body.i.i.i, !llvm.loop !3065
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa: ; preds = %while_body.i.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit: ; preds = %while_body.i.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit, %middle.block, %normal-return3.i.i, %next-block.i.i
%.sink.i41.i.i = phi i32 [ %sret_slot.0.i.i25.i.i, %normal-return3.i.i ], [ 0, %next-block.i.i ], [ %sret_slot.0.i.i25.i.i, %middle.block ], [ %sret_slot.0.i.i25.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit ]
%new.sroa.0.0.3940.i.i = phi i64 [ %14, %normal-return3.i.i ], [ 1, %next-block.i.i ], [ %14, %middle.block ], [ %14, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_idx35.i, i8* %new.sroa.16.i.0..sroa_idx.i, i64 7, i32 1, i1 false), !noalias !3066
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx.i)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.i
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i, %entry-block
%55 = phi i32 [ %.sink.i41.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 0, %entry-block ]
%56 = phi i32 [ %6, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i41.i = phi i64 [ %new.sroa.0.0.3940.i.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.i ], [ 1, %entry-block ]
%57 = icmp eq i64 %1, 0
br i1 %57, label %then-block-21080-.i.i, label %next-block.i4.i
then-block-21080-.i.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.i
%.sroa.0.0..sroa_cast8.i = bitcast %"int::Int"* %3 to i64*
store i64 %new.sroa.0.0.3940.i41.i, i64* %.sroa.0.0..sroa_cast8.i, align 8, !alias.scope !3067, !noalias !3068
%.sroa.10.0..sroa_idx14.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 %56, i32* %.sroa.10.0..sroa_idx14.i, align 8, !alias.scope !3067, !noalias !3068
%.sroa.12.0..sroa_idx20.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 %55, i32* %.sroa.12.0..sroa_idx20.i, align 4, !alias.scope !3067, !noalias !3068
%.sroa.14.0..sroa_idx23.i = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx23.i, align 8, !alias.scope !3067, !noalias !3068
%.sroa.16.0..sroa_raw_idx31.i = getelementptr inbounds i8* %4, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx31.i, i8* %.sroa.16.0..sroa_idx35.i, i64 7, i32 1, i1 false), !noalias !3068
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35.i, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE.exit"
next-block.i4.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.i
%58 = bitcast %"int::Int"* %arg.i.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %58), !noalias !3069
%.sroa.0.0..sroa_cast5.i = bitcast %"int::Int"* %arg.i.i to i64*
store i64 %new.sroa.0.0.3940.i41.i, i64* %.sroa.0.0..sroa_cast5.i, align 8, !noalias !3066
%.sroa.10.0..sroa_idx11.i = getelementptr inbounds %"int::Int"* %arg.i.i, i64 0, i32 1
store i32 %56, i32* %.sroa.10.0..sroa_idx11.i, align 8, !noalias !3066
%.sroa.12.0..sroa_idx17.i = getelementptr inbounds %"int::Int"* %arg.i.i, i64 0, i32 2
store i32 %55, i32* %.sroa.12.0..sroa_idx17.i, align 4, !noalias !3066
%.sroa.14.0..sroa_idx.i = getelementptr inbounds %"int::Int"* %arg.i.i, i64 0, i32 3
store i8 -44, i8* %.sroa.14.0..sroa_idx.i, align 8, !noalias !3066
%.sroa.16.0..sroa_raw_idx.i = getelementptr inbounds i8* %58, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.16.0..sroa_raw_idx.i, i8* %.sroa.16.0..sroa_idx35.i, i64 7, i32 1, i1 false), !noalias !3066
call void @llvm.memset.p0i8.i64(i8* %.sroa.16.0..sroa_idx35.i, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Sub$LT$Limb$GT$3sub20h764f61a06c40a9d1hseE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i.i, i64 %1)
to label %normal-return.i.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i.i, !noalias !3073
normal-return.i.i: ; preds = %next-block.i4.i
call void @llvm.lifetime.end(i64 24, i8* %58), !noalias !3069
%.phi.trans.insert = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%.pre = load i32* %.phi.trans.insert, align 8, !alias.scope !3074, !noalias !3077
br label %"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE.exit"
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit11.i.i: ; preds = %next-block.i4.i
%59 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35.i)
resume { i8*, i32 } %59
"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE.exit": ; preds = %then-block-21080-.i.i, %normal-return.i.i
%60 = phi i32 [ %56, %then-block-21080-.i.i ], [ %.pre, %normal-return.i.i ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35.i)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.16.0..sroa_idx35.i)
%61 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%62 = sub i32 0, %60
store i32 %62, i32* %61, align 8, !alias.scope !3074, !noalias !3077
%63 = bitcast %"int::Int"* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %63, i8* %4, i64 24, i32 8, i1 false), !alias.scope !3079
call void @llvm.lifetime.end(i64 24, i8* %4), !alias.scope !3074, !noalias !3077
call void @llvm.lifetime.end(i64 24, i8* %4)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Mul$LT$usize$GT$3mul20hd3e9c63860c599d4lJfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.20 = alloca [7 x i8], align 1
%.sroa.20.0..sroa_idx47 = getelementptr inbounds [7 x i8]* %.sroa.20, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.20.0..sroa_idx47)
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !3080, !noalias !3085
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %entry-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%6 = icmp slt i32 %4, 0
%7 = sub i32 0, %4
%sret_slot.0.i.i25.i = select i1 %6, i32 %7, i32 %4
%8 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %8, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%9 = zext i32 %sret_slot.0.i.i25.i to i64
%10 = shl nuw nsw i64 %9, 3
%11 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %10), !noalias !3087
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%14 = load %"ll::limb::Limb"** %13, align 8, !alias.scope !3090, !noalias !3085
%15 = bitcast %"ll::limb::Limb"* %14 to i8*
%16 = bitcast i8* %11 to %"ll::limb::Limb"*
%17 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %17, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%18 = add i32 %sret_slot.0.i.i25.i, -1
%19 = zext i32 %18 to i64
%20 = add nuw nsw i64 %19, 1
%end.idx = add nuw nsw i64 %19, 1
%n.vec = and i64 %20, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%21 = add i32 %sret_slot.0.i.i25.i, -1
%22 = zext i32 %21 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep58 = getelementptr %"ll::limb::Limb"* %14, i64 %22
%scevgep5859 = bitcast %"ll::limb::Limb"* %scevgep58 to i8*
%bound0 = icmp ule i8* %11, %scevgep5859
%23 = shl nuw nsw i64 %22, 3
%scevgep = getelementptr i8* %11, i64 %23
%bound1 = icmp ule i8* %15, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%24 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %index, i32 0
%25 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %index, i32 0
%26 = bitcast i64* %24 to <2 x i64>*
%wide.load = load <2 x i64>* %26, align 8, !noalias !3093
%27 = getelementptr i64* %24, i64 2
%28 = bitcast i64* %27 to <2 x i64>*
%wide.load61 = load <2 x i64>* %28, align 8, !noalias !3093
%29 = bitcast i64* %25 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %29, align 8, !noalias !3093
%30 = getelementptr i64* %25, i64 2
%31 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load61, <2 x i64>* %31, align 8, !noalias !3093
%index.next = add i64 %index, 4
%32 = icmp eq i64 %index.next, %n.vec
br i1 %32, label %middle.block.loopexit, label %vector.body, !llvm.loop !3094
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%33 = trunc i64 %resume.val to i32
%34 = sub i32 %sret_slot.0.i.i25.i, %33
%35 = add i32 %sret_slot.0.i.i25.i, -1
%36 = sub i32 %35, %33
%xtraiter = and i32 %34, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%37 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i.prol, i32 0
%38 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i.prol, i32 0
%39 = load i64* %37, align 8, !noalias !3093
store i64 %39, i64* %38, align 8, !noalias !3093
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %18
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3095
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%40 = icmp ult i32 %36, 3
br i1 %40, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%41 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.i.i, i32 0
%42 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.i.i, i32 0
%43 = load i64* %41, align 8, !noalias !3093
store i64 %43, i64* %42, align 8, !noalias !3093
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%44 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i, i32 0
%45 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i, i32 0
%46 = load i64* %44, align 8, !noalias !3093
store i64 %46, i64* %45, align 8, !noalias !3093
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%47 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.1, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.1, i32 0
%49 = load i64* %47, align 8, !noalias !3093
store i64 %49, i64* %48, align 8, !noalias !3093
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %14, i64 %indvars.iv.next.i.i.2, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %16, i64 %indvars.iv.next.i.i.2, i32 0
%52 = load i64* %50, align 8, !noalias !3093
store i64 %52, i64* %51, align 8, !noalias !3093
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %18
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3096
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %12, %normal-return3.i ], [ 1, %next-block.i ], [ %12, %middle.block ], [ %12, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %entry-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%.sroa.16.0.copyload56 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%.sroa.12.0.copyload55 = phi i32 [ %4, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %entry-block ]
%new.sroa.0.0.3940.i54 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %entry-block ]
switch i64 %2, label %before_rhs.i [
i64 0, label %then-block-21115-.i
i64 1, label %then-block-21134-.i
]
then-block-21115-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.16.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.16.0.copyload56, i32* %.sroa.16.0..sroa_idx24, align 4
%.sroa.18.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx29, align 8
%.sroa.20.0..sroa_raw_cast37 = bitcast %"int::Int"* %0 to i8*
%.sroa.20.0..sroa_raw_idx38 = getelementptr inbounds i8* %.sroa.20.0..sroa_raw_cast37, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx38, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%53 = icmp eq i32 %.sroa.12.0.copyload55, 0
br i1 %53, label %then-block-21134-.i, label %next-block2.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15.i: ; preds = %next-block2.i
%54 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
resume { i8*, i32 } %54
then-block-21134-.i: ; preds = %before_rhs.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast6 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast6, align 8
%.sroa.12.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sroa.12.0.copyload55, i32* %.sroa.12.0..sroa_idx14, align 8
%.sroa.16.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.16.0.copyload56, i32* %.sroa.16.0..sroa_idx22, align 4
%.sroa.18.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx, align 8
%.sroa.20.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.20.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.20.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
next-block2.i: ; preds = %before_rhs.i
%55 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %55), !noalias !3097
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i54, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %.sroa.12.0.copyload55, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.16.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %.sroa.16.0.copyload56, i32* %.sroa.16.0..sroa_idx26, align 4
%.sroa.18.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx31, align 8
%.sroa.20.0..sroa_raw_idx42 = getelementptr inbounds i8* %55, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx42, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %2)
to label %normal-return3.i4 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15.i, !noalias !3101
normal-return3.i4: ; preds = %next-block2.i
call void @llvm.lifetime.end(i64 24, i8* %55), !noalias !3097
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit": ; preds = %then-block-21115-.i, %then-block-21134-.i, %normal-return3.i4
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20usize.Mul$LT$Int$GT$3mul20h16ca3f9ad20c2c2bLJfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%arg.i = alloca %"int::Int", align 8
%arg.sroa.13 = alloca [12 x i8], align 4
%arg.sroa.13.0..sroa_idx44 = getelementptr inbounds [12 x i8]* %arg.sroa.13, i64 0, i64 0
call void @llvm.lifetime.start(i64 12, i8* %arg.sroa.13.0..sroa_idx44)
%3 = bitcast %"int::Int"* %2 to i8*
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%arg.sroa.0.0.copyload = load %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.11.0..sroa_idx17 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%arg.sroa.11.0.copyload = load i32* %arg.sroa.11.0..sroa_idx17, align 8
%arg.sroa.13.0..sroa_idx27 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%arg.sroa.13.0..sroa_cast = bitcast i32* %arg.sroa.13.0..sroa_idx27 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.13.0..sroa_idx44, i8* %arg.sroa.13.0..sroa_cast, i64 12, i32 4, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %3, i8 29, i64 24, i32 8, i1 false)
switch i64 %1, label %before_rhs.i [
i64 0, label %then-block-21115-.i
i64 1, label %then-block-21134-.i
]
then-block-21115-.i: ; preds = %entry-block
%arg.sroa.0.0..sroa_idx12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx12, align 8
%arg.sroa.11.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %arg.sroa.11.0..sroa_idx22, align 8
%arg.sroa.13.0..sroa_idx35 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.13.0..sroa_cast36 = bitcast i32* %arg.sroa.13.0..sroa_idx35 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.13.0..sroa_cast36, i8* %arg.sroa.13.0..sroa_idx44, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.13.0..sroa_idx44, i8 29, i64 12, i32 4, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
before_rhs.i: ; preds = %entry-block
%4 = icmp eq i32 %arg.sroa.11.0.copyload, 0
br i1 %4, label %then-block-21134-.i, label %next-block2.i
then-block-21134-.i: ; preds = %before_rhs.i, %entry-block
%arg.sroa.0.0..sroa_idx9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx9, align 8
%arg.sroa.11.0..sroa_idx19 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.11.0.copyload, i32* %arg.sroa.11.0..sroa_idx19, align 8
%arg.sroa.13.0..sroa_idx30 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
%arg.sroa.13.0..sroa_cast31 = bitcast i32* %arg.sroa.13.0..sroa_idx30 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.13.0..sroa_cast31, i8* %arg.sroa.13.0..sroa_idx44, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.13.0..sroa_idx44, i8 29, i64 12, i32 4, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
next-block2.i: ; preds = %before_rhs.i
%5 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %5), !noalias !3102
%arg.sroa.0.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %arg.sroa.0.0.copyload, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx14, align 8
%arg.sroa.11.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %arg.sroa.11.0.copyload, i32* %arg.sroa.11.0..sroa_idx24, align 8
%arg.sroa.13.0..sroa_idx39 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
%arg.sroa.13.0..sroa_cast40 = bitcast i32* %arg.sroa.13.0..sroa_idx39 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.13.0..sroa_cast40, i8* %arg.sroa.13.0..sroa_idx44, i64 12, i32 4, i1 false)
call void @llvm.memset.p0i8.i64(i8* %arg.sroa.13.0..sroa_idx44, i8 29, i64 12, i32 4, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %1)
to label %normal-return3.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7, !noalias !3106
normal-return3.i: ; preds = %next-block2.i
call void @llvm.lifetime.end(i64 24, i8* %5), !noalias !3102
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21115-.i, %then-block-21134-.i, %normal-return3.i
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.13.0..sroa_idx44)
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.13.0..sroa_idx44)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
ret void
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit7: ; preds = %next-block2.i
%6 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 12, i8* %arg.sroa.13.0..sroa_idx44)
tail call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %6
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int35usize.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20hf02b29450ee6868f5JfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%arg.i = alloca %"int::Int", align 8
%.sroa.20 = alloca [7 x i8], align 1
%3 = icmp eq i64 %1, 0
br i1 %3, label %then-block-21464-, label %next-block
then-block-21464-: ; preds = %entry-block
%4 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %4, align 8, !alias.scope !3107
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %5, align 8, !alias.scope !3107
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %6, align 4, !alias.scope !3107
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %7, align 8, !alias.scope !3107
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit", %then-block-21464-
ret void
next-block: ; preds = %entry-block
%.sroa.20.0..sroa_idx47 = getelementptr inbounds [7 x i8]* %.sroa.20, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.20.0..sroa_idx47)
%8 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3112, !noalias !3117
%10 = icmp eq i32 %9, 0
br i1 %10, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %next-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%11 = icmp slt i32 %9, 0
%12 = sub i32 0, %9
%sret_slot.0.i.i25.i = select i1 %11, i32 %12, i32 %9
%13 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %13, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i4
normal-return3.i4: ; preds = %next-block.i
%14 = zext i32 %sret_slot.0.i.i25.i to i64
%15 = shl nuw nsw i64 %14, 3
%16 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %15), !noalias !3119
%17 = ptrtoint i8* %16 to i64
%18 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%19 = load %"ll::limb::Limb"** %18, align 8, !alias.scope !3122, !noalias !3117
%20 = bitcast %"ll::limb::Limb"* %19 to i8*
%21 = bitcast i8* %16 to %"ll::limb::Limb"*
%22 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %22, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i4
%23 = add i32 %sret_slot.0.i.i25.i, -1
%24 = zext i32 %23 to i64
%25 = add nuw nsw i64 %24, 1
%end.idx = add nuw nsw i64 %24, 1
%n.vec = and i64 %25, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%26 = add i32 %sret_slot.0.i.i25.i, -1
%27 = zext i32 %26 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep57 = getelementptr %"ll::limb::Limb"* %19, i64 %27
%scevgep5758 = bitcast %"ll::limb::Limb"* %scevgep57 to i8*
%bound0 = icmp ule i8* %16, %scevgep5758
%28 = shl nuw nsw i64 %27, 3
%scevgep = getelementptr i8* %16, i64 %28
%bound1 = icmp ule i8* %20, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%29 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %index, i32 0
%30 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %index, i32 0
%31 = bitcast i64* %29 to <2 x i64>*
%wide.load = load <2 x i64>* %31, align 8, !noalias !3125
%32 = getelementptr i64* %29, i64 2
%33 = bitcast i64* %32 to <2 x i64>*
%wide.load60 = load <2 x i64>* %33, align 8, !noalias !3125
%34 = bitcast i64* %30 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %34, align 8, !noalias !3125
%35 = getelementptr i64* %30, i64 2
%36 = bitcast i64* %35 to <2 x i64>*
store <2 x i64> %wide.load60, <2 x i64>* %36, align 8, !noalias !3125
%index.next = add i64 %index, 4
%37 = icmp eq i64 %index.next, %n.vec
br i1 %37, label %middle.block.loopexit, label %vector.body, !llvm.loop !3126
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%38 = trunc i64 %resume.val to i32
%39 = sub i32 %sret_slot.0.i.i25.i, %38
%40 = add i32 %sret_slot.0.i.i25.i, -1
%41 = sub i32 %40, %38
%xtraiter = and i32 %39, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%42 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.i.i.prol, i32 0
%43 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.i.i.prol, i32 0
%44 = load i64* %42, align 8, !noalias !3125
store i64 %44, i64* %43, align 8, !noalias !3125
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %23
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3127
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%45 = icmp ult i32 %41, 3
br i1 %45, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%46 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.i.i, i32 0
%47 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.i.i, i32 0
%48 = load i64* %46, align 8, !noalias !3125
store i64 %48, i64* %47, align 8, !noalias !3125
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%49 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i.i, i32 0
%50 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i, i32 0
%51 = load i64* %49, align 8, !noalias !3125
store i64 %51, i64* %50, align 8, !noalias !3125
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%52 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i.i.1, i32 0
%53 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i.1, i32 0
%54 = load i64* %52, align 8, !noalias !3125
store i64 %54, i64* %53, align 8, !noalias !3125
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%55 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 %indvars.iv.next.i.i.2, i32 0
%56 = getelementptr inbounds %"ll::limb::Limb"* %21, i64 %indvars.iv.next.i.i.2, i32 0
%57 = load i64* %55, align 8, !noalias !3125
store i64 %57, i64* %56, align 8, !noalias !3125
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %23
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3128
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i4, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i4 ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %17, %normal-return3.i4 ], [ 1, %next-block.i ], [ %17, %middle.block ], [ %17, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %next-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%.sroa.16.0.copyload55 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %next-block ]
%.sroa.12.0.copyload54 = phi i32 [ %9, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %next-block ]
%58 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %next-block ]
switch i64 %1, label %before_rhs.i [
i64 0, label %then-block-21115-.i
i64 1, label %then-block-21134-.i
]
then-block-21115-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast8 = bitcast %"int::Int"* %0 to i64*
store i64 %58, i64* %.sroa.0.0..sroa_cast8, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.16.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.16.0.copyload55, i32* %.sroa.16.0..sroa_idx24, align 4
%.sroa.18.0..sroa_idx29 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx29, align 8
%.sroa.20.0..sroa_raw_cast37 = bitcast %"int::Int"* %0 to i8*
%.sroa.20.0..sroa_raw_idx38 = getelementptr inbounds i8* %.sroa.20.0..sroa_raw_cast37, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx38, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%59 = icmp eq i32 %.sroa.12.0.copyload54, 0
br i1 %59, label %then-block-21134-.i, label %next-block2.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15.i: ; preds = %next-block2.i
%60 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
resume { i8*, i32 } %60
then-block-21134-.i: ; preds = %before_rhs.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast6 = bitcast %"int::Int"* %0 to i64*
store i64 %58, i64* %.sroa.0.0..sroa_cast6, align 8
%.sroa.12.0..sroa_idx14 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sroa.12.0.copyload54, i32* %.sroa.12.0..sroa_idx14, align 8
%.sroa.16.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sroa.16.0.copyload55, i32* %.sroa.16.0..sroa_idx22, align 4
%.sroa.18.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx, align 8
%.sroa.20.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.20.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.20.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
next-block2.i: ; preds = %before_rhs.i
%61 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %61), !noalias !3129
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %arg.i to i64*
store i64 %58, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %.sroa.12.0.copyload54, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.16.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %.sroa.16.0.copyload55, i32* %.sroa.16.0..sroa_idx26, align 4
%.sroa.18.0..sroa_idx31 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.18.0..sroa_idx31, align 8
%.sroa.20.0..sroa_raw_idx42 = getelementptr inbounds i8* %61, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.20.0..sroa_raw_idx42, i8* %.sroa.20.0..sroa_idx47, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.20.0..sroa_idx47, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int19Int.Mul$LT$Limb$GT$3mul20h95d69163761eef4eRDeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i, i64 %1)
to label %normal-return3.i unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit15.i, !noalias !3133
normal-return3.i: ; preds = %next-block2.i
call void @llvm.lifetime.end(i64 24, i8* %61), !noalias !3129
br label %"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit"
"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE.exit": ; preds = %then-block-21115-.i, %then-block-21134-.i, %normal-return3.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.20.0..sroa_idx47)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Div$LT$usize$GT$3div20hd4f85b86a98eb3f2EKfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%arg.sroa.11.i.sroa.6 = alloca [7 x i8], align 1
%new.sroa.16.i = alloca [7 x i8], align 1
%.sroa.17 = alloca [7 x i8], align 1
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-21497-, label %next-block
then-block-21497-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%.sroa.17.0..sroa_idx32 = getelementptr inbounds [7 x i8]* %.sroa.17, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.17.0..sroa_idx32)
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3134, !noalias !3139
%6 = icmp eq i32 %5, 0
br i1 %6, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %next-block.i
next-block.i: ; preds = %next-block
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%7 = icmp slt i32 %5, 0
%8 = sub i32 0, %5
%sret_slot.0.i.i25.i = select i1 %7, i32 %8, i32 %5
%9 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %9, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%10 = zext i32 %sret_slot.0.i.i25.i to i64
%11 = shl nuw nsw i64 %10, 3
%12 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %11), !noalias !3141
%13 = ptrtoint i8* %12 to i64
%14 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%15 = load %"ll::limb::Limb"** %14, align 8, !alias.scope !3144, !noalias !3139
%16 = bitcast %"ll::limb::Limb"* %15 to i8*
%17 = bitcast i8* %12 to %"ll::limb::Limb"*
%18 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %18, label %while_body.lr.ph.i.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%19 = add i32 %sret_slot.0.i.i25.i, -1
%20 = zext i32 %19 to i64
%21 = add nuw nsw i64 %20, 1
%end.idx = add nuw nsw i64 %20, 1
%n.vec = and i64 %21, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%22 = add i32 %sret_slot.0.i.i25.i, -1
%23 = zext i32 %22 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep37 = getelementptr %"ll::limb::Limb"* %15, i64 %23
%scevgep3738 = bitcast %"ll::limb::Limb"* %scevgep37 to i8*
%bound0 = icmp ule i8* %12, %scevgep3738
%24 = shl nuw nsw i64 %23, 3
%scevgep = getelementptr i8* %12, i64 %24
%bound1 = icmp ule i8* %16, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%25 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %index, i32 0
%26 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %index, i32 0
%27 = bitcast i64* %25 to <2 x i64>*
%wide.load = load <2 x i64>* %27, align 8, !noalias !3147
%28 = getelementptr i64* %25, i64 2
%29 = bitcast i64* %28 to <2 x i64>*
%wide.load40 = load <2 x i64>* %29, align 8, !noalias !3147
%30 = bitcast i64* %26 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %30, align 8, !noalias !3147
%31 = getelementptr i64* %26, i64 2
%32 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load40, <2 x i64>* %32, align 8, !noalias !3147
%index.next = add i64 %index, 4
%33 = icmp eq i64 %index.next, %n.vec
br i1 %33, label %middle.block.loopexit, label %vector.body, !llvm.loop !3148
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%34 = trunc i64 %resume.val to i32
%35 = sub i32 %sret_slot.0.i.i25.i, %34
%36 = add i32 %sret_slot.0.i.i25.i, -1
%37 = sub i32 %36, %34
%xtraiter = and i32 %35, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%38 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.i.i.prol, i32 0
%39 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.i.i.prol, i32 0
%40 = load i64* %38, align 8, !noalias !3147
store i64 %40, i64* %39, align 8, !noalias !3147
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %19
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3149
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%41 = icmp ult i32 %37, 3
br i1 %41, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%42 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.i.i, i32 0
%43 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.i.i, i32 0
%44 = load i64* %42, align 8, !noalias !3147
store i64 %44, i64* %43, align 8, !noalias !3147
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%45 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i, i32 0
%46 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i.i, i32 0
%47 = load i64* %45, align 8, !noalias !3147
store i64 %47, i64* %46, align 8, !noalias !3147
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%48 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i.1, i32 0
%49 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i.i.1, i32 0
%50 = load i64* %48, align 8, !noalias !3147
store i64 %50, i64* %49, align 8, !noalias !3147
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%51 = getelementptr inbounds %"ll::limb::Limb"* %15, i64 %indvars.iv.next.i.i.2, i32 0
%52 = getelementptr inbounds %"ll::limb::Limb"* %17, i64 %indvars.iv.next.i.i.2, i32 0
%53 = load i64* %51, align 8, !noalias !3147
store i64 %53, i64* %52, align 8, !noalias !3147
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %19
br i1 %exitcond.3, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3150
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit.unr-lcssa
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit, %middle.block, %normal-return3.i, %next-block.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %13, %normal-return3.i ], [ 1, %next-block.i ], [ %13, %middle.block ], [ %13, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.17.0..sroa_idx32, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %next-block, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
%54 = phi i32 [ %.sink.i41.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %next-block ]
%55 = phi i32 [ %5, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 0, %next-block ]
%new.sroa.0.0.3940.i36 = phi i64 [ %new.sroa.0.0.3940.i, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i ], [ 1, %next-block ]
switch i64 %2, label %before_rhs.i [
i64 0, label %then-block-21169-.i
i64 1, label %then-block-21183-.i
]
then-block-21169-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !3151
unreachable
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%56 = icmp eq i32 %55, 0
br i1 %56, label %then-block-21183-.i, label %join.lr.ph.i.i.i
then-block-21183-.i: ; preds = %before_rhs.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast6 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i36, i64* %.sroa.0.0..sroa_cast6, align 8
%.sroa.9.0..sroa_idx9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %55, i32* %.sroa.9.0..sroa_idx9, align 8
%.sroa.12.0..sroa_idx12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %54, i32* %.sroa.12.0..sroa_idx12, align 4
%.sroa.15.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.15.0..sroa_idx, align 8
%.sroa.17.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.17.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.17.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.17.0..sroa_raw_idx, i8* %.sroa.17.0..sroa_idx32, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.17.0..sroa_idx32, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE.exit"
join.lr.ph.i.i.i: ; preds = %before_rhs.i
%arg.sroa.11.i.sroa.6.0..sroa_idx29 = getelementptr inbounds [7 x i8]* %arg.sroa.11.i.sroa.6, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx29)
%57 = inttoptr i64 %new.sroa.0.0.3940.i36 to %"ll::limb::Limb"*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.6.0..sroa_idx29, i8* %.sroa.17.0..sroa_idx32, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.17.0..sroa_idx32, i8 29, i64 7, i32 1, i1 false)
%58 = icmp slt i32 %55, 0
%59 = sub i32 0, %55
%sret_slot.0.i.i.i.i = select i1 %58, i32 %59, i32 %55
%60 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %57, i32 0, %"ll::limb::Limb"* %57, i32 %sret_slot.0.i.i.i.i, i64 %2), !noalias !3155
%61 = ashr i32 %55, 31
%62 = or i32 %61, 1
br label %join.i.i.i
while_body.i.i.i: ; preds = %join.i.i.i
%63 = sub i32 %arg.sroa.9.0.copyload47.i, %62
%64 = icmp eq i32 %arg.sroa.9.0.copyload47.i, %62
br i1 %64, label %normal-return4.i, label %join.i.i.i
join.i.i.i: ; preds = %while_body.i.i.i, %join.lr.ph.i.i.i
%arg.sroa.9.0.copyload47.i = phi i32 [ %55, %join.lr.ph.i.i.i ], [ %63, %while_body.i.i.i ]
%65 = icmp slt i32 %arg.sroa.9.0.copyload47.i, 0
%66 = sub i32 0, %arg.sroa.9.0.copyload47.i
%sret_slot.0.i.i.i.i.i = select i1 %65, i32 %66, i32 %arg.sroa.9.0.copyload47.i
%67 = add i32 %sret_slot.0.i.i.i.i.i, -1
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds %"ll::limb::Limb"* %57, i64 %68, i32 0
%70 = load i64* %69, align 8, !alias.scope !3159, !noalias !3162
%71 = icmp eq i64 %70, 0
br i1 %71, label %while_body.i.i.i, label %normal-return4.i
normal-return4.i: ; preds = %join.i.i.i, %while_body.i.i.i
%arg.sroa.9.0.copyload48.i = phi i32 [ %arg.sroa.9.0.copyload47.i, %join.i.i.i ], [ %63, %while_body.i.i.i ]
%arg.sroa.0.0..sroa_idx21.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %57, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21.i, align 8, !alias.scope !3166, !noalias !3167
%arg.sroa.9.0..sroa_idx28.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload48.i, i32* %arg.sroa.9.0..sroa_idx28.i, align 8, !alias.scope !3166, !noalias !3167
%arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %54, i32* %arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx, align 4
%arg.sroa.11.i.sroa.5.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %arg.sroa.11.i.sroa.5.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx, align 8
%arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_idx = getelementptr inbounds i8* %arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_idx, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx29, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx29)
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx29)
br label %"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE.exit"
"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE.exit": ; preds = %then-block-21183-.i, %normal-return4.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.17.0..sroa_idx32)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.17.0..sroa_idx32)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%3 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%4 = icmp eq i64 %1, 0
%5 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
br i1 %4, label %then-block-21532-, label %next-block
then-block-21532-: ; preds = %entry-block
store i32 0, i32* %5, align 4
%6 = bitcast %"int::Int"* %2 to i8*
%7 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %6, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %then-block-21532-, %normal-return5
%8 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %8)
ret void
next-block: ; preds = %entry-block
%9 = load i32* %5, align 4, !alias.scope !3168
%10 = icmp eq i32 %9, 0
br i1 %10, label %then-block-21547-, label %next-block.i
unwind_custom_: ; preds = %next-block.i, %normal-return4
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i12, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14
cond.i12: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !3171
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14, label %then-block-15297-.i.i13
then-block-15297-.i.i13: ; preds = %cond.i12
%18 = bitcast %"int::Int"* %2 to i8**
%19 = load i8** %18, align 8, !alias.scope !3174
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !3171
store i32 0, i32* %5, align 4, !alias.scope !3171
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14: ; preds = %unwind_custom_, %cond.i12, %then-block-15297-.i.i13
%22 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
then-block-21547-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %next-block
%23 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %23)
%24 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return4 unwind label %unwind_custom_
normal-return4: ; preds = %next-block.i
%25 = ptrtoint i8* %24 to i64
%limb.sroa.0.0..sroa_idx.i.i = bitcast i8* %24 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx.i.i, align 8, !noalias !3177
%i.sroa.0.0..sroa_cast7.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %25, i64* %i.sroa.0.0..sroa_cast7.i.i, align 8, !alias.scope !3177
%26 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 1, i32* %26, align 8, !alias.scope !3182
%27 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %27, align 4, !alias.scope !3182
%28 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %28, align 8, !alias.scope !3182
%29 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %29)
%30 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %29, i8* %30, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %30, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int18Int.Div$LT$Int$GT$3div20h1633d9a6bb8c8a8awReE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg)
to label %normal-return5 unwind label %unwind_custom_
normal-return5: ; preds = %normal-return4
call void @llvm.lifetime.end(i64 24, i8* %29)
call void @llvm.lifetime.end(i64 24, i8* %23)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
}
; Function Attrs: uwtable
define void @"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64) unnamed_addr #6 {
entry-block:
%2 = icmp eq i64 %1, 0
br i1 %2, label %then-block-23928-, label %next-block
then-block-23928-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3183
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23928-
%.sink21 = phi i32 [ 1, %next-block ], [ 0, %then-block-23928- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink21, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink21, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3188
%8 = ptrtoint i8* %7 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %7 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3193
%i.sroa.0.0..sroa_cast7.i = bitcast %"int::Int"* %0 to i64*
store i64 %8, i64* %i.sroa.0.0..sroa_cast7.i, align 8, !alias.scope !3193
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int35usize.Div$LT$$RF$$u27$a$u20$Int$GT$3div20hfa008a2b5bdba338XLfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%arg.i = alloca %"int::Int", align 8
%.sroa.23 = alloca [7 x i8], align 1
%4 = icmp eq i64 %1, 0
br i1 %4, label %then-block-21580-, label %next-block
then-block-21580-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !3194
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !3194
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !3194
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !3194
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE.exit", %then-block-21580-
ret void
next-block: ; preds = %entry-block
%9 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%10 = load i32* %9, align 4, !alias.scope !3199
%11 = icmp eq i32 %10, 0
br i1 %11, label %then-block-21590-, label %next-block.i7
then-block-21590-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i7: ; preds = %next-block
%.sroa.23.0..sroa_idx42 = getelementptr inbounds [7 x i8]* %.sroa.23, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.23.0..sroa_idx42)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %10, 0
%13 = sub i32 0, %10
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %10
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %next-block.i.thread48, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i7
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !3202
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !3208, !noalias !3211
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %next-block.i.thread48
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep52 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5253 = bitcast %"ll::limb::Limb"* %scevgep52 to i8*
%bound0 = icmp ule i8* %17, %scevgep5253
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !3212
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load55 = load <2 x i64>* %34, align 8, !noalias !3212
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !3212
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load55, <2 x i64>* %37, align 8, !noalias !3212
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !3213
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %next-block.i, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !3212
store i64 %45, i64* %44, align 8, !noalias !3212
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3214
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %next-block.i.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !3212
store i64 %49, i64* %48, align 8, !noalias !3212
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !3212
store i64 %52, i64* %51, align 8, !noalias !3212
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !3212
store i64 %55, i64* %54, align 8, !noalias !3212
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !3212
store i64 %58, i64* %57, align 8, !noalias !3212
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %next-block.i.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3215
next-block.i.thread48: ; preds = %normal-return3.i, %next-block.i7
%.sink.i41.i.ph = phi i32 [ 0, %next-block.i7 ], [ %sret_slot.0.i.i25.i, %normal-return3.i ]
%new.sroa.0.0.3940.i.ph = phi i64 [ 1, %next-block.i7 ], [ %18, %normal-return3.i ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %next-block.i.i
next-block.i.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %next-block.i.loopexit
next-block.i.loopexit: ; preds = %while_body.i.i.preheader.split, %next-block.i.loopexit.unr-lcssa
br label %next-block.i
next-block.i: ; preds = %next-block.i.loopexit, %middle.block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %next-block.i.i
cond.i12.i: ; preds = %next-block.i.i
%59 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%60 = icmp eq i32 %65, 0
br i1 %60, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i, label %then-block-15297-.i.i13.i
then-block-15297-.i.i13.i: ; preds = %cond.i12.i
%61 = inttoptr i64 %new.sroa.0.0.3940.i454649 to i8*
%62 = zext i32 %65 to i64
%63 = shl nuw nsw i64 %62, 3
tail call void @je_sdallocx(i8* %61, i64 %63, i32 0), !noalias !3216
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i: ; preds = %unwind_custom_.i.thread51, %then-block-15297-.i.i13.i, %cond.i12.i
%64 = phi { i8*, i32 } [ %59, %then-block-15297-.i.i13.i ], [ %59, %cond.i12.i ], [ %73, %unwind_custom_.i.thread51 ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
resume { i8*, i32 } %64
next-block.i.i: ; preds = %next-block.i, %next-block.i.thread48
%65 = phi i32 [ %.sink.i41.i.ph, %next-block.i.thread48 ], [ %sret_slot.0.i.i25.i, %next-block.i ]
%new.sroa.0.0.3940.i454649 = phi i64 [ %new.sroa.0.0.3940.i.ph, %next-block.i.thread48 ], [ %18, %next-block.i ]
%66 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %66), !noalias !3216
%67 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return4.i unwind label %cond.i12.i, !noalias !3216
normal-return4.i: ; preds = %next-block.i.i
%68 = ptrtoint i8* %67 to i64
%limb.sroa.0.0..sroa_idx.i.i.i = bitcast i8* %67 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !3220
%i.sroa.0.0..sroa_cast7.i.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %68, i64* %i.sroa.0.0..sroa_cast7.i.i.i, align 8, !alias.scope !3225, !noalias !3216
%69 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 1, i32* %69, align 8, !alias.scope !3226, !noalias !3216
%70 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %70, align 4, !alias.scope !3226, !noalias !3216
%71 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %71, align 8, !alias.scope !3226, !noalias !3216
%72 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %72), !noalias !3216
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %arg.i to i64*
store i64 %new.sroa.0.0.3940.i454649, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.11.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %10, i32* %.sroa.11.0..sroa_idx16, align 8
%.sroa.16.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %65, i32* %.sroa.16.0..sroa_idx22, align 4
%.sroa.20.0..sroa_idx26 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.20.0..sroa_idx26, align 8
%.sroa.23.0..sroa_raw_idx33 = getelementptr inbounds i8* %72, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.23.0..sroa_raw_idx33, i8* %.sroa.23.0..sroa_idx42, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.23.0..sroa_idx42, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int18Int.Div$LT$Int$GT$3div20h1633d9a6bb8c8a8awReE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i)
to label %"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE.exit" unwind label %unwind_custom_.i.thread51, !noalias !3227
unwind_custom_.i.thread51: ; preds = %normal-return4.i
%73 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit14.i
"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE.exit": ; preds = %normal-return4.i
call void @llvm.lifetime.end(i64 24, i8* %72), !noalias !3216
call void @llvm.lifetime.end(i64 24, i8* %66), !noalias !3216
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.23.0..sroa_idx42)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int36_$RF$$u27$a$u20$Int.Rem$LT$usize$GT$3rem20h7e3589b1cd225fe6GMfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%arg.sroa.11.i.sroa.6 = alloca [7 x i8], align 1
%.sroa.19 = alloca [7 x i8], align 1
%3 = icmp eq i64 %2, 0
br i1 %3, label %then-block-21623-, label %next-block
then-block-21623-: ; preds = %entry-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3228
%6 = icmp eq i32 %5, 0
%7 = icmp eq i64 %2, 1
%. = or i1 %7, %6
br i1 %., label %then-block-21637-, label %next-block.i
then-block-21637-: ; preds = %next-block
%8 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %8, align 8, !alias.scope !3231
%9 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %9, align 8, !alias.scope !3231
%10 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %10, align 4, !alias.scope !3231
%11 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %11, align 8, !alias.scope !3231
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE.exit", %then-block-21637-
ret void
next-block.i: ; preds = %next-block
%.sroa.19.0..sroa_idx43 = getelementptr inbounds [7 x i8]* %.sroa.19, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.19.0..sroa_idx43)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %5, 0
%13 = sub i32 0, %5
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %5
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !3236
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !3242, !noalias !3245
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep50 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5051 = bitcast %"ll::limb::Limb"* %scevgep50 to i8*
%bound0 = icmp ule i8* %17, %scevgep5051
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !3246
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load53 = load <2 x i64>* %34, align 8, !noalias !3246
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !3246
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load53, <2 x i64>* %37, align 8, !noalias !3246
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !3247
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !3246
store i64 %45, i64* %44, align 8, !noalias !3246
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3248
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !3246
store i64 %49, i64* %48, align 8, !noalias !3246
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !3246
store i64 %52, i64* %51, align 8, !noalias !3246
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !3246
store i64 %55, i64* %54, align 8, !noalias !3246
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !3246
store i64 %58, i64* %57, align 8, !noalias !3246
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3249
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, %middle.block, %next-block.i, %normal-return3.i
%.sink.i41.i = phi i32 [ %sret_slot.0.i.i25.i, %normal-return3.i ], [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %middle.block ], [ %sret_slot.0.i.i25.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
%new.sroa.0.0.3940.i = phi i64 [ %18, %normal-return3.i ], [ 1, %next-block.i ], [ %18, %middle.block ], [ %18, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.19.0..sroa_idx43, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
switch i64 %2, label %join.lr.ph.i.i.i [
i64 0, label %then-block-21218-.i
i64 1, label %then-block-21232-.i
]
then-block-21218-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !3250
unreachable
then-block-21232-.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%.sroa.0.0..sroa_cast9 = bitcast %"int::Int"* %0 to i64*
store i64 %new.sroa.0.0.3940.i, i64* %.sroa.0.0..sroa_cast9, align 8
%.sroa.9.0..sroa_idx12 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.9.0..sroa_idx12, align 8
%.sroa.14.0..sroa_idx15 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %.sroa.14.0..sroa_idx15, align 4
%.sroa.17.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.17.0..sroa_idx, align 8
%.sroa.19.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.19.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.19.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.19.0..sroa_raw_idx, i8* %.sroa.19.0..sroa_idx43, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.19.0..sroa_idx43, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE.exit"
join.lr.ph.i.i.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
%arg.sroa.11.i.sroa.6.0..sroa_idx37 = getelementptr inbounds [7 x i8]* %arg.sroa.11.i.sroa.6, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx37)
%59 = inttoptr i64 %new.sroa.0.0.3940.i to %"ll::limb::Limb"*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.6.0..sroa_idx37, i8* %.sroa.19.0..sroa_idx43, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.19.0..sroa_idx43, i8 29, i64 7, i32 1, i1 false)
%60 = icmp slt i32 %5, 0
%61 = sub i32 0, %5
%sret_slot.0.i.i.i.i = select i1 %60, i32 %61, i32 %5
%62 = tail call i64 @_ZN2ll3div8divrem_120hfb03404947516e45QdbE(%"ll::limb::Limb"* %59, i32 0, %"ll::limb::Limb"* %59, i32 %sret_slot.0.i.i.i.i, i64 %2), !noalias !3254
%63 = ashr i32 %5, 31
%64 = or i32 %63, 1
br label %join.i.i.i
while_body.i.i.i: ; preds = %join.i.i.i
%65 = sub i32 %arg.sroa.9.0.copyload47.i, %64
%66 = icmp eq i32 %arg.sroa.9.0.copyload47.i, %64
br i1 %66, label %normal-return4.i, label %join.i.i.i
join.i.i.i: ; preds = %while_body.i.i.i, %join.lr.ph.i.i.i
%arg.sroa.9.0.copyload47.i = phi i32 [ %5, %join.lr.ph.i.i.i ], [ %65, %while_body.i.i.i ]
%67 = icmp slt i32 %arg.sroa.9.0.copyload47.i, 0
%68 = sub i32 0, %arg.sroa.9.0.copyload47.i
%sret_slot.0.i.i.i.i.i = select i1 %67, i32 %68, i32 %arg.sroa.9.0.copyload47.i
%69 = add i32 %sret_slot.0.i.i.i.i.i, -1
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds %"ll::limb::Limb"* %59, i64 %70, i32 0
%72 = load i64* %71, align 8, !alias.scope !3258, !noalias !3261
%73 = icmp eq i64 %72, 0
br i1 %73, label %while_body.i.i.i, label %normal-return4.i
normal-return4.i: ; preds = %join.i.i.i, %while_body.i.i.i
%arg.sroa.9.0.copyload48.i = phi i32 [ %arg.sroa.9.0.copyload47.i, %join.i.i.i ], [ %65, %while_body.i.i.i ]
%arg.sroa.0.0..sroa_idx21.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %59, %"ll::limb::Limb"** %arg.sroa.0.0..sroa_idx21.i, align 8, !alias.scope !3265, !noalias !3266
%arg.sroa.9.0..sroa_idx28.i = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %arg.sroa.9.0.copyload48.i, i32* %arg.sroa.9.0..sroa_idx28.i, align 8, !alias.scope !3265, !noalias !3266
%arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink.i41.i, i32* %arg.sroa.11.i.sroa.0.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx, align 4
%arg.sroa.11.i.sroa.5.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %arg.sroa.11.i.sroa.5.0.arg.sroa.11.0..sroa_cast39.i.sroa_idx, align 8
%arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_idx = getelementptr inbounds i8* %arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %arg.sroa.11.i.sroa.6.0.arg.sroa.11.0..sroa_cast39.i.sroa_raw_idx, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx37, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx37)
call void @llvm.lifetime.end(i64 7, i8* %arg.sroa.11.i.sroa.6.0..sroa_idx37)
br label %"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE.exit"
"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE.exit": ; preds = %then-block-21232-.i, %normal-return4.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.19.0..sroa_idx43)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.19.0..sroa_idx43)
br label %clean_custom_
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
entry-block:
%3 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%4 = icmp eq i64 %1, 0
%.pre = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
br i1 %4, label %then-block-21676-, label %before_rhs
before_rhs: ; preds = %entry-block
%5 = load i32* %.pre, align 4, !alias.scope !3267, !noalias !3272
switch i32 %5, label %next-block.i [
i32 1, label %before_rhs2.i.i
i32 0, label %then-block-21691-
]
before_rhs2.i.i: ; preds = %before_rhs
%6 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8, !alias.scope !3274, !noalias !3279
%8 = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%9 = load i64* %8, align 8, !alias.scope !3281, !noalias !3284
%10 = icmp eq i64 %9, 1
br i1 %10, label %then-block-21676-, label %next-block.i
unwind_custom_: ; preds = %next-block.i, %normal-return5
%11 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%12 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 3
%13 = load i8* %12, align 1
%14 = icmp eq i8 %13, -44
br i1 %14, label %cond.i, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
cond.i: ; preds = %unwind_custom_
%15 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 2
%16 = load i32* %15, align 4, !alias.scope !3286
%17 = icmp eq i32 %16, 0
br i1 %17, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %cond.i
%18 = bitcast %"int::Int"* %2 to i8**
%19 = load i8** %18, align 8, !alias.scope !3289
%20 = zext i32 %16 to i64
%21 = shl nuw nsw i64 %20, 3
tail call void @je_sdallocx(i8* %19, i64 %21, i32 0)
store i32 0, i32* %15, align 4, !alias.scope !3286
store i32 0, i32* %.pre, align 4, !alias.scope !3286
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %unwind_custom_, %cond.i, %then-block-15297-.i.i
%22 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %22)
resume { i8*, i32 } %11
then-block-21676-: ; preds = %entry-block, %before_rhs2.i.i
store i32 0, i32* %.pre, align 4
%23 = bitcast %"int::Int"* %2 to i8*
%24 = bitcast %"int::Int"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %24, i8* %23, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %23, i8 29, i64 24, i32 8, i1 false)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16: ; preds = %then-block-21676-, %normal-return6
%25 = bitcast %"int::Int"* %2 to i8*
tail call void @llvm.lifetime.end(i64 24, i8* %25)
ret void
then-block-21691-: ; preds = %before_rhs
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %before_rhs, %before_rhs2.i.i
%26 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %26)
%27 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return5 unwind label %unwind_custom_
normal-return5: ; preds = %next-block.i
%28 = ptrtoint i8* %27 to i64
%limb.sroa.0.0..sroa_idx.i.i = bitcast i8* %27 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx.i.i, align 8, !noalias !3292
%i.sroa.0.0..sroa_cast7.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %28, i64* %i.sroa.0.0..sroa_cast7.i.i, align 8, !alias.scope !3292
%29 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 1, i32* %29, align 8, !alias.scope !3297
%30 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %30, align 4, !alias.scope !3297
%31 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %31, align 8, !alias.scope !3297
%32 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %32)
%33 = bitcast %"int::Int"* %2 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %32, i8* %33, i64 24, i32 8, i1 false)
tail call void @llvm.memset.p0i8.i64(i8* %33, i8 29, i64 24, i32 8, i1 false)
invoke void @"_ZN3int18Int.Rem$LT$Int$GT$3rem20h360830dc24e586ceHWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg)
to label %normal-return6 unwind label %unwind_custom_
normal-return6: ; preds = %normal-return5
call void @llvm.lifetime.end(i64 24, i8* %32)
call void @llvm.lifetime.end(i64 24, i8* %26)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit16
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int35usize.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20hb76e2579fac3a4b9hOfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
entry-block:
%new.sroa.16.i = alloca [7 x i8], align 1
%3 = alloca %"int::Int", align 8
%arg.i = alloca %"int::Int", align 8
%.sroa.24 = alloca [7 x i8], align 1
%4 = icmp eq i64 %1, 0
br i1 %4, label %then-block-21724-, label %next-block
then-block-21724-: ; preds = %entry-block
%5 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %5, align 8, !alias.scope !3298
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %6, align 8, !alias.scope !3298
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 0, i32* %7, align 4, !alias.scope !3298
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %8, align 8, !alias.scope !3298
br label %clean_custom_
clean_custom_: ; preds = %"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE.exit", %then-block-21724-
ret void
next-block: ; preds = %entry-block
%9 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 1
%10 = load i32* %9, align 4, !alias.scope !3303
%11 = icmp eq i32 %10, 0
br i1 %11, label %then-block-21734-, label %next-block.i
then-block-21734-: ; preds = %next-block
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE()
unreachable
next-block.i: ; preds = %next-block
%.sroa.24.0..sroa_idx44 = getelementptr inbounds [7 x i8]* %.sroa.24, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %.sroa.24.0..sroa_idx44)
%new.sroa.16.i.0..sroa_idx = getelementptr inbounds [7 x i8]* %new.sroa.16.i, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
%12 = icmp slt i32 %10, 0
%13 = sub i32 0, %10
%sret_slot.0.i.i25.i = select i1 %12, i32 %13, i32 %10
%14 = icmp eq i32 %sret_slot.0.i.i25.i, 0
br i1 %14, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50, label %normal-return3.i
normal-return3.i: ; preds = %next-block.i
%15 = zext i32 %sret_slot.0.i.i25.i to i64
%16 = shl nuw nsw i64 %15, 3
%17 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 %16), !noalias !3306
%18 = ptrtoint i8* %17 to i64
%19 = getelementptr inbounds %"int::Int"* %2, i64 0, i32 0, i32 0, i32 0
%20 = load %"ll::limb::Limb"** %19, align 8, !alias.scope !3312, !noalias !3315
%21 = bitcast %"ll::limb::Limb"* %20 to i8*
%22 = bitcast i8* %17 to %"ll::limb::Limb"*
%23 = icmp sgt i32 %sret_slot.0.i.i25.i, 0
br i1 %23, label %while_body.lr.ph.i.i, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50
while_body.lr.ph.i.i: ; preds = %normal-return3.i
%24 = add i32 %sret_slot.0.i.i25.i, -1
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%end.idx = add nuw nsw i64 %25, 1
%n.vec = and i64 %26, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
%27 = add i32 %sret_slot.0.i.i25.i, -1
%28 = zext i32 %27 to i64
br i1 %cmp.zero, label %middle.block, label %vector.memcheck
vector.memcheck: ; preds = %while_body.lr.ph.i.i
%scevgep53 = getelementptr %"ll::limb::Limb"* %20, i64 %28
%scevgep5354 = bitcast %"ll::limb::Limb"* %scevgep53 to i8*
%bound0 = icmp ule i8* %17, %scevgep5354
%29 = shl nuw nsw i64 %28, 3
%scevgep = getelementptr i8* %17, i64 %29
%bound1 = icmp ule i8* %21, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %middle.block, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
br label %vector.body
vector.body: ; preds = %vector.body.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.body.preheader ]
%30 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %index, i32 0
%31 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %index, i32 0
%32 = bitcast i64* %30 to <2 x i64>*
%wide.load = load <2 x i64>* %32, align 8, !noalias !3316
%33 = getelementptr i64* %30, i64 2
%34 = bitcast i64* %33 to <2 x i64>*
%wide.load56 = load <2 x i64>* %34, align 8, !noalias !3316
%35 = bitcast i64* %31 to <2 x i64>*
store <2 x i64> %wide.load, <2 x i64>* %35, align 8, !noalias !3316
%36 = getelementptr i64* %31, i64 2
%37 = bitcast i64* %36 to <2 x i64>*
store <2 x i64> %wide.load56, <2 x i64>* %37, align 8, !noalias !3316
%index.next = add i64 %index, 4
%38 = icmp eq i64 %index.next, %n.vec
br i1 %38, label %middle.block.loopexit, label %vector.body, !llvm.loop !3317
middle.block.loopexit: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %middle.block.loopexit, %vector.memcheck, %while_body.lr.ph.i.i
%resume.val = phi i64 [ 0, %while_body.lr.ph.i.i ], [ 0, %vector.memcheck ], [ %n.vec, %middle.block.loopexit ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, label %while_body.i.i.preheader
while_body.i.i.preheader: ; preds = %middle.block
%39 = trunc i64 %resume.val to i32
%40 = sub i32 %sret_slot.0.i.i25.i, %39
%41 = add i32 %sret_slot.0.i.i25.i, -1
%42 = sub i32 %41, %39
%xtraiter = and i32 %40, 3
%lcmp.mod = icmp ne i32 %xtraiter, 0
br i1 %lcmp.mod, label %while_body.i.i.prol, label %while_body.i.i.preheader.split
while_body.i.i.prol: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.prol = phi i64 [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ], [ %resume.val, %while_body.i.i.preheader ]
%prol.iter = phi i32 [ %xtraiter, %while_body.i.i.preheader ], [ %prol.iter.sub, %while_body.i.i.prol ]
%43 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i.prol, i32 0
%44 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i.prol, i32 0
%45 = load i64* %43, align 8, !noalias !3316
store i64 %45, i64* %44, align 8, !noalias !3316
%indvars.iv.next.i.i.prol = add nuw nsw i64 %indvars.iv.i.i.prol, 1
%lftr.wideiv.prol = trunc i64 %indvars.iv.i.i.prol to i32
%exitcond.prol = icmp eq i32 %lftr.wideiv.prol, %24
%prol.iter.sub = sub i32 %prol.iter, 1
%prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0
br i1 %prol.iter.cmp, label %while_body.i.i.prol, label %while_body.i.i.preheader.split, !llvm.loop !3318
while_body.i.i.preheader.split: ; preds = %while_body.i.i.prol, %while_body.i.i.preheader
%indvars.iv.i.i.unr = phi i64 [ %resume.val, %while_body.i.i.preheader ], [ %indvars.iv.next.i.i.prol, %while_body.i.i.prol ]
%46 = icmp ult i32 %42, 3
br i1 %46, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, label %while_body.i.i.preheader.split.split
while_body.i.i.preheader.split.split: ; preds = %while_body.i.i.preheader.split
br label %while_body.i.i
while_body.i.i: ; preds = %while_body.i.i, %while_body.i.i.preheader.split.split
%indvars.iv.i.i = phi i64 [ %indvars.iv.i.i.unr, %while_body.i.i.preheader.split.split ], [ %indvars.iv.next.i.i.3, %while_body.i.i ]
%47 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.i.i, i32 0
%48 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.i.i, i32 0
%49 = load i64* %47, align 8, !noalias !3316
store i64 %49, i64* %48, align 8, !noalias !3316
%indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1
%lftr.wideiv = trunc i64 %indvars.iv.i.i to i32
%50 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i, i32 0
%51 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i, i32 0
%52 = load i64* %50, align 8, !noalias !3316
store i64 %52, i64* %51, align 8, !noalias !3316
%indvars.iv.next.i.i.1 = add nuw nsw i64 %indvars.iv.next.i.i, 1
%lftr.wideiv.1 = trunc i64 %indvars.iv.next.i.i to i32
%53 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.1, i32 0
%54 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.1, i32 0
%55 = load i64* %53, align 8, !noalias !3316
store i64 %55, i64* %54, align 8, !noalias !3316
%indvars.iv.next.i.i.2 = add nuw nsw i64 %indvars.iv.next.i.i.1, 1
%lftr.wideiv.2 = trunc i64 %indvars.iv.next.i.i.1 to i32
%56 = getelementptr inbounds %"ll::limb::Limb"* %20, i64 %indvars.iv.next.i.i.2, i32 0
%57 = getelementptr inbounds %"ll::limb::Limb"* %22, i64 %indvars.iv.next.i.i.2, i32 0
%58 = load i64* %56, align 8, !noalias !3316
store i64 %58, i64* %57, align 8, !noalias !3316
%indvars.iv.next.i.i.3 = add nuw nsw i64 %indvars.iv.next.i.i.2, 1
%lftr.wideiv.3 = trunc i64 %indvars.iv.next.i.i.2 to i32
%exitcond.3 = icmp eq i32 %lftr.wideiv.3, %24
br i1 %exitcond.3, label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa, label %while_body.i.i, !llvm.loop !3319
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50: ; preds = %next-block.i, %normal-return3.i
%.sink.i41.i.ph = phi i32 [ 0, %next-block.i ], [ %sret_slot.0.i.i25.i, %normal-return3.i ]
%new.sroa.0.0.3940.i.ph = phi i64 [ 1, %next-block.i ], [ %18, %normal-return3.i ]
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %before_rhs.i
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa: ; preds = %while_body.i.i
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit: ; preds = %while_body.i.i.preheader.split, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit.unr-lcssa
br label %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit
_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.loopexit, %middle.block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8* %new.sroa.16.i.0..sroa_idx, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 7, i8* %new.sroa.16.i.0..sroa_idx)
br label %before_rhs.i
before_rhs.i: ; preds = %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50
%.sroa.0.0.4748 = phi i64 [ %18, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit ], [ %new.sroa.0.0.3940.i.ph, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50 ]
%59 = phi i32 [ %sret_slot.0.i.i25.i, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit ], [ %.sink.i41.i.ph, %_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE.exit.thread50 ]
switch i32 %10, label %next-block.i.i [
i32 1, label %before_rhs2.i.i.i
i32 0, label %then-block-21691-.i
]
before_rhs2.i.i.i: ; preds = %before_rhs.i
%60 = inttoptr i64 %.sroa.0.0.4748 to %"ll::limb::Limb"*
%61 = getelementptr inbounds %"ll::limb::Limb"* %60, i64 0, i32 0
%62 = load i64* %61, align 8, !alias.scope !3320, !noalias !3323
%63 = icmp eq i64 %62, 1
br i1 %63, label %then-block-21676-.i, label %next-block.i.i
cond.i.i: ; preds = %next-block.i.i
%64 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%65 = icmp eq i32 %59, 0
br i1 %65, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i, label %then-block-15297-.i.i.i
then-block-15297-.i.i.i: ; preds = %cond.i.i
%66 = inttoptr i64 %.sroa.0.0.4748 to i8*
%67 = zext i32 %59 to i64
%68 = shl nuw nsw i64 %67, 3
tail call void @je_sdallocx(i8* %66, i64 %68, i32 0), !noalias !3334
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i: ; preds = %unwind_custom_.i.thread52, %then-block-15297-.i.i.i, %cond.i.i
%69 = phi { i8*, i32 } [ %64, %then-block-15297-.i.i.i ], [ %64, %cond.i.i ], [ %77, %unwind_custom_.i.thread52 ]
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
resume { i8*, i32 } %69
then-block-21676-.i: ; preds = %before_rhs2.i.i.i
%.sroa.0.0..sroa_cast10 = bitcast %"int::Int"* %0 to i64*
store i64 %.sroa.0.0.4748, i64* %.sroa.0.0..sroa_cast10, align 8
%.sroa.12.0..sroa_idx16 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 0, i32* %.sroa.12.0..sroa_idx16, align 8
%.sroa.17.0..sroa_idx22 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %59, i32* %.sroa.17.0..sroa_idx22, align 4
%.sroa.21.0..sroa_idx = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %.sroa.21.0..sroa_idx, align 8
%.sroa.24.0..sroa_raw_cast = bitcast %"int::Int"* %0 to i8*
%.sroa.24.0..sroa_raw_idx = getelementptr inbounds i8* %.sroa.24.0..sroa_raw_cast, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_raw_idx, i8* %.sroa.24.0..sroa_idx44, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8 29, i64 7, i32 1, i1 false)
br label %"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE.exit"
then-block-21691-.i: ; preds = %before_rhs.i
tail call void @_ZN2ll14divide_by_zero20h178ec4ab6f7f43dfXvdE(), !noalias !3334
unreachable
next-block.i.i: ; preds = %before_rhs2.i.i.i, %before_rhs.i
%70 = bitcast %"int::Int"* %3 to i8*
call void @llvm.lifetime.start(i64 24, i8* %70), !noalias !3334
%71 = invoke fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8)
to label %normal-return5.i unwind label %cond.i.i, !noalias !3334
normal-return5.i: ; preds = %next-block.i.i
%72 = ptrtoint i8* %71 to i64
%limb.sroa.0.0..sroa_idx.i.i.i = bitcast i8* %71 to i64*
store i64 %1, i64* %limb.sroa.0.0..sroa_idx.i.i.i, align 8, !noalias !3335
%i.sroa.0.0..sroa_cast7.i.i.i = bitcast %"int::Int"* %3 to i64*
store i64 %72, i64* %i.sroa.0.0..sroa_cast7.i.i.i, align 8, !alias.scope !3340, !noalias !3334
%73 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
store i32 1, i32* %73, align 8, !alias.scope !3341, !noalias !3334
%74 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 2
store i32 1, i32* %74, align 4, !alias.scope !3341, !noalias !3334
%75 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 3
store i8 -44, i8* %75, align 8, !alias.scope !3341, !noalias !3334
%76 = bitcast %"int::Int"* %arg.i to i8*
call void @llvm.lifetime.start(i64 24, i8* %76), !noalias !3334
%.sroa.0.0..sroa_cast12 = bitcast %"int::Int"* %arg.i to i64*
store i64 %.sroa.0.0.4748, i64* %.sroa.0.0..sroa_cast12, align 8
%.sroa.12.0..sroa_idx18 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 1
store i32 %10, i32* %.sroa.12.0..sroa_idx18, align 8
%.sroa.17.0..sroa_idx24 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 2
store i32 %59, i32* %.sroa.17.0..sroa_idx24, align 4
%.sroa.21.0..sroa_idx28 = getelementptr inbounds %"int::Int"* %arg.i, i64 0, i32 3
store i8 -44, i8* %.sroa.21.0..sroa_idx28, align 8
%.sroa.24.0..sroa_raw_idx35 = getelementptr inbounds i8* %76, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.sroa.24.0..sroa_raw_idx35, i8* %.sroa.24.0..sroa_idx44, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %.sroa.24.0..sroa_idx44, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int18Int.Rem$LT$Int$GT$3rem20h360830dc24e586ceHWeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %0, %"int::Int"* noalias nocapture dereferenceable(24) %3, %"int::Int"* noalias nocapture dereferenceable(24) %arg.i)
to label %normal-return6.i unwind label %unwind_custom_.i.thread52, !noalias !3342
unwind_custom_.i.thread52: ; preds = %normal-return5.i
%77 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit.i
normal-return6.i: ; preds = %normal-return5.i
call void @llvm.lifetime.end(i64 24, i8* %76), !noalias !3334
call void @llvm.lifetime.end(i64 24, i8* %70), !noalias !3334
br label %"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE.exit"
"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE.exit": ; preds = %then-block-21676-.i, %normal-return6.i
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
call void @llvm.lifetime.end(i64 7, i8* %.sroa.24.0..sroa_idx44)
br label %clean_custom_
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int24i32.PartialEq$LT$Int$GT$2eq20hb9443578c8d7eb40b2fE"(i32* noalias nocapture readonly dereferenceable(4), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = load i32* %0, align 4, !alias.scope !3343, !noalias !3346
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !3348, !noalias !3343
%5 = icmp eq i32 %4, 0
br i1 %5, label %then-block-22498-.i, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i: ; preds = %entry-block
%6 = ashr i32 %4, 31
%7 = or i32 %6, 1
%8 = icmp eq i32 %2, 0
br i1 %8, label %then-block-22498-.i, label %next-block.i
then-block-22498-.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i, %entry-block
%sret_slot.0.i45.i = phi i32 [ %7, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i ], [ 0, %entry-block ]
%9 = icmp eq i32 %2, %sret_slot.0.i45.i
%10 = zext i1 %9 to i8
br label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit"
next-block.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%11 = icmp slt i32 %7, 0
%12 = icmp sgt i32 %2, 0
%.37.i = and i1 %12, %11
br i1 %.37.i, label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit", label %join3.i
join3.i: ; preds = %next-block.i
%13 = icmp sgt i32 %7, 0
%14 = icmp slt i32 %2, 0
%.38.i = and i1 %14, %13
br i1 %.38.i, label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit", label %next-block7.i
next-block7.i: ; preds = %join3.i
br i1 %11, label %then-block-22530-.i, label %next-block9.i
then-block-22530-.i: ; preds = %next-block7.i
%15 = icmp slt i32 %4, 0
%16 = sub i32 0, %4
%sret_slot.0.i.i.i = select i1 %15, i32 %16, i32 %4
%17 = icmp sgt i32 %sret_slot.0.i.i.i, 1
br i1 %17, label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit", label %next-block8.i
next-block8.i: ; preds = %then-block-22530-.i
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%19 = load %"ll::limb::Limb"** %18, align 8, !alias.scope !3351, !noalias !3343
%20 = sub i32 0, %2
%sret_slot.0.i41.i = select i1 %14, i32 %20, i32 %2
%21 = sext i32 %sret_slot.0.i41.i to i64
%22 = getelementptr inbounds %"ll::limb::Limb"* %19, i64 0, i32 0
%23 = load i64* %22, align 8, !alias.scope !3354, !noalias !3357
%24 = icmp eq i64 %23, %21
%25 = zext i1 %24 to i8
br label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit"
next-block9.i: ; preds = %next-block7.i
%26 = sub i32 0, %2
%sret_slot.0.i40.i = select i1 %14, i32 %26, i32 %2
%27 = sext i32 %sret_slot.0.i40.i to i64
%28 = or i32 %sret_slot.0.i40.i, %4
%29 = icmp eq i32 %28, 0
br i1 %29, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", label %next-block.i.i
next-block.i.i: ; preds = %next-block9.i
%30 = icmp eq i32 %4, 1
br i1 %30, label %before_rhs2.i.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
before_rhs2.i.i: ; preds = %next-block.i.i
%31 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%32 = load %"ll::limb::Limb"** %31, align 8, !alias.scope !3359, !noalias !3364
%33 = getelementptr inbounds %"ll::limb::Limb"* %32, i64 0, i32 0
%34 = load i64* %33, align 8, !alias.scope !3366, !noalias !3369
%35 = icmp eq i64 %34, %27
br label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i": ; preds = %before_rhs2.i.i, %next-block.i.i, %next-block9.i
%sret_slot.0.i39.i = phi i1 [ false, %next-block.i.i ], [ %35, %before_rhs2.i.i ], [ true, %next-block9.i ]
%36 = zext i1 %sret_slot.0.i39.i to i8
br label %"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit"
"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE.exit": ; preds = %then-block-22498-.i, %next-block.i, %join3.i, %then-block-22530-.i, %next-block8.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
%sret_slot.0.i = phi i8 [ %36, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i" ], [ %10, %then-block-22498-.i ], [ %25, %next-block8.i ], [ 0, %join3.i ], [ 0, %then-block-22530-.i ], [ 0, %next-block.i ]
%37 = icmp ne i8 %sret_slot.0.i, 0
ret i1 %37
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), i32* noalias nocapture readonly dereferenceable(4)) unnamed_addr #13 {
entry-block:
%2 = load i32* %1, align 4
%3 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !3371
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit, label %else-block.i
else-block.i: ; preds = %entry-block
%6 = ashr i32 %4, 31
%7 = or i32 %6, 1
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
_ZN3int3Int4sign20he27417198f6be603VJdE.exit: ; preds = %entry-block, %else-block.i
%sret_slot.0.i = phi i32 [ 0, %entry-block ], [ %7, %else-block.i ]
%8 = icmp slt i32 %2, 0
br i1 %8, label %join2, label %else-block
else-block: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%9 = icmp sgt i32 %2, 0
%. = zext i1 %9 to i32
br label %join2
join2: ; preds = %else-block, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit
%other_sign.0 = phi i32 [ -1, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit ], [ %., %else-block ]
%10 = or i32 %other_sign.0, %sret_slot.0.i
%11 = icmp eq i32 %10, 0
br i1 %11, label %clean_custom_, label %next-block
clean_custom_: ; preds = %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit, %next-block, %else-block4, %then-block-22661-, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", %join2
%sret_slot.sroa.0.0 = phi i16 [ %38, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit" ], [ 1, %join2 ], [ 1, %then-block-22661- ], [ 1, %else-block4 ], [ 1, %next-block ], [ 1, %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit ]
%sret_slot.sroa.4.0 = phi i16 [ %sret_slot.sroa.4.0.extract.shift, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit" ], [ 0, %join2 ], [ 255, %then-block-22661- ], [ 255, %else-block4 ], [ 1, %next-block ], [ %24, %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit ]
%sret_slot.sroa.4.0.insert.ext = shl i16 %sret_slot.sroa.4.0, 8
%sret_slot.sroa.0.0.insert.ext = and i16 %sret_slot.sroa.0.0, 255
%sret_slot.sroa.0.0.insert.insert = or i16 %sret_slot.sroa.4.0.insert.ext, %sret_slot.sroa.0.0.insert.ext
ret i16 %sret_slot.sroa.0.0.insert.insert
next-block: ; preds = %join2
%12 = icmp sgt i32 %sret_slot.0.i, %other_sign.0
br i1 %12, label %clean_custom_, label %else-block4
else-block4: ; preds = %next-block
%13 = icmp slt i32 %sret_slot.0.i, %other_sign.0
br i1 %13, label %clean_custom_, label %else-block5
else-block5: ; preds = %else-block4
%14 = icmp slt i32 %sret_slot.0.i, 0
br i1 %14, label %then-block-22661-, label %else-block8
then-block-22661-: ; preds = %else-block5
%15 = icmp slt i32 %4, 0
%16 = sub i32 0, %4
%sret_slot.0.i.i53 = select i1 %15, i32 %16, i32 %4
%17 = icmp sgt i32 %sret_slot.0.i.i53, 1
br i1 %17, label %clean_custom_, label %else-block6
else-block6: ; preds = %then-block-22661-
br i1 %5, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit, label %else-block.i52
else-block.i52: ; preds = %else-block6
%18 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%19 = load %"ll::limb::Limb"** %18, align 8, !alias.scope !3374
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %19, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3379
br label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit: ; preds = %else-block6, %else-block.i52
%sret_slot.sroa.0.0.i50 = phi i64 [ %sret_slot.sroa.0.0.copyload6.i, %else-block.i52 ], [ 0, %else-block6 ]
%20 = sub i32 0, %2
%sret_slot.0.i49 = select i1 %8, i32 %20, i32 %2
%21 = sext i32 %sret_slot.0.i49 to i64
%22 = icmp ult i64 %sret_slot.sroa.0.0.i50, %21
br i1 %22, label %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit, label %else-block.i.i
else-block.i.i: ; preds = %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
%23 = icmp ugt i64 %sret_slot.sroa.0.0.i50, %21
%..i.i = zext i1 %23 to i16
br label %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit
_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit: ; preds = %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit, %else-block.i.i
%sret_slot.0.i.i = phi i16 [ 255, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit ], [ %..i.i, %else-block.i.i ]
%24 = sub nsw i16 0, %sret_slot.0.i.i
br label %clean_custom_
else-block8: ; preds = %else-block5
%25 = sub i32 0, %2
%sret_slot.0.i48 = select i1 %8, i32 %25, i32 %2
%26 = sext i32 %sret_slot.0.i48 to i64
%27 = or i32 %4, %sret_slot.0.i48
%28 = icmp eq i32 %27, 0
br i1 %28, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %next-block.i.i
next-block.i.i: ; preds = %else-block8
%29 = icmp eq i32 %4, 1
br i1 %29, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", label %next-block.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i": ; preds = %next-block.i.i
%30 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%31 = load %"ll::limb::Limb"** %30, align 8, !alias.scope !3380, !noalias !3387
%32 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
%33 = load i64* %32, align 8, !alias.scope !3390, !noalias !3393
%34 = icmp eq i64 %33, %26
br i1 %34, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %else-block1.i
next-block.i: ; preds = %next-block.i.i
%35 = icmp slt i32 %4, 1
%..i = select i1 %35, i16 -255, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
else-block1.i: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
%36 = icmp ule i64 %33, %26
%37 = icmp ult i64 %33, %26
br i1 %37, label %match_case.i.i.i, label %compare_next.i.i.i
match_case.i.i.i: ; preds = %else-block1.i
switch i1 %36, label %compare_next.i.i.i [
i1 false, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
i1 true, label %match_case7.i.i.i
]
compare_next.i.i.i: ; preds = %match_case.i.i.i, %else-block1.i
%..i.i.i = select i1 %36, i16 1, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
match_case7.i.i.i: ; preds = %match_case.i.i.i
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit": ; preds = %else-block8, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", %match_case.i.i.i, %compare_next.i.i.i, %match_case7.i.i.i, %next-block.i
%38 = phi i16 [ %..i, %next-block.i ], [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i" ], [ -255, %match_case7.i.i.i ], [ %..i.i.i, %compare_next.i.i.i ], [ 0, %match_case.i.i.i ], [ 1, %else-block8 ]
%sret_slot.sroa.4.0.extract.shift = lshr i16 %38, 8
br label %clean_custom_
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int25i32.PartialOrd$LT$Int$GT$11partial_cmp20h6daf36f59324ca6dl4fE"(i32* noalias nocapture readonly dereferenceable(4), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = load i32* %0, align 4, !alias.scope !3395, !noalias !3398
%3 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%4 = load i32* %3, align 4, !alias.scope !3400, !noalias !3395
%5 = icmp eq i32 %4, 0
br i1 %5, label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i, label %else-block.i.i
else-block.i.i: ; preds = %entry-block
%6 = ashr i32 %4, 31
%7 = or i32 %6, 1
br label %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i: ; preds = %else-block.i.i, %entry-block
%sret_slot.0.i.i = phi i32 [ 0, %entry-block ], [ %7, %else-block.i.i ]
%8 = icmp slt i32 %2, 0
br i1 %8, label %join2.i, label %else-block.i
else-block.i: ; preds = %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%9 = icmp sgt i32 %2, 0
%..i = zext i1 %9 to i32
br label %join2.i
join2.i: ; preds = %else-block.i, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i
%other_sign.0.i = phi i32 [ -1, %_ZN3int3Int4sign20he27417198f6be603VJdE.exit.i ], [ %..i, %else-block.i ]
%10 = or i32 %other_sign.0.i, %sret_slot.0.i.i
%11 = icmp eq i32 %10, 0
br i1 %11, label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit", label %next-block.i
next-block.i: ; preds = %join2.i
%12 = icmp sgt i32 %sret_slot.0.i.i, %other_sign.0.i
br i1 %12, label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit", label %else-block4.i
else-block4.i: ; preds = %next-block.i
%13 = icmp slt i32 %sret_slot.0.i.i, %other_sign.0.i
br i1 %13, label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit", label %else-block5.i
else-block5.i: ; preds = %else-block4.i
%14 = icmp slt i32 %sret_slot.0.i.i, 0
br i1 %14, label %then-block-22661-.i, label %else-block8.i
then-block-22661-.i: ; preds = %else-block5.i
%15 = icmp slt i32 %4, 0
%16 = sub i32 0, %4
%sret_slot.0.i.i53.i = select i1 %15, i32 %16, i32 %4
%17 = icmp sgt i32 %sret_slot.0.i.i53.i, 1
br i1 %17, label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit", label %else-block6.i
else-block6.i: ; preds = %then-block-22661-.i
br i1 %5, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i, label %else-block.i52.i
else-block.i52.i: ; preds = %else-block6.i
%18 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%19 = load %"ll::limb::Limb"** %18, align 8, !alias.scope !3403, !noalias !3395
%sret_slot.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %19, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i.i, align 8, !noalias !3408
br label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i: ; preds = %else-block.i52.i, %else-block6.i
%sret_slot.sroa.0.0.i50.i = phi i64 [ %sret_slot.sroa.0.0.copyload6.i.i, %else-block.i52.i ], [ 0, %else-block6.i ]
%20 = sub i32 0, %2
%sret_slot.0.i49.i = select i1 %8, i32 %20, i32 %2
%21 = sext i32 %sret_slot.0.i49.i to i64
%22 = icmp ult i64 %sret_slot.sroa.0.0.i50.i, %21
br i1 %22, label %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i, label %else-block.i.i.i
else-block.i.i.i: ; preds = %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i
%23 = icmp ugt i64 %sret_slot.sroa.0.0.i50.i, %21
%..i.i.i = zext i1 %23 to i16
br label %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i
_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i: ; preds = %else-block.i.i.i, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i
%sret_slot.0.i.i.i = phi i16 [ 255, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit.i ], [ %..i.i.i, %else-block.i.i.i ]
%24 = sub nsw i16 0, %sret_slot.0.i.i.i
br label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit"
else-block8.i: ; preds = %else-block5.i
%25 = sub i32 0, %2
%sret_slot.0.i48.i = select i1 %8, i32 %25, i32 %2
%26 = sext i32 %sret_slot.0.i48.i to i64
%27 = or i32 %sret_slot.0.i48.i, %4
%28 = icmp eq i32 %27, 0
br i1 %28, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i", label %next-block.i.i.i
next-block.i.i.i: ; preds = %else-block8.i
%29 = icmp eq i32 %4, 1
br i1 %29, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i", label %next-block.i.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i": ; preds = %next-block.i.i.i
%30 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%31 = load %"ll::limb::Limb"** %30, align 8, !alias.scope !3409, !noalias !3416
%32 = getelementptr inbounds %"ll::limb::Limb"* %31, i64 0, i32 0
%33 = load i64* %32, align 8, !alias.scope !3419, !noalias !3422
%34 = icmp eq i64 %33, %26
br i1 %34, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i", label %else-block1.i.i
next-block.i.i: ; preds = %next-block.i.i.i
%35 = icmp slt i32 %4, 1
%..i.i = select i1 %35, i16 -255, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
else-block1.i.i: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i"
%36 = icmp ule i64 %33, %26
%37 = icmp ult i64 %33, %26
br i1 %37, label %match_case.i.i.i.i, label %compare_next.i.i.i.i
match_case.i.i.i.i: ; preds = %else-block1.i.i
switch i1 %36, label %compare_next.i.i.i.i [
i1 false, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
i1 true, label %match_case7.i.i.i.i
]
compare_next.i.i.i.i: ; preds = %match_case.i.i.i.i, %else-block1.i.i
%..i.i.i.i = select i1 %36, i16 1, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
match_case7.i.i.i.i: ; preds = %match_case.i.i.i.i
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i": ; preds = %match_case7.i.i.i.i, %compare_next.i.i.i.i, %match_case.i.i.i.i, %next-block.i.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i", %else-block8.i
%38 = phi i16 [ %..i.i, %next-block.i.i ], [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i" ], [ -255, %match_case7.i.i.i.i ], [ %..i.i.i.i, %compare_next.i.i.i.i ], [ 0, %match_case.i.i.i.i ], [ 1, %else-block8.i ]
%sret_slot.sroa.4.0.extract.shift.i = lshr i16 %38, 8
br label %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit"
"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit": ; preds = %join2.i, %next-block.i, %else-block4.i, %then-block-22661-.i, %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
%sret_slot.sroa.0.0.i = phi i16 [ %38, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i" ], [ 1, %join2.i ], [ 1, %then-block-22661-.i ], [ 1, %else-block4.i ], [ 1, %next-block.i ], [ 1, %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i ]
%sret_slot.sroa.4.0.i = phi i16 [ %sret_slot.sroa.4.0.extract.shift.i, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i" ], [ 0, %join2.i ], [ 255, %then-block-22661-.i ], [ 255, %else-block4.i ], [ 1, %next-block.i ], [ %24, %_ZN2ll4limb20Limb...std..cmp..Ord3cmp20ha4238d660acb74a9PXcE.exit.i ]
%self.sroa.0.0.extract.trunc.i = trunc i16 %sret_slot.sroa.0.0.i to i8
%cond.i = icmp eq i8 %self.sroa.0.0.extract.trunc.i, 1
br i1 %cond.i, label %match_case.i, label %"_ZN6option15Option$LT$T$GT$3map20h8166247695308680820E.exit"
match_case.i: ; preds = %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit"
%39 = sub nsw i16 0, %sret_slot.sroa.4.0.i
%phitmp.i = shl i16 %39, 8
br label %"_ZN6option15Option$LT$T$GT$3map20h8166247695308680820E.exit"
"_ZN6option15Option$LT$T$GT$3map20h8166247695308680820E.exit": ; preds = %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit", %match_case.i
%sret_slot.sroa.0.0.i4 = phi i16 [ 1, %match_case.i ], [ 0, %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit" ]
%sret_slot.sroa.3.0.i = phi i16 [ %phitmp.i, %match_case.i ], [ 0, %"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE.exit" ]
%sret_slot.sroa.0.0.insert.insert.i5 = or i16 %sret_slot.sroa.3.0.i, %sret_slot.sroa.0.0.i4
ret i16 %sret_slot.sroa.0.0.insert.insert.i5
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #13 {
entry-block:
%2 = load i64* %1, align 8
%3 = icmp eq i64 %2, 0
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3424, !noalias !3427
%6 = icmp eq i32 %5, 0
%or.cond.i = and i1 %3, %6
br i1 %or.cond.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit", label %next-block.i
next-block.i: ; preds = %entry-block
%7 = icmp eq i32 %5, 1
br i1 %7, label %before_rhs2.i, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
before_rhs2.i: ; preds = %next-block.i
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%9 = load %"ll::limb::Limb"** %8, align 8, !alias.scope !3429, !noalias !3427
%10 = getelementptr inbounds %"ll::limb::Limb"* %9, i64 0, i32 0
%11 = load i64* %10, align 8, !alias.scope !3432, !noalias !3435
%12 = icmp eq i64 %11, %2
br label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit"
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit": ; preds = %entry-block, %next-block.i, %before_rhs2.i
%sret_slot.0.i = phi i1 [ false, %next-block.i ], [ %12, %before_rhs2.i ], [ true, %entry-block ]
ret i1 %sret_slot.0.i
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @"_ZN3int26usize.PartialEq$LT$Int$GT$2eq20h23967d9f87aa7578e5fE"(i64* noalias nocapture readonly dereferenceable(8), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = load i64* %0, align 8, !alias.scope !3437, !noalias !3440
%3 = icmp eq i64 %2, 0
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3442, !noalias !3445
%6 = icmp eq i32 %5, 0
%or.cond.i.i = and i1 %3, %6
br i1 %or.cond.i.i, label %"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE.exit", label %next-block.i.i
next-block.i.i: ; preds = %entry-block
%7 = icmp eq i32 %5, 1
br i1 %7, label %before_rhs2.i.i, label %"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE.exit"
before_rhs2.i.i: ; preds = %next-block.i.i
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%9 = load %"ll::limb::Limb"** %8, align 8, !alias.scope !3447, !noalias !3445
%10 = getelementptr inbounds %"ll::limb::Limb"* %9, i64 0, i32 0
%11 = load i64* %10, align 8, !alias.scope !3450, !noalias !3453
%12 = icmp eq i64 %11, %2
br label %"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE.exit"
"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE.exit": ; preds = %entry-block, %next-block.i.i, %before_rhs2.i.i
%sret_slot.0.i.i = phi i1 [ false, %next-block.i.i ], [ %12, %before_rhs2.i.i ], [ true, %entry-block ]
ret i1 %sret_slot.0.i.i
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int27Int.PartialOrd$LT$usize$GT$11partial_cmp20hd2708848c5c470b2x5fE"(%"int::Int"* noalias nocapture readonly dereferenceable(24), i64* noalias nocapture readonly dereferenceable(8)) unnamed_addr #13 {
entry-block:
%2 = load i64* %1, align 8
%3 = icmp eq i64 %2, 0
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3455, !noalias !3460
%6 = icmp eq i32 %5, 0
%or.cond.i.i = and i1 %3, %6
br i1 %or.cond.i.i, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %next-block.i.i
next-block.i.i: ; preds = %entry-block
%7 = icmp eq i32 %5, 1
br i1 %7, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", label %next-block.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i": ; preds = %next-block.i.i
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%9 = load %"ll::limb::Limb"** %8, align 8, !alias.scope !3463, !noalias !3460
%10 = getelementptr inbounds %"ll::limb::Limb"* %9, i64 0, i32 0
%11 = load i64* %10, align 8, !alias.scope !3466, !noalias !3469
%12 = icmp eq i64 %11, %2
br i1 %12, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit", label %else-block1.i
next-block.i: ; preds = %next-block.i.i
%13 = icmp slt i32 %5, 1
%..i = select i1 %13, i16 -255, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
else-block1.i: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i"
%14 = icmp ule i64 %11, %2
%15 = icmp ult i64 %11, %2
br i1 %15, label %match_case.i.i.i, label %compare_next.i.i.i
match_case.i.i.i: ; preds = %else-block1.i
switch i1 %14, label %compare_next.i.i.i [
i1 false, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
i1 true, label %match_case7.i.i.i
]
compare_next.i.i.i: ; preds = %match_case.i.i.i, %else-block1.i
%..i.i.i = select i1 %14, i16 1, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
match_case7.i.i.i: ; preds = %match_case.i.i.i
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit"
"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit": ; preds = %entry-block, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i", %match_case.i.i.i, %compare_next.i.i.i, %match_case7.i.i.i, %next-block.i
%16 = phi i16 [ %..i, %next-block.i ], [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i" ], [ -255, %match_case7.i.i.i ], [ %..i.i.i, %compare_next.i.i.i ], [ 0, %match_case.i.i.i ], [ 1, %entry-block ]
ret i16 %16
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i16 @"_ZN3int27usize.PartialOrd$LT$Int$GT$11partial_cmp20h241cb6e1c7601685X5fE"(i64* noalias nocapture readonly dereferenceable(8), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #13 {
entry-block:
%2 = load i64* %0, align 8
%3 = icmp eq i64 %2, 0
%4 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 1
%5 = load i32* %4, align 4, !alias.scope !3471, !noalias !3478
%6 = icmp eq i32 %5, 0
%or.cond.i.i.i = and i1 %3, %6
br i1 %or.cond.i.i.i, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i", label %next-block.i.i.i
next-block.i.i.i: ; preds = %entry-block
%7 = icmp eq i32 %5, 1
br i1 %7, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i", label %next-block.i.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i": ; preds = %next-block.i.i.i
%8 = getelementptr inbounds %"int::Int"* %1, i64 0, i32 0, i32 0, i32 0
%9 = load %"ll::limb::Limb"** %8, align 8, !alias.scope !3482, !noalias !3478
%10 = getelementptr inbounds %"ll::limb::Limb"* %9, i64 0, i32 0
%11 = load i64* %10, align 8, !alias.scope !3485, !noalias !3488
%12 = icmp eq i64 %11, %2
br i1 %12, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i", label %else-block1.i.i
next-block.i.i: ; preds = %next-block.i.i.i
%13 = icmp slt i32 %5, 1
%..i.i = select i1 %13, i16 -255, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
else-block1.i.i: ; preds = %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i"
%14 = icmp ule i64 %11, %2
%15 = icmp ult i64 %11, %2
br i1 %15, label %match_case.i.i.i.i, label %compare_next.i.i.i.i
match_case.i.i.i.i: ; preds = %else-block1.i.i
switch i1 %14, label %compare_next.i.i.i.i [
i1 false, label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
i1 true, label %match_case7.i.i.i.i
]
compare_next.i.i.i.i: ; preds = %match_case.i.i.i.i, %else-block1.i.i
%..i.i.i.i = select i1 %14, i16 1, i16 257
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
match_case7.i.i.i.i: ; preds = %match_case.i.i.i.i
br label %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i": ; preds = %match_case7.i.i.i.i, %compare_next.i.i.i.i, %match_case.i.i.i.i, %next-block.i.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i", %entry-block
%16 = phi i16 [ %..i.i, %next-block.i.i ], [ 1, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i" ], [ -255, %match_case7.i.i.i.i ], [ %..i.i.i.i, %compare_next.i.i.i.i ], [ 0, %match_case.i.i.i.i ], [ 1, %entry-block ]
%self.sroa.0.0.extract.trunc.i.i = trunc i16 %16 to i8
%cond.i.i = icmp eq i8 %self.sroa.0.0.extract.trunc.i.i, 1
br i1 %cond.i.i, label %match_case.i.i, label %"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE.exit"
match_case.i.i: ; preds = %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i"
%self.sroa.4.0.extract.shift.i.i = lshr i16 %16, 8
%17 = sub nsw i16 0, %self.sroa.4.0.extract.shift.i.i
%phitmp.i.i = shl i16 %17, 8
br label %"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE.exit"
"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE.exit": ; preds = %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i", %match_case.i.i
%sret_slot.sroa.0.0.i4.i = phi i16 [ 1, %match_case.i.i ], [ 0, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i" ]
%sret_slot.sroa.3.0.i.i = phi i16 [ %phitmp.i.i, %match_case.i.i ], [ 0, %"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE.exit.i" ]
%sret_slot.sroa.0.0.insert.insert.i.i = or i16 %sret_slot.sroa.3.0.i.i, %sret_slot.sroa.0.0.i4.i
ret i16 %sret_slot.sroa.0.0.insert.insert.i.i
}
; Function Attrs: uwtable
define void @"_ZN3int34Int...std..convert..From$LT$i8$GT$4from20he92e8d55a78bf141m6fE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i8) unnamed_addr #6 {
entry-block:
%2 = icmp eq i8 %1, 0
br i1 %2, label %then-block-22840-, label %next-block
then-block-22840-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3490
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-22840-
%.sink34 = phi i32 [ %., %next-block ], [ 0, %then-block-22840- ]
%.sink = phi i32 [ 1, %next-block ], [ 0, %then-block-22840- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink34, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i8 %1, 0
%8 = sub i8 0, %1
%sret_slot.0.i = select i1 %7, i8 %8, i8 %1
%9 = sext i8 %sret_slot.0.i to i64
%10 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3495
%11 = ptrtoint i8* %10 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %10 to i64*
store i64 %9, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3500
%. = select i1 %7, i32 -1, i32 1
%i6.sroa.0.0..sroa_cast21 = bitcast %"int::Int"* %0 to i64*
store i64 %11, i64* %i6.sroa.0.0..sroa_cast21, align 8
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$i16$GT$4from20h4e83347182b1c8edy8fE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i16) unnamed_addr #6 {
entry-block:
%2 = icmp eq i16 %1, 0
br i1 %2, label %then-block-22976-, label %next-block
then-block-22976-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3501
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-22976-
%.sink43 = phi i32 [ %., %next-block ], [ 0, %then-block-22976- ]
%.sink = phi i32 [ 1, %next-block ], [ 0, %then-block-22976- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink43, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i16 %1, 0
%8 = sub i16 0, %1
%sret_slot.0.i = select i1 %7, i16 %8, i16 %1
%9 = sext i16 %sret_slot.0.i to i64
%10 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3506
%11 = ptrtoint i8* %10 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %10 to i64*
store i64 %9, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3511
%. = select i1 %7, i32 -1, i32 1
%i6.sroa.0.0..sroa_cast30 = bitcast %"int::Int"* %0 to i64*
store i64 %11, i64* %i6.sroa.0.0..sroa_cast30, align 8
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$i64$GT$4from20hc2e384d8fdc9d396WcgE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64) unnamed_addr #6 {
entry-block:
%2 = icmp eq i64 %1, 0
br i1 %2, label %then-block-23248-, label %next-block
then-block-23248-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3512
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23248-
%.sink43 = phi i32 [ %., %next-block ], [ 0, %then-block-23248- ]
%.sink = phi i32 [ 1, %next-block ], [ 0, %then-block-23248- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink43, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = icmp slt i64 %1, 0
%8 = sub i64 0, %1
%sret_slot.0.i = select i1 %7, i64 %8, i64 %1
%9 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3517
%10 = ptrtoint i8* %9 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %9 to i64*
store i64 %sret_slot.0.i, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3522
%. = select i1 %7, i32 -1, i32 1
%i6.sroa.0.0..sroa_cast30 = bitcast %"int::Int"* %0 to i64*
store i64 %10, i64* %i6.sroa.0.0..sroa_cast30, align 8
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int34Int...std..convert..From$LT$u8$GT$4from20h3120e057dba3b210khgE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i8) unnamed_addr #6 {
entry-block:
%2 = icmp eq i8 %1, 0
br i1 %2, label %then-block-23520-, label %next-block
then-block-23520-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3523
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23520-
%.sink15 = phi i32 [ 1, %next-block ], [ 0, %then-block-23520- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink15, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink15, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = zext i8 %1 to i64
%8 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3528
%9 = ptrtoint i8* %8 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %8 to i64*
store i64 %7, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3533
%i.sroa.0.0..sroa_cast7.i = bitcast %"int::Int"* %0 to i64*
store i64 %9, i64* %i.sroa.0.0..sroa_cast7.i, align 8, !alias.scope !3533
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$u16$GT$4from20hb5da0f32f065787eYigE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i16) unnamed_addr #6 {
entry-block:
%2 = icmp eq i16 %1, 0
br i1 %2, label %then-block-23622-, label %next-block
then-block-23622-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3534
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23622-
%.sink21 = phi i32 [ 1, %next-block ], [ 0, %then-block-23622- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink21, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink21, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = zext i16 %1 to i64
%8 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3539
%9 = ptrtoint i8* %8 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %8 to i64*
store i64 %7, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3544
%i.sroa.0.0..sroa_cast7.i = bitcast %"int::Int"* %0 to i64*
store i64 %9, i64* %i.sroa.0.0..sroa_cast7.i, align 8, !alias.scope !3544
br label %clean_custom_
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$u32$GT$4from20hb1afed05aa11e42cCkgE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i32) unnamed_addr #6 {
entry-block:
%2 = icmp eq i32 %1, 0
br i1 %2, label %then-block-23724-, label %next-block
then-block-23724-: ; preds = %entry-block
%3 = bitcast %"int::Int"* %0 to i64*
store i64 1, i64* %3, align 8, !alias.scope !3545
br label %clean_custom_
clean_custom_: ; preds = %next-block, %then-block-23724-
%.sink21 = phi i32 [ 1, %next-block ], [ 0, %then-block-23724- ]
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
store i32 %.sink21, i32* %4, align 8
%5 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 2
store i32 %.sink21, i32* %5, align 4
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 3
store i8 -44, i8* %6, align 8
ret void
next-block: ; preds = %entry-block
%7 = zext i32 %1 to i64
%8 = tail call fastcc i8* @_ZN3mem14allocate_bytes20hc9fd548f96e31bd9HBdE(i64 8), !noalias !3550
%9 = ptrtoint i8* %8 to i64
%limb.sroa.0.0..sroa_idx.i = bitcast i8* %8 to i64*
store i64 %7, i64* %limb.sroa.0.0..sroa_idx.i, align 8, !noalias !3555
%i.sroa.0.0..sroa_cast7.i = bitcast %"int::Int"* %0 to i64*
store i64 %9, i64* %i.sroa.0.0..sroa_cast7.i, align 8, !alias.scope !3555
br label %clean_custom_
}
; Function Attrs: uwtable
define i8 @_ZN3int15Int.fmt..Binary3fmt20hd6db53087304fa58ypgE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
normal-return:
%arg3.i = alloca %str_slice, align 8
%2 = alloca %"3.collections::string::String", align 8
%arg8 = alloca %str_slice, align 8
%arg9 = alloca %str_slice, align 8
%3 = bitcast %"3.collections::string::String"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
call void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %0, i8 2, i1 zeroext false)
%4 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 0, i32 0, i32 0
%5 = load i8** %4, align 8, !alias.scope !3556, !noalias !3563, !nonnull !557
%6 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 1
%7 = load i64* %6, align 8, !alias.scope !3556, !noalias !3563
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3567
%10 = icmp sgt i32 %9, -1
br i1 %10, label %next-block, label %then-block-24050-
clean_custom_: ; preds = %then-block-28382-.i.i.i39, %unwind_ast_24028_5, %unwind_ast_24028_5
call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %19
then-block-24050-: ; preds = %normal-return
%11 = icmp eq i64 %7, 1
br i1 %11, label %entry-block.then-block-31627-_crit_edge.i, label %next-block.i.i
entry-block.then-block-31627-_crit_edge.i: ; preds = %then-block-24050-
%.pre.i = getelementptr inbounds i8* %5, i64 1
br label %normal-return4
next-block.i.i: ; preds = %then-block-24050-
%12 = icmp ugt i64 %7, 1
br i1 %12, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i41
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%13 = getelementptr inbounds i8* %5, i64 1
%14 = load i8* %13, align 1, !noalias !3570
%15 = icmp sgt i8 %14, -1
%16 = icmp ugt i8 %14, -65
%..i.i = or i1 %15, %16
br i1 %..i.i, label %normal-return4, label %else-block.i41
else-block.i41: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%17 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %17), !noalias !3576
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %5, i8** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.6.0..sroa_idx48 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %7, i64* %arg.sroa.6.0..sroa_idx48, align 8
invoke void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %7)
to label %.noexc unwind label %unwind_ast_24028_5
.noexc: ; preds = %else-block.i41
unreachable
normal-return4: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %entry-block.then-block-31627-_crit_edge.i
%.pre-phi.i = phi i8* [ %.pre.i, %entry-block.then-block-31627-_crit_edge.i ], [ %13, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i ]
%18 = add i64 %7, -1
br label %next-block
unwind_ast_24028_5: ; preds = %else-block.i41, %next-block
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%20 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%21 = load i64* %20, align 8, !alias.scope !3577
switch i64 %21, label %then-block-28382-.i.i.i39 [
i64 2097865012304223517, label %clean_custom_
i64 0, label %clean_custom_
]
then-block-28382-.i.i.i39: ; preds = %unwind_ast_24028_5
tail call void @je_sdallocx(i8* %5, i64 %21, i32 0)
br label %clean_custom_
next-block: ; preds = %normal-return, %normal-return4
%22 = phi i1 [ false, %normal-return4 ], [ true, %normal-return ]
%s.sroa.7.0.copyload66 = phi i64 [ %18, %normal-return4 ], [ %7, %normal-return ]
%s.sroa.0.0.arg.sroa.0.0.copyload65 = phi i8* [ %.pre-phi.i, %normal-return4 ], [ %5, %normal-return ]
%23 = bitcast %str_slice* %arg8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %23)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast (%str_slice* @const9796 to i8*), i64 16, i32 8, i1 false)
%24 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%s.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg9, i64 0, i32 0
store i8* %s.sroa.0.0.arg.sroa.0.0.copyload65, i8** %s.sroa.0.0..sroa_idx, align 8
%s.sroa.7.0..sroa_idx62 = getelementptr inbounds %str_slice* %arg9, i64 0, i32 1
store i64 %s.sroa.7.0.copyload66, i64* %s.sroa.7.0..sroa_idx62, align 8
%25 = invoke i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, i1 zeroext %22, %str_slice* noalias nocapture dereferenceable(16) %arg8, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_24028_5
normal-return10: ; preds = %next-block
call void @llvm.lifetime.end(i64 16, i8* %24)
call void @llvm.lifetime.end(i64 16, i8* %23)
%26 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%27 = load i64* %26, align 8, !alias.scope !3580
switch i64 %27, label %then-block-28382-.i.i.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
]
then-block-28382-.i.i.i: ; preds = %normal-return10
tail call void @je_sdallocx(i8* %5, i64 %27, i32 0)
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit: ; preds = %normal-return10, %normal-return10, %then-block-28382-.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %3)
ret i8 %25
}
declare i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96), i1 zeroext, %str_slice* noalias nocapture dereferenceable(16), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #7
; Function Attrs: uwtable
define i8 @_ZN3int14Int.fmt..Octal3fmt20h47716bbb1dcff603mqgE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
normal-return:
%arg3.i = alloca %str_slice, align 8
%2 = alloca %"3.collections::string::String", align 8
%arg8 = alloca %str_slice, align 8
%arg9 = alloca %str_slice, align 8
%3 = bitcast %"3.collections::string::String"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
call void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %0, i8 8, i1 zeroext false)
%4 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 0, i32 0, i32 0
%5 = load i8** %4, align 8, !alias.scope !3583, !noalias !3590, !nonnull !557
%6 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 1
%7 = load i64* %6, align 8, !alias.scope !3583, !noalias !3590
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3594
%10 = icmp sgt i32 %9, -1
br i1 %10, label %next-block, label %then-block-24100-
clean_custom_: ; preds = %then-block-28382-.i.i.i39, %unwind_ast_24078_5, %unwind_ast_24078_5
call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %19
then-block-24100-: ; preds = %normal-return
%11 = icmp eq i64 %7, 1
br i1 %11, label %entry-block.then-block-31627-_crit_edge.i, label %next-block.i.i
entry-block.then-block-31627-_crit_edge.i: ; preds = %then-block-24100-
%.pre.i = getelementptr inbounds i8* %5, i64 1
br label %normal-return4
next-block.i.i: ; preds = %then-block-24100-
%12 = icmp ugt i64 %7, 1
br i1 %12, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i41
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%13 = getelementptr inbounds i8* %5, i64 1
%14 = load i8* %13, align 1, !noalias !3597
%15 = icmp sgt i8 %14, -1
%16 = icmp ugt i8 %14, -65
%..i.i = or i1 %15, %16
br i1 %..i.i, label %normal-return4, label %else-block.i41
else-block.i41: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%17 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %17), !noalias !3603
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %5, i8** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.6.0..sroa_idx48 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %7, i64* %arg.sroa.6.0..sroa_idx48, align 8
invoke void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %7)
to label %.noexc unwind label %unwind_ast_24078_5
.noexc: ; preds = %else-block.i41
unreachable
normal-return4: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %entry-block.then-block-31627-_crit_edge.i
%.pre-phi.i = phi i8* [ %.pre.i, %entry-block.then-block-31627-_crit_edge.i ], [ %13, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i ]
%18 = add i64 %7, -1
br label %next-block
unwind_ast_24078_5: ; preds = %else-block.i41, %next-block
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%20 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%21 = load i64* %20, align 8, !alias.scope !3604
switch i64 %21, label %then-block-28382-.i.i.i39 [
i64 2097865012304223517, label %clean_custom_
i64 0, label %clean_custom_
]
then-block-28382-.i.i.i39: ; preds = %unwind_ast_24078_5
tail call void @je_sdallocx(i8* %5, i64 %21, i32 0)
br label %clean_custom_
next-block: ; preds = %normal-return, %normal-return4
%22 = phi i1 [ false, %normal-return4 ], [ true, %normal-return ]
%s.sroa.7.0.copyload66 = phi i64 [ %18, %normal-return4 ], [ %7, %normal-return ]
%s.sroa.0.0.arg.sroa.0.0.copyload65 = phi i8* [ %.pre-phi.i, %normal-return4 ], [ %5, %normal-return ]
%23 = bitcast %str_slice* %arg8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %23)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast (%str_slice* @const9799 to i8*), i64 16, i32 8, i1 false)
%24 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%s.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg9, i64 0, i32 0
store i8* %s.sroa.0.0.arg.sroa.0.0.copyload65, i8** %s.sroa.0.0..sroa_idx, align 8
%s.sroa.7.0..sroa_idx62 = getelementptr inbounds %str_slice* %arg9, i64 0, i32 1
store i64 %s.sroa.7.0.copyload66, i64* %s.sroa.7.0..sroa_idx62, align 8
%25 = invoke i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, i1 zeroext %22, %str_slice* noalias nocapture dereferenceable(16) %arg8, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_24078_5
normal-return10: ; preds = %next-block
call void @llvm.lifetime.end(i64 16, i8* %24)
call void @llvm.lifetime.end(i64 16, i8* %23)
%26 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%27 = load i64* %26, align 8, !alias.scope !3607
switch i64 %27, label %then-block-28382-.i.i.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
]
then-block-28382-.i.i.i: ; preds = %normal-return10
tail call void @je_sdallocx(i8* %5, i64 %27, i32 0)
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit: ; preds = %normal-return10, %normal-return10, %then-block-28382-.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %3)
ret i8 %25
}
; Function Attrs: uwtable
define i8 @_ZN3int16Int.fmt..Display3fmt20hbcabc95359686660argE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
normal-return:
%arg3.i = alloca %str_slice, align 8
%2 = alloca %"3.collections::string::String", align 8
%arg8 = alloca %str_slice, align 8
%arg9 = alloca %str_slice, align 8
%3 = bitcast %"3.collections::string::String"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
call void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %0, i8 10, i1 zeroext false)
%4 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 0, i32 0, i32 0
%5 = load i8** %4, align 8, !alias.scope !3610, !noalias !3617, !nonnull !557
%6 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 1
%7 = load i64* %6, align 8, !alias.scope !3610, !noalias !3617
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3621
%10 = icmp sgt i32 %9, -1
br i1 %10, label %next-block, label %then-block-24150-
clean_custom_: ; preds = %then-block-28382-.i.i.i39, %unwind_ast_24128_5, %unwind_ast_24128_5
call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %19
then-block-24150-: ; preds = %normal-return
%11 = icmp eq i64 %7, 1
br i1 %11, label %entry-block.then-block-31627-_crit_edge.i, label %next-block.i.i
entry-block.then-block-31627-_crit_edge.i: ; preds = %then-block-24150-
%.pre.i = getelementptr inbounds i8* %5, i64 1
br label %normal-return4
next-block.i.i: ; preds = %then-block-24150-
%12 = icmp ugt i64 %7, 1
br i1 %12, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i41
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%13 = getelementptr inbounds i8* %5, i64 1
%14 = load i8* %13, align 1, !noalias !3624
%15 = icmp sgt i8 %14, -1
%16 = icmp ugt i8 %14, -65
%..i.i = or i1 %15, %16
br i1 %..i.i, label %normal-return4, label %else-block.i41
else-block.i41: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%17 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %17), !noalias !3630
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %5, i8** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.6.0..sroa_idx48 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %7, i64* %arg.sroa.6.0..sroa_idx48, align 8
invoke void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %7)
to label %.noexc unwind label %unwind_ast_24128_5
.noexc: ; preds = %else-block.i41
unreachable
normal-return4: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %entry-block.then-block-31627-_crit_edge.i
%.pre-phi.i = phi i8* [ %.pre.i, %entry-block.then-block-31627-_crit_edge.i ], [ %13, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i ]
%18 = add i64 %7, -1
br label %next-block
unwind_ast_24128_5: ; preds = %else-block.i41, %next-block
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%20 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%21 = load i64* %20, align 8, !alias.scope !3631
switch i64 %21, label %then-block-28382-.i.i.i39 [
i64 2097865012304223517, label %clean_custom_
i64 0, label %clean_custom_
]
then-block-28382-.i.i.i39: ; preds = %unwind_ast_24128_5
tail call void @je_sdallocx(i8* %5, i64 %21, i32 0)
br label %clean_custom_
next-block: ; preds = %normal-return, %normal-return4
%22 = phi i1 [ false, %normal-return4 ], [ true, %normal-return ]
%s.sroa.7.0.copyload66 = phi i64 [ %18, %normal-return4 ], [ %7, %normal-return ]
%s.sroa.0.0.arg.sroa.0.0.copyload65 = phi i8* [ %.pre-phi.i, %normal-return4 ], [ %5, %normal-return ]
%23 = bitcast %str_slice* %arg8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %23)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast (%str_slice* @const9801 to i8*), i64 16, i32 8, i1 false)
%24 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%s.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg9, i64 0, i32 0
store i8* %s.sroa.0.0.arg.sroa.0.0.copyload65, i8** %s.sroa.0.0..sroa_idx, align 8
%s.sroa.7.0..sroa_idx62 = getelementptr inbounds %str_slice* %arg9, i64 0, i32 1
store i64 %s.sroa.7.0.copyload66, i64* %s.sroa.7.0..sroa_idx62, align 8
%25 = invoke i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, i1 zeroext %22, %str_slice* noalias nocapture dereferenceable(16) %arg8, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_24128_5
normal-return10: ; preds = %next-block
call void @llvm.lifetime.end(i64 16, i8* %24)
call void @llvm.lifetime.end(i64 16, i8* %23)
%26 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%27 = load i64* %26, align 8, !alias.scope !3634
switch i64 %27, label %then-block-28382-.i.i.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
]
then-block-28382-.i.i.i: ; preds = %normal-return10
tail call void @je_sdallocx(i8* %5, i64 %27, i32 0)
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit: ; preds = %normal-return10, %normal-return10, %then-block-28382-.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %3)
ret i8 %25
}
; Function Attrs: uwtable
define i8 @_ZN3int17Int.fmt..LowerHex3fmt20hcebf049a41aae842MsgE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
normal-return:
%arg3.i = alloca %str_slice, align 8
%2 = alloca %"3.collections::string::String", align 8
%arg8 = alloca %str_slice, align 8
%arg9 = alloca %str_slice, align 8
%3 = bitcast %"3.collections::string::String"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
call void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %0, i8 16, i1 zeroext false)
%4 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 0, i32 0, i32 0
%5 = load i8** %4, align 8, !alias.scope !3637, !noalias !3644, !nonnull !557
%6 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 1
%7 = load i64* %6, align 8, !alias.scope !3637, !noalias !3644
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3648
%10 = icmp sgt i32 %9, -1
br i1 %10, label %next-block, label %then-block-24250-
clean_custom_: ; preds = %then-block-28382-.i.i.i39, %unwind_ast_24228_5, %unwind_ast_24228_5
call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %19
then-block-24250-: ; preds = %normal-return
%11 = icmp eq i64 %7, 1
br i1 %11, label %entry-block.then-block-31627-_crit_edge.i, label %next-block.i.i
entry-block.then-block-31627-_crit_edge.i: ; preds = %then-block-24250-
%.pre.i = getelementptr inbounds i8* %5, i64 1
br label %normal-return4
next-block.i.i: ; preds = %then-block-24250-
%12 = icmp ugt i64 %7, 1
br i1 %12, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i41
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%13 = getelementptr inbounds i8* %5, i64 1
%14 = load i8* %13, align 1, !noalias !3651
%15 = icmp sgt i8 %14, -1
%16 = icmp ugt i8 %14, -65
%..i.i = or i1 %15, %16
br i1 %..i.i, label %normal-return4, label %else-block.i41
else-block.i41: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%17 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %17), !noalias !3657
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %5, i8** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.6.0..sroa_idx48 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %7, i64* %arg.sroa.6.0..sroa_idx48, align 8
invoke void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %7)
to label %.noexc unwind label %unwind_ast_24228_5
.noexc: ; preds = %else-block.i41
unreachable
normal-return4: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %entry-block.then-block-31627-_crit_edge.i
%.pre-phi.i = phi i8* [ %.pre.i, %entry-block.then-block-31627-_crit_edge.i ], [ %13, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i ]
%18 = add i64 %7, -1
br label %next-block
unwind_ast_24228_5: ; preds = %else-block.i41, %next-block
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%20 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%21 = load i64* %20, align 8, !alias.scope !3658
switch i64 %21, label %then-block-28382-.i.i.i39 [
i64 2097865012304223517, label %clean_custom_
i64 0, label %clean_custom_
]
then-block-28382-.i.i.i39: ; preds = %unwind_ast_24228_5
tail call void @je_sdallocx(i8* %5, i64 %21, i32 0)
br label %clean_custom_
next-block: ; preds = %normal-return, %normal-return4
%22 = phi i1 [ false, %normal-return4 ], [ true, %normal-return ]
%s.sroa.7.0.copyload66 = phi i64 [ %18, %normal-return4 ], [ %7, %normal-return ]
%s.sroa.0.0.arg.sroa.0.0.copyload65 = phi i8* [ %.pre-phi.i, %normal-return4 ], [ %5, %normal-return ]
%23 = bitcast %str_slice* %arg8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %23)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast (%str_slice* @const9803 to i8*), i64 16, i32 8, i1 false)
%24 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%s.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg9, i64 0, i32 0
store i8* %s.sroa.0.0.arg.sroa.0.0.copyload65, i8** %s.sroa.0.0..sroa_idx, align 8
%s.sroa.7.0..sroa_idx62 = getelementptr inbounds %str_slice* %arg9, i64 0, i32 1
store i64 %s.sroa.7.0.copyload66, i64* %s.sroa.7.0..sroa_idx62, align 8
%25 = invoke i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, i1 zeroext %22, %str_slice* noalias nocapture dereferenceable(16) %arg8, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_24228_5
normal-return10: ; preds = %next-block
call void @llvm.lifetime.end(i64 16, i8* %24)
call void @llvm.lifetime.end(i64 16, i8* %23)
%26 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%27 = load i64* %26, align 8, !alias.scope !3661
switch i64 %27, label %then-block-28382-.i.i.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
]
then-block-28382-.i.i.i: ; preds = %normal-return10
tail call void @je_sdallocx(i8* %5, i64 %27, i32 0)
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit: ; preds = %normal-return10, %normal-return10, %then-block-28382-.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %3)
ret i8 %25
}
; Function Attrs: uwtable
define i8 @_ZN3int17Int.fmt..UpperHex3fmt20h1eda1ed753ed19ceAtgE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
normal-return:
%arg3.i = alloca %str_slice, align 8
%2 = alloca %"3.collections::string::String", align 8
%arg8 = alloca %str_slice, align 8
%arg9 = alloca %str_slice, align 8
%3 = bitcast %"3.collections::string::String"* %2 to i8*
call void @llvm.lifetime.start(i64 24, i8* %3)
call void @_ZN3int3Int12to_str_radix20hd5814afc5023e252fNdE(%"3.collections::string::String"* noalias nocapture sret dereferenceable(24) %2, %"int::Int"* noalias readonly dereferenceable(24) %0, i8 16, i1 zeroext true)
%4 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 0, i32 0, i32 0
%5 = load i8** %4, align 8, !alias.scope !3664, !noalias !3671, !nonnull !557
%6 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 1
%7 = load i64* %6, align 8, !alias.scope !3664, !noalias !3671
%8 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%9 = load i32* %8, align 4, !alias.scope !3675
%10 = icmp sgt i32 %9, -1
br i1 %10, label %next-block, label %then-block-24300-
clean_custom_: ; preds = %then-block-28382-.i.i.i39, %unwind_ast_24278_5, %unwind_ast_24278_5
call void @llvm.lifetime.end(i64 24, i8* %3)
resume { i8*, i32 } %19
then-block-24300-: ; preds = %normal-return
%11 = icmp eq i64 %7, 1
br i1 %11, label %entry-block.then-block-31627-_crit_edge.i, label %next-block.i.i
entry-block.then-block-31627-_crit_edge.i: ; preds = %then-block-24300-
%.pre.i = getelementptr inbounds i8* %5, i64 1
br label %normal-return4
next-block.i.i: ; preds = %then-block-24300-
%12 = icmp ugt i64 %7, 1
br i1 %12, label %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, label %else-block.i41
_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i: ; preds = %next-block.i.i
%13 = getelementptr inbounds i8* %5, i64 1
%14 = load i8* %13, align 1, !noalias !3678
%15 = icmp sgt i8 %14, -1
%16 = icmp ugt i8 %14, -65
%..i.i = or i1 %15, %16
br i1 %..i.i, label %normal-return4, label %else-block.i41
else-block.i41: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %next-block.i.i
%17 = bitcast %str_slice* %arg3.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %17), !noalias !3684
%arg.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 0
store i8* %5, i8** %arg.sroa.0.0..sroa_idx, align 8
%arg.sroa.6.0..sroa_idx48 = getelementptr inbounds %str_slice* %arg3.i, i64 0, i32 1
store i64 %7, i64* %arg.sroa.6.0..sroa_idx48, align 8
invoke void @_ZN3str16slice_error_fail20h649315142b3038c36XJE(%str_slice* noalias nocapture dereferenceable(16) %arg3.i, i64 1, i64 %7)
to label %.noexc unwind label %unwind_ast_24278_5
.noexc: ; preds = %else-block.i41
unreachable
normal-return4: ; preds = %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i, %entry-block.then-block-31627-_crit_edge.i
%.pre-phi.i = phi i8* [ %.pre.i, %entry-block.then-block-31627-_crit_edge.i ], [ %13, %_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE.exit.i ]
%18 = add i64 %7, -1
br label %next-block
unwind_ast_24278_5: ; preds = %else-block.i41, %next-block
%19 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
%20 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%21 = load i64* %20, align 8, !alias.scope !3685
switch i64 %21, label %then-block-28382-.i.i.i39 [
i64 2097865012304223517, label %clean_custom_
i64 0, label %clean_custom_
]
then-block-28382-.i.i.i39: ; preds = %unwind_ast_24278_5
tail call void @je_sdallocx(i8* %5, i64 %21, i32 0)
br label %clean_custom_
next-block: ; preds = %normal-return, %normal-return4
%22 = phi i1 [ false, %normal-return4 ], [ true, %normal-return ]
%s.sroa.7.0.copyload66 = phi i64 [ %18, %normal-return4 ], [ %7, %normal-return ]
%s.sroa.0.0.arg.sroa.0.0.copyload65 = phi i8* [ %.pre-phi.i, %normal-return4 ], [ %5, %normal-return ]
%23 = bitcast %str_slice* %arg8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %23)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %23, i8* bitcast (%str_slice* @const9803 to i8*), i64 16, i32 8, i1 false)
%24 = bitcast %str_slice* %arg9 to i8*
call void @llvm.lifetime.start(i64 16, i8* %24)
%s.sroa.0.0..sroa_idx = getelementptr inbounds %str_slice* %arg9, i64 0, i32 0
store i8* %s.sroa.0.0.arg.sroa.0.0.copyload65, i8** %s.sroa.0.0..sroa_idx, align 8
%s.sroa.7.0..sroa_idx62 = getelementptr inbounds %str_slice* %arg9, i64 0, i32 1
store i64 %s.sroa.7.0.copyload66, i64* %s.sroa.7.0..sroa_idx62, align 8
%25 = invoke i8 @"_ZN3fmt23Formatter$LT$$u27$a$GT$12pad_integral20h3fb7fcd33ef0ae56naNE"(%"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, i1 zeroext %22, %str_slice* noalias nocapture dereferenceable(16) %arg8, %str_slice* noalias nocapture dereferenceable(16) %arg9)
to label %normal-return10 unwind label %unwind_ast_24278_5
normal-return10: ; preds = %next-block
call void @llvm.lifetime.end(i64 16, i8* %24)
call void @llvm.lifetime.end(i64 16, i8* %23)
%26 = getelementptr inbounds %"3.collections::string::String"* %2, i64 0, i32 0, i32 2
%27 = load i64* %26, align 8, !alias.scope !3688
switch i64 %27, label %then-block-28382-.i.i.i [
i64 2097865012304223517, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
i64 0, label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
]
then-block-28382-.i.i.i: ; preds = %normal-return10
tail call void @je_sdallocx(i8* %5, i64 %27, i32 0)
br label %_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit
_ZN27collections..string..String9drop.957917hee59e4c21cfdaed5E.exit: ; preds = %normal-return10, %normal-return10, %then-block-28382-.i.i.i
call void @llvm.lifetime.end(i64 24, i8* %3)
ret i8 %25
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @_ZN3int35ParseIntError...std..cmp..PartialEq2eq20h33f1749e601f765asugE(%"int::ParseIntError"* noalias nocapture readonly dereferenceable(1), %"int::ParseIntError"* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"int::ParseIntError"* %1, i64 0, i32 0
%3 = getelementptr inbounds %"int::ParseIntError"* %0, i64 0, i32 0
%4 = load i8* %2, align 1, !range !558, !alias.scope !3691, !noalias !3694
switch i8 %4, label %_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE.exit [
i8 0, label %match_case.i
i8 1, label %match_case5.i
]
match_case.i: ; preds = %entry-block
%5 = load i8* %3, align 1, !range !558, !alias.scope !3694, !noalias !3691
%cond8.i = icmp eq i8 %5, 0
br label %_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE.exit
match_case5.i: ; preds = %entry-block
%6 = load i8* %3, align 1, !range !558, !alias.scope !3694, !noalias !3691
%cond.i = icmp eq i8 %6, 1
br label %_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE.exit
_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE.exit: ; preds = %entry-block, %match_case.i, %match_case5.i
%7 = phi i1 [ %cond.i, %match_case5.i ], [ false, %entry-block ], [ %cond8.i, %match_case.i ]
ret i1 %7
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE(i8* noalias nocapture readonly dereferenceable(1), i8* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%2 = load i8* %1, align 1, !range !558
switch i8 %2, label %join [
i8 0, label %match_case
i8 1, label %match_case5
]
match_case: ; preds = %entry-block
%3 = load i8* %0, align 1, !range !558
%cond8 = icmp eq i8 %3, 0
br label %join
match_case5: ; preds = %entry-block
%4 = load i8* %0, align 1, !range !558
%cond = icmp eq i8 %4, 1
ret i1 %cond
join: ; preds = %match_case, %entry-block
%sret_slot.0 = phi i1 [ false, %entry-block ], [ %cond8, %match_case ]
ret i1 %sret_slot.0
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @_ZN3int35ParseIntError...std..cmp..PartialEq2ne20h705118acf8e55034WugE(%"int::ParseIntError"* noalias nocapture readonly dereferenceable(1), %"int::ParseIntError"* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%2 = getelementptr inbounds %"int::ParseIntError"* %1, i64 0, i32 0
%3 = getelementptr inbounds %"int::ParseIntError"* %0, i64 0, i32 0
%4 = load i8* %2, align 1, !range !558, !alias.scope !3696, !noalias !3699
switch i8 %4, label %_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE.exit [
i8 0, label %match_case.i
i8 1, label %match_case5.i
]
match_case.i: ; preds = %entry-block
%5 = load i8* %3, align 1, !range !558, !alias.scope !3699, !noalias !3696
%not.cond8.i = icmp ne i8 %5, 0
br label %_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE.exit
match_case5.i: ; preds = %entry-block
%6 = load i8* %3, align 1, !range !558, !alias.scope !3699, !noalias !3696
%not.cond.i = icmp ne i8 %6, 1
br label %_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE.exit
_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE.exit: ; preds = %entry-block, %match_case.i, %match_case5.i
%7 = phi i1 [ %not.cond.i, %match_case5.i ], [ true, %entry-block ], [ %not.cond8.i, %match_case.i ]
ret i1 %7
}
; Function Attrs: inlinehint nounwind readonly uwtable
define zeroext i1 @_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE(i8* noalias nocapture readonly dereferenceable(1), i8* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%2 = load i8* %1, align 1, !range !558
switch i8 %2, label %join [
i8 0, label %match_case
i8 1, label %match_case5
]
match_case: ; preds = %entry-block
%3 = load i8* %0, align 1, !range !558
%not.cond8 = icmp ne i8 %3, 0
br label %join
match_case5: ; preds = %entry-block
%4 = load i8* %0, align 1, !range !558
%not.cond = icmp ne i8 %4, 1
ret i1 %not.cond
join: ; preds = %match_case, %entry-block
%sret_slot.0 = phi i1 [ true, %entry-block ], [ %not.cond8, %match_case ]
ret i1 %sret_slot.0
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i8 @_ZN3int33ParseIntError...std..clone..Clone5clone20hb7e87fb52caf1a6buvgE(%"int::ParseIntError"* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%1 = getelementptr inbounds %"int::ParseIntError"* %0, i64 0, i32 0
%2 = load i8* %1, align 1, !range !558, !alias.scope !3701
ret i8 %2
}
; Function Attrs: inlinehint nounwind readonly uwtable
define i8 @_ZN3int29ErrorKind...std..clone..Clone5clone20hf0484924b71d5807oygE(i8* noalias nocapture readonly dereferenceable(1)) unnamed_addr #13 {
entry-block:
%1 = load i8* %0, align 1, !range !558
ret i8 %1
}
; Function Attrs: uwtable
define i8 @_ZN3int31ParseIntError...std..fmt..Debug3fmt20h02473433cffff182RvgE(%"int::ParseIntError"* noalias readonly dereferenceable(1), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%arg.i = alloca %str_slice, align 8
%2 = alloca %"2.core::fmt::builders::DebugStruct", align 8
%arg1 = alloca %str_slice, align 8
%addr_of = alloca i8*, align 8
%__coerce_target = alloca { i8*, void (i8*)** }, align 8
%3 = getelementptr inbounds %"int::ParseIntError"* %0, i64 0, i32 0
%4 = bitcast %"2.core::fmt::builders::DebugStruct"* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %4)
%5 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %5), !noalias !3704
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* bitcast (%str_slice* @const9829 to i8*), i64 16, i32 8, i1 false), !noalias !3709
call void @_ZN3fmt8builders16debug_struct_new20haef5da84a942f3d2joME(%"2.core::fmt::builders::DebugStruct"* noalias nocapture sret dereferenceable(16) %2, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, %str_slice* noalias nocapture dereferenceable(16) %arg.i), !noalias !3710
call void @llvm.lifetime.end(i64 16, i8* %5), !noalias !3704
%6 = bitcast %str_slice* %arg1 to i8*
call void @llvm.lifetime.start(i64 16, i8* %6)
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* bitcast (%str_slice* @const9831 to i8*), i64 16, i32 8, i1 false)
%7 = bitcast i8** %addr_of to i8*
call void @llvm.lifetime.start(i64 8, i8* %7)
store i8* %3, i8** %addr_of, align 8
%8 = bitcast { i8*, void (i8*)** }* %__coerce_target to i8***
store i8** %addr_of, i8*** %8, align 8
%9 = getelementptr inbounds { i8*, void (i8*)** }* %__coerce_target, i64 0, i32 1
store void (i8*)** getelementptr inbounds ({ void (i8*)*, i64, i64, i8 (i8**, %"2.core::fmt::Formatter"*)* }* @vtable9833, i64 0, i32 0), void (i8*)*** %9, align 8
%10 = call dereferenceable(16) %"2.core::fmt::builders::DebugStruct"* @"_ZN3fmt8builders39DebugStruct$LT$$u27$a$C$$u20$$u27$b$GT$5field20hb0130b5fb2c65d63MoME"(%"2.core::fmt::builders::DebugStruct"* noalias dereferenceable(16) %2, %str_slice* noalias nocapture dereferenceable(16) %arg1, { i8*, void (i8*)** }* noalias nocapture dereferenceable(16) %__coerce_target)
%11 = bitcast { i8*, void (i8*)** }* %__coerce_target to i8*
call void @llvm.lifetime.end(i64 16, i8* %11)
call void @llvm.lifetime.end(i64 16, i8* %6)
%12 = call i8 @"_ZN3fmt8builders39DebugStruct$LT$$u27$a$C$$u20$$u27$b$GT$6finish20hab7b72ae5575956eSrME"(%"2.core::fmt::builders::DebugStruct"* noalias dereferenceable(16) %10)
call void @llvm.lifetime.end(i64 8, i8* %7)
call void @llvm.lifetime.end(i64 16, i8* %4)
ret i8 %12
}
declare i8 @"_ZN3fmt8builders39DebugStruct$LT$$u27$a$C$$u20$$u27$b$GT$6finish20hab7b72ae5575956eSrME"(%"2.core::fmt::builders::DebugStruct"* noalias dereferenceable(16)) unnamed_addr #7
declare dereferenceable(16) %"2.core::fmt::builders::DebugStruct"* @"_ZN3fmt8builders39DebugStruct$LT$$u27$a$C$$u20$$u27$b$GT$5field20hb0130b5fb2c65d63MoME"(%"2.core::fmt::builders::DebugStruct"* noalias dereferenceable(16), %str_slice* noalias nocapture dereferenceable(16), { i8*, void (i8*)** }* noalias nocapture dereferenceable(16)) unnamed_addr #7
declare void @_ZN3fmt8builders16debug_struct_new20haef5da84a942f3d2joME(%"2.core::fmt::builders::DebugStruct"* noalias nocapture sret dereferenceable(16), %"2.core::fmt::Formatter"* noalias dereferenceable(96), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #7
; Function Attrs: uwtable
define internal i8 @"_ZN3fmt23_$RF$$u27$a$u20$T.Debug3fmt20h4536141480235339740E"(i8** noalias nocapture readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%arg.i8.i = alloca %str_slice, align 8
%arg.i.i = alloca %str_slice, align 8
%2 = alloca %"2.core::fmt::builders::DebugTuple", align 8
%3 = alloca %"2.core::fmt::builders::DebugTuple", align 8
%4 = load i8** %0, align 8, !nonnull !557
%5 = load i8* %4, align 1, !range !558, !alias.scope !3711, !noalias !3714
%cond.i = icmp eq i8 %5, 0
br i1 %cond.i, label %match_case.i, label %match_else.i
match_else.i: ; preds = %entry-block
%6 = bitcast %"2.core::fmt::builders::DebugTuple"* %3 to i8*
call void @llvm.lifetime.start(i64 16, i8* %6), !noalias !3716
%7 = bitcast %str_slice* %arg.i.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %7), !noalias !3717
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* bitcast (%str_slice* @const9849 to i8*), i64 16, i32 8, i1 false), !noalias !3722
call void @_ZN3fmt8builders15debug_tuple_new20h7797acf2164cb856dtME(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(16) %3, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, %str_slice* noalias nocapture dereferenceable(16) %arg.i.i), !noalias !3723
call void @llvm.lifetime.end(i64 16, i8* %7), !noalias !3717
%8 = call i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20h56c64a3f87b3be5aywME"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(16) %3), !noalias !3711
call void @llvm.lifetime.end(i64 16, i8* %6), !noalias !3716
br label %_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE.exit
match_case.i: ; preds = %entry-block
%9 = bitcast %"2.core::fmt::builders::DebugTuple"* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %9), !noalias !3716
%10 = bitcast %str_slice* %arg.i8.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %10), !noalias !3724
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %10, i8* bitcast (%str_slice* @const9847 to i8*), i64 16, i32 8, i1 false), !noalias !3729
call void @_ZN3fmt8builders15debug_tuple_new20h7797acf2164cb856dtME(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(16) %2, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, %str_slice* noalias nocapture dereferenceable(16) %arg.i8.i), !noalias !3730
call void @llvm.lifetime.end(i64 16, i8* %10), !noalias !3724
%11 = call i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20h56c64a3f87b3be5aywME"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(16) %2), !noalias !3711
call void @llvm.lifetime.end(i64 16, i8* %9), !noalias !3716
br label %_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE.exit
_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE.exit: ; preds = %match_else.i, %match_case.i
%sret_slot.sroa.0.0.i = phi i8 [ %11, %match_case.i ], [ %8, %match_else.i ]
ret i8 %sret_slot.sroa.0.0.i
}
; Function Attrs: uwtable
define i8 @_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE(i8* noalias nocapture readonly dereferenceable(1), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%arg.i8 = alloca %str_slice, align 8
%arg.i = alloca %str_slice, align 8
%2 = alloca %"2.core::fmt::builders::DebugTuple", align 8
%3 = alloca %"2.core::fmt::builders::DebugTuple", align 8
%4 = load i8* %0, align 1, !range !558
%cond = icmp eq i8 %4, 0
br i1 %cond, label %match_case, label %match_else
match_else: ; preds = %entry-block
%5 = bitcast %"2.core::fmt::builders::DebugTuple"* %3 to i8*
call void @llvm.lifetime.start(i64 16, i8* %5)
%6 = bitcast %str_slice* %arg.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %6), !noalias !3731
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %6, i8* bitcast (%str_slice* @const9849 to i8*), i64 16, i32 8, i1 false), !noalias !3736
call void @_ZN3fmt8builders15debug_tuple_new20h7797acf2164cb856dtME(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(16) %3, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, %str_slice* noalias nocapture dereferenceable(16) %arg.i), !noalias !3737
call void @llvm.lifetime.end(i64 16, i8* %6), !noalias !3731
%7 = call i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20h56c64a3f87b3be5aywME"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(16) %3)
call void @llvm.lifetime.end(i64 16, i8* %5)
br label %join
match_case: ; preds = %entry-block
%8 = bitcast %"2.core::fmt::builders::DebugTuple"* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %8)
%9 = bitcast %str_slice* %arg.i8 to i8*
call void @llvm.lifetime.start(i64 16, i8* %9), !noalias !3738
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %9, i8* bitcast (%str_slice* @const9847 to i8*), i64 16, i32 8, i1 false), !noalias !3743
call void @_ZN3fmt8builders15debug_tuple_new20h7797acf2164cb856dtME(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(16) %2, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1, %str_slice* noalias nocapture dereferenceable(16) %arg.i8), !noalias !3744
call void @llvm.lifetime.end(i64 16, i8* %9), !noalias !3738
%10 = call i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20h56c64a3f87b3be5aywME"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(16) %2)
call void @llvm.lifetime.end(i64 16, i8* %8)
br label %join
join: ; preds = %match_else, %match_case
%sret_slot.sroa.0.0 = phi i8 [ %10, %match_case ], [ %7, %match_else ]
ret i8 %sret_slot.sroa.0.0
}
declare i8 @"_ZN3fmt8builders38DebugTuple$LT$$u27$a$C$$u20$$u27$b$GT$6finish20h56c64a3f87b3be5aywME"(%"2.core::fmt::builders::DebugTuple"* noalias dereferenceable(16)) unnamed_addr #7
declare void @_ZN3fmt8builders15debug_tuple_new20h7797acf2164cb856dtME(%"2.core::fmt::builders::DebugTuple"* noalias nocapture sret dereferenceable(16), %"2.core::fmt::Formatter"* noalias dereferenceable(96), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #7
; Function Attrs: nounwind uwtable
define void @_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE(%str_slice* noalias nocapture sret dereferenceable(16), %"int::ParseIntError"* noalias nocapture readonly dereferenceable(1)) unnamed_addr #0 {
entry-block:
%2 = alloca %str_slice, align 8
%.0..sroa_cast = bitcast %str_slice* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %.0..sroa_cast)
%3 = getelementptr inbounds %"int::ParseIntError"* %1, i64 0, i32 0
%4 = load i8* %3, align 1, !range !558
%cond = icmp eq i8 %4, 0
br i1 %cond, label %match_case, label %match_else
match_else: ; preds = %entry-block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.0..sroa_cast, i8* bitcast (%str_slice* @const9853 to i8*), i64 16, i32 8, i1 false)
br label %join
match_case: ; preds = %entry-block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.0..sroa_cast, i8* bitcast (%str_slice* @const9851 to i8*), i64 16, i32 8, i1 false)
br label %join
join: ; preds = %match_else, %match_case
%5 = bitcast %str_slice* %0 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %5, i8* %.0..sroa_cast, i64 16, i32 8, i1 false)
call void @llvm.lifetime.end(i64 16, i8* %.0..sroa_cast)
ret void
}
; Function Attrs: uwtable
define i8 @_ZN3int26ParseIntError.fmt..Display3fmt20hb3e302043ab3f974GzgE(%"int::ParseIntError"* noalias nocapture readonly dereferenceable(1), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
entry-block:
%2 = alloca %str_slice, align 8
%3 = alloca %str_slice, align 8
%4 = bitcast %str_slice* %3 to i8*
call void @llvm.lifetime.start(i64 16, i8* %4)
%.0..sroa_cast.i = bitcast %str_slice* %2 to i8*
call void @llvm.lifetime.start(i64 16, i8* %.0..sroa_cast.i)
%5 = getelementptr inbounds %"int::ParseIntError"* %0, i64 0, i32 0
%6 = load i8* %5, align 1, !range !558, !alias.scope !3745, !noalias !3748
%cond.i = icmp eq i8 %6, 0
br i1 %cond.i, label %match_case.i, label %match_else.i
match_else.i: ; preds = %entry-block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.0..sroa_cast.i, i8* bitcast (%str_slice* @const9853 to i8*), i64 16, i32 8, i1 false) #20, !noalias !3750
br label %_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE.exit
match_case.i: ; preds = %entry-block
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %.0..sroa_cast.i, i8* bitcast (%str_slice* @const9851 to i8*), i64 16, i32 8, i1 false) #20, !noalias !3750
br label %_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE.exit
_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE.exit: ; preds = %match_else.i, %match_case.i
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %.0..sroa_cast.i, i64 16, i32 8, i1 false) #20, !noalias !3745
call void @llvm.lifetime.end(i64 16, i8* %.0..sroa_cast.i)
%7 = call i8 @_ZN3fmt11str.Display3fmt20h1041f0bcd68fe193lFNE(%str_slice* noalias nocapture dereferenceable(16) %3, %"2.core::fmt::Formatter"* noalias dereferenceable(96) %1)
call void @llvm.lifetime.end(i64 16, i8* %4)
ret i8 %7
}
; Function Attrs: uwtable
define void @_ZN3int11Int.FromStr8from_str20had00dcd6881d4ca31zgE(%"2.core::result::Result<int::Int, int::ParseIntError>"* noalias nocapture sret dereferenceable(32), %str_slice* noalias nocapture dereferenceable(16)) unnamed_addr #6 {
entry-block:
%arg = alloca %str_slice, align 8
%2 = bitcast %str_slice* %arg to i8*
call void @llvm.lifetime.start(i64 16, i8* %2)
%3 = bitcast %str_slice* %1 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %3, i64 16, i32 8, i1 false)
call void @_ZN3int3Int14from_str_radix20h9f336fca03ab3a6dvRdE(%"2.core::result::Result<int::Int, int::ParseIntError>"* noalias nocapture sret dereferenceable(32) %0, %str_slice* noalias nocapture dereferenceable(16) %arg, i8 10)
call void @llvm.lifetime.end(i64 16, i8* %2)
tail call void @llvm.lifetime.end(i64 16, i8* %3)
ret void
}
; Function Attrs: nounwind readonly uwtable
define i8 @"_ZN3int49i8...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h36101ed5c41757eajAgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3751
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
clean_custom_: ; preds = %entry-block, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
%sret_slot.0 = phi i8 [ %8, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit ], [ 0, %entry-block ]
ret i8 %sret_slot.0
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
%phitmp = trunc i32 %5 to i8
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8, !alias.scope !3754
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3759
%phitmp32 = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i8
%8 = mul i8 %phitmp32, %phitmp
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i16 @"_ZN3int50i16...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h27ad721c3c916de95BgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3760
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
clean_custom_: ; preds = %entry-block, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
%sret_slot.0 = phi i16 [ %8, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit ], [ 0, %entry-block ]
ret i16 %sret_slot.0
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
%phitmp = trunc i32 %5 to i16
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8, !alias.scope !3763
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3768
%phitmp38 = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i16
%8 = mul i16 %phitmp38, %phitmp
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i32 @"_ZN3int50i32...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h1c71ab146b6b7633RDgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3769
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
clean_custom_: ; preds = %entry-block, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
%sret_slot.0 = phi i32 [ %8, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit ], [ 0, %entry-block ]
ret i32 %sret_slot.0
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
%6 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%7 = load %"ll::limb::Limb"** %6, align 8, !alias.scope !3772
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %7, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3777
%phitmp = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i32
%8 = mul i32 %phitmp, %5
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i64 @"_ZN3int50i64...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h2829d464443157eaDFgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3778
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
clean_custom_: ; preds = %entry-block, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit
%sret_slot.0 = phi i64 [ %9, %_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit ], [ 0, %entry-block ]
ret i64 %sret_slot.0
_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE.exit: ; preds = %entry-block
%4 = ashr i32 %2, 31
%5 = or i32 %4, 1
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%8 = load %"ll::limb::Limb"** %7, align 8, !alias.scope !3781
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %8, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3786
%9 = mul i64 %sret_slot.sroa.0.0.copyload6.i, %6
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i8 @"_ZN3int49u8...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h9fb3abc92d60306dbJgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3787
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %else-block.i25
clean_custom_: ; preds = %else-block.i25, %entry-block
%sret_slot.0 = phi i8 [ 0, %entry-block ], [ %phitmp, %else-block.i25 ]
ret i8 %sret_slot.0
else-block.i25: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%5 = load %"ll::limb::Limb"** %4, align 8, !alias.scope !3790
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3795
%phitmp = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i8
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i16 @"_ZN3int50u16...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20hcb1a6635e60f41a4CKgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3796
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %else-block.i28
clean_custom_: ; preds = %else-block.i28, %entry-block
%sret_slot.0 = phi i16 [ 0, %entry-block ], [ %phitmp, %else-block.i28 ]
ret i16 %sret_slot.0
else-block.i28: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%5 = load %"ll::limb::Limb"** %4, align 8, !alias.scope !3799
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3804
%phitmp = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i16
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i32 @"_ZN3int50u32...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h67580c677059d1d13LgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3805
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %else-block.i28
clean_custom_: ; preds = %else-block.i28, %entry-block
%sret_slot.0 = phi i32 [ 0, %entry-block ], [ %phitmp, %else-block.i28 ]
ret i32 %sret_slot.0
else-block.i28: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%5 = load %"ll::limb::Limb"** %4, align 8, !alias.scope !3808
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3813
%phitmp = trunc i64 %sret_slot.sroa.0.0.copyload6.i to i32
br label %clean_custom_
}
; Function Attrs: nounwind readonly uwtable
define i64 @"_ZN3int50u64...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20habfd399b22f60867uNgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
entry-block:
%1 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 1
%2 = load i32* %1, align 4, !alias.scope !3814
%3 = icmp eq i32 %2, 0
br i1 %3, label %clean_custom_, label %else-block.i28
clean_custom_: ; preds = %entry-block, %else-block.i28
%sret_slot.0 = phi i64 [ %sret_slot.sroa.0.0.copyload6.i, %else-block.i28 ], [ 0, %entry-block ]
ret i64 %sret_slot.0
else-block.i28: ; preds = %entry-block
%4 = getelementptr inbounds %"int::Int"* %0, i64 0, i32 0, i32 0, i32 0
%5 = load %"ll::limb::Limb"** %4, align 8, !alias.scope !3817
%sret_slot.sroa.0.0..sroa_idx.i = getelementptr inbounds %"ll::limb::Limb"* %5, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i, align 8, !noalias !3822
br label %clean_custom_
}
; Function Attrs: uwtable
define void @_ZN3int19Int.std..iter..Step4step20h3bca7ee87d91a51aQQgE(%"2.core::option::Option<int::Int>"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%3 = getelementptr inbounds %"2.core::option::Option<int::Int>"* %0, i64 0, i32 0
tail call void @"_ZN3int49_$RF$$u27$b$u20$Int.Add$LT$$RF$$u27$a$u20$Int$GT$3add20ha72e7346b591e942freE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %3, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
ret void
}
; Function Attrs: uwtable
define void @_ZN3int19Int.std..iter..Step13steps_between20h0b854f3b96bfe4407QgE(%"2.core::option::Option<usize>"* noalias nocapture sret dereferenceable(16), %"int::Int"* noalias nocapture readonly dereferenceable(24), %"int::Int"* noalias readonly dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #6 {
entry-block:
%diff.sroa.26 = alloca [7 x i8], align 1
%4 = alloca %"int::Int", align 8
%5 = alloca %"int::Int", align 8
%arg = alloca %"int::Int", align 8
%6 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 1
%7 = load i32* %6, align 4, !alias.scope !3823, !noalias !3828
%8 = icmp eq i32 %7, 0
br i1 %8, label %then-block-25750-, label %_ZN3cmp10PartialOrd2le20h9428514766350064483E.exit
_ZN3cmp10PartialOrd2le20h9428514766350064483E.exit: ; preds = %entry-block
%9 = ashr i32 %7, 31
%10 = or i32 %9, 1
%not..i = icmp slt i32 %10, 1
br i1 %not..i, label %then-block-25750-, label %next-block
then-block-25750-: ; preds = %entry-block, %_ZN3cmp10PartialOrd2le20h9428514766350064483E.exit
%11 = bitcast %"2.core::option::Option<usize>"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %11, i8* bitcast ({ i64, [8 x i8] }* @const9330 to i8*), i64 16, i32 8, i1 false)
br label %clean_custom_
clean_custom_: ; preds = %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, %then-block-25750-
ret void
next-block: ; preds = %_ZN3cmp10PartialOrd2le20h9428514766350064483E.exit
%diff.sroa.26.0..sroa_idx69 = getelementptr inbounds [7 x i8]* %diff.sroa.26, i64 0, i64 0
call void @llvm.lifetime.start(i64 7, i8* %diff.sroa.26.0..sroa_idx69)
%12 = bitcast %"int::Int"* %4 to i8*
call void @llvm.lifetime.start(i64 24, i8* %12)
call void @"_ZN3int49_$RF$$u27$b$u20$Int.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20h22704dd8d51556bd2CeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %4, %"int::Int"* noalias readonly dereferenceable(24) %1, %"int::Int"* noalias readonly dereferenceable(24) %2)
%13 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 1
%14 = bitcast i32* %13 to i64*
%15 = load i64* %14, align 8
%16 = trunc i64 %15 to i32
%17 = icmp slt i32 %16, 0
%18 = sub i32 0, %16
%sret_slot.0.i.i = select i1 %17, i32 %18, i32 %16
store i32 %sret_slot.0.i.i, i32* %13, align 8, !alias.scope !3830, !noalias !3833
%diff.sroa.0.0..sroa_idx30 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 0, i32 0, i32 0
%diff.sroa.0.0.copyload31 = load %"ll::limb::Limb"** %diff.sroa.0.0..sroa_idx30, align 8
%19 = lshr i64 %15, 32
%20 = trunc i64 %19 to i32
%diff.sroa.23.0..sroa_idx53 = getelementptr inbounds %"int::Int"* %4, i64 0, i32 3
%diff.sroa.23.0.copyload54 = load i8* %diff.sroa.23.0..sroa_idx53, align 8
%diff.sroa.26.0..sroa_raw_idx60 = getelementptr inbounds i8* %12, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %diff.sroa.26.0..sroa_idx69, i8* %diff.sroa.26.0..sroa_raw_idx60, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %12), !alias.scope !3830, !noalias !3833
call void @llvm.lifetime.end(i64 24, i8* %12)
%21 = icmp eq i32 %7, 1
br i1 %21, label %normal-return, label %then-block-25768-
normal-return: ; preds = %next-block
%22 = getelementptr inbounds %"int::Int"* %3, i64 0, i32 0, i32 0, i32 0
%23 = load %"ll::limb::Limb"** %22, align 8, !alias.scope !3835, !noalias !3844
%24 = getelementptr inbounds %"ll::limb::Limb"* %23, i64 0, i32 0
%25 = load i64* %24, align 8, !alias.scope !3847, !noalias !3850
%phitmp.i = icmp eq i64 %25, 1
br i1 %phitmp.i, label %next-block3, label %then-block-25768-
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit25: ; preds = %then-block-25768-
%26 = landingpad { i8*, i32 } personality i32 (i32, i32, i64, %"1.std::rt::libunwind::_Unwind_Exception"*, %"1.std::rt::libunwind::_Unwind_Context"*)* @rust_eh_personality
cleanup
call void @llvm.lifetime.end(i64 7, i8* %diff.sroa.26.0..sroa_idx69)
resume { i8*, i32 } %26
then-block-25768-: ; preds = %normal-return, %next-block
%27 = bitcast %"int::Int"* %5 to i8*
call void @llvm.lifetime.start(i64 24, i8* %27)
%28 = bitcast %"int::Int"* %arg to i8*
call void @llvm.lifetime.start(i64 24, i8* %28)
%diff.sroa.0.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 0, i32 0, i32 0
store %"ll::limb::Limb"* %diff.sroa.0.0.copyload31, %"ll::limb::Limb"** %diff.sroa.0.0..sroa_idx, align 8
%diff.sroa.12.0..sroa_idx36 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 1
store i32 %sret_slot.0.i.i, i32* %diff.sroa.12.0..sroa_idx36, align 8
%diff.sroa.17.0..sroa_idx44 = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 2
store i32 %20, i32* %diff.sroa.17.0..sroa_idx44, align 4
%diff.sroa.23.0..sroa_idx = getelementptr inbounds %"int::Int"* %arg, i64 0, i32 3
store i8 %diff.sroa.23.0.copyload54, i8* %diff.sroa.23.0..sroa_idx, align 8
%diff.sroa.26.0..sroa_raw_idx = getelementptr inbounds i8* %28, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %diff.sroa.26.0..sroa_raw_idx, i8* %diff.sroa.26.0..sroa_idx69, i64 7, i32 1, i1 false)
call void @llvm.memset.p0i8.i64(i8* %diff.sroa.26.0..sroa_idx69, i8 29, i64 7, i32 1, i1 false)
invoke void @"_ZN3int33Int.Div$LT$$RF$$u27$a$u20$Int$GT$3div20h79b54feb230d1141GQeE"(%"int::Int"* noalias nocapture sret dereferenceable(24) %5, %"int::Int"* noalias nocapture dereferenceable(24) %arg, %"int::Int"* noalias readonly dereferenceable(24) %3)
to label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21 unwind label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit25
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21: ; preds = %then-block-25768-
call void @llvm.lifetime.end(i64 24, i8* %28)
%diff.sroa.0.0..sroa_idx34 = getelementptr inbounds %"int::Int"* %5, i64 0, i32 0, i32 0, i32 0
%diff.sroa.0.0.copyload35 = load %"ll::limb::Limb"** %diff.sroa.0.0..sroa_idx34, align 8
%diff.sroa.12.0..sroa_idx41 = getelementptr inbounds %"int::Int"* %5, i64 0, i32 1
%29 = bitcast i32* %diff.sroa.12.0..sroa_idx41 to i64*
%diff.sroa.12.0.copyload42 = load i64* %29, align 8
%30 = trunc i64 %diff.sroa.12.0.copyload42 to i32
%31 = lshr i64 %diff.sroa.12.0.copyload42, 32
%32 = trunc i64 %31 to i32
%diff.sroa.23.0..sroa_idx55 = getelementptr inbounds %"int::Int"* %5, i64 0, i32 3
%diff.sroa.23.0.copyload56 = load i8* %diff.sroa.23.0..sroa_idx55, align 8
%diff.sroa.26.0..sroa_raw_idx66 = getelementptr inbounds i8* %27, i64 17
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %diff.sroa.26.0..sroa_idx69, i8* %diff.sroa.26.0..sroa_raw_idx66, i64 7, i32 1, i1 false)
call void @llvm.lifetime.end(i64 24, i8* %27)
br label %next-block3
next-block3: ; preds = %normal-return, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21
%diff.sroa.23.0.copyload76 = phi i8 [ %diff.sroa.23.0.copyload54, %normal-return ], [ %diff.sroa.23.0.copyload56, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21 ]
%diff.sroa.17.0.copyload75 = phi i32 [ %20, %normal-return ], [ %32, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21 ]
%diff.sroa.12.0.copyload74 = phi i32 [ %sret_slot.0.i.i, %normal-return ], [ %30, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21 ]
%diff.sroa.0.0.73 = phi %"ll::limb::Limb"* [ %diff.sroa.0.0.copyload31, %normal-return ], [ %diff.sroa.0.0.copyload35, %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit21 ]
%33 = icmp eq i32 %diff.sroa.12.0.copyload74, 1
br i1 %33, label %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i.i", label %next-block.i.i.i
"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i.i": ; preds = %next-block3
%34 = getelementptr inbounds %"ll::limb::Limb"* %diff.sroa.0.0.73, i64 0, i32 0
%35 = load i64* %34, align 8, !alias.scope !3852, !noalias !3855
%36 = icmp eq i64 %35, -1
%.1.i = select i1 %36, i16 1, i16 -255
br label %normal-return4
next-block.i.i.i: ; preds = %next-block3
%37 = icmp slt i32 %diff.sroa.12.0.copyload74, 1
%..i.i.i = select i1 %37, i16 -255, i16 257
br label %normal-return4
normal-return4: ; preds = %next-block.i.i.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i.i"
%38 = phi i16 [ %..i.i.i, %next-block.i.i.i ], [ %.1.i, %"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE.exit.i.i.i" ]
%match.sroa.4.0.extract.shift.mask.i = and i16 %38, -256
%cond4.i = icmp eq i16 %match.sroa.4.0.extract.shift.mask.i, 256
br i1 %cond4.i, label %then-block-25780-, label %else-block
then-block-25780-: ; preds = %normal-return4
%39 = bitcast %"2.core::option::Option<usize>"* %0 to i8*
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %39, i8* bitcast ({ i64, [8 x i8] }* @const9330 to i8*), i64 16, i32 8, i1 false)
br label %join
else-block: ; preds = %normal-return4
%40 = icmp eq i32 %diff.sroa.12.0.copyload74, 0
br i1 %40, label %normal-return5, label %else-block.i28.i
else-block.i28.i: ; preds = %else-block
%sret_slot.sroa.0.0..sroa_idx.i.i = getelementptr inbounds %"ll::limb::Limb"* %diff.sroa.0.0.73, i64 0, i32 0
%sret_slot.sroa.0.0.copyload6.i.i = load i64* %sret_slot.sroa.0.0..sroa_idx.i.i, align 8, !noalias !3868
br label %normal-return5
normal-return5: ; preds = %else-block.i28.i, %else-block
%sret_slot.0.i18 = phi i64 [ %sret_slot.sroa.0.0.copyload6.i.i, %else-block.i28.i ], [ 0, %else-block ]
%41 = getelementptr inbounds %"2.core::option::Option<usize>"* %0, i64 0, i32 2, i64 0
store i64 %sret_slot.0.i18, i64* %41, align 8
%42 = getelementptr inbounds %"2.core::option::Option<usize>"* %0, i64 0, i32 0
store i64 1, i64* %42, align 8
br label %join
join: ; preds = %normal-return5, %then-block-25780-
%43 = icmp ne i8 %diff.sroa.23.0.copyload76, -44
%44 = icmp eq i32 %diff.sroa.17.0.copyload75, 0
%or.cond = or i1 %43, %44
br i1 %or.cond, label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit, label %then-block-15297-.i.i
then-block-15297-.i.i: ; preds = %join
%45 = bitcast %"ll::limb::Limb"* %diff.sroa.0.0.73 to i8*
%46 = zext i32 %diff.sroa.17.0.copyload75 to i64
%47 = shl nuw nsw i64 %46, 3
tail call void @je_sdallocx(i8* %45, i64 %47, i32 0)
br label %_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit
_ZN8int..Int9drop.941317h2f4b07b2c1f5d387E.exit: ; preds = %join, %then-block-15297-.i.i
call void @llvm.lifetime.end(i64 7, i8* %diff.sroa.26.0..sroa_idx69)
br label %clean_custom_
}
; Function Attrs: alwaysinline uwtable
define i64 @"_ZN2ll4limb23Limb.Div$LT$BaseInt$GT$3div20hf87be3de868096c9Y7cE"(i64, i64) unnamed_addr #10 {
%3 = tail call i64 @"_ZN2ll4limb20Limb.Div$LT$Limb$GT$3div20h1202b8a9bc4d2e13V6cE"(i64 %0, i64 %1)
ret i64 %3
}
; Function Attrs: alwaysinline uwtable
define i64 @"_ZN2ll4limb23Limb.Rem$LT$BaseInt$GT$3rem20h6b5036d933364a9d19cE"(i64, i64) unnamed_addr #10 {
%3 = tail call i64 @"_ZN2ll4limb20Limb.Rem$LT$Limb$GT$3rem20haa60a9b5e2f37ae3Y8cE"(i64 %0, i64 %1)
ret i64 %3
}
; Function Attrs: uwtable
define i8 @_ZN2ll4limb17Limb.fmt..Display3fmt20h5e00a95e74220325YhdE(%"ll::limb::Limb"* noalias readonly dereferenceable(8), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
%3 = tail call i8 @_ZN2ll4limb15Limb.fmt..Debug3fmt20h995ea7feb2132e1aDhdE(%"ll::limb::Limb"* %0, %"2.core::fmt::Formatter"* %1)
ret i8 %3
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64, i64) unnamed_addr #2 {
tail call void @_ZN2ll4limb5add_220h2af897905fcee546hjdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 %1, i64 %2, i64 %3, i64 %4)
ret void
}
; Function Attrs: alwaysinline nounwind uwtable
define void @_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* noalias nocapture sret dereferenceable(16), i64, i64, i64, i64) unnamed_addr #2 {
tail call void @_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE({ %"ll::limb::Limb", %"ll::limb::Limb" }* %0, i64 %1, i64 %2, i64 %3, i64 %4)
ret void
}
; Function Attrs: nounwind uwtable
define void @_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE(%"int::Int"* noalias nocapture sret dereferenceable(24)) unnamed_addr #0 {
tail call void @_ZN3int3Int4zero20h73cd13321f814714HIdE(%"int::Int"* %0)
ret void
}
; Function Attrs: uwtable
define void @_ZN3int17Int.std..num..One3one20h5277d2bca30dd6a1FQgE(%"int::Int"* noalias nocapture sret dereferenceable(24)) unnamed_addr #6 {
tail call void @_ZN3int3Int3one20h4884beff37e09153OIdE(%"int::Int"* %0)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22Int.Add$LT$BaseInt$GT$3add20h59ff0a1acd48546c0OfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22Int.Sub$LT$BaseInt$GT$3sub20h338829c46f27c86bzPfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22Int.Mul$LT$BaseInt$GT$3mul20h9f13c78fef47989d8PfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22Int.Div$LT$BaseInt$GT$3div20h450a8d1b236789a20QfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22Int.Rem$LT$BaseInt$GT$3rem20ha3921a6fec3c4c5eNRfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int38_$RF$$u27$a$u20$Int.Add$LT$BaseInt$GT$3add20ha383e7b02530814bFSfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int36_$RF$$u27$a$u20$Int.Add$LT$usize$GT$3add20heec1351e99798e6b1GfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22BaseInt.Add$LT$Int$GT$3add20hc095d91c0f3504403SfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int20usize.Add$LT$Int$GT$3add20h564c1c588e49c0acpHfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37BaseInt.Add$LT$$RF$$u27$a$u20$Int$GT$3add20h1e2ec2fc38016ab2pTfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int35usize.Add$LT$$RF$$u27$a$u20$Int$GT$3add20hc8c0793b4fdb17faLHfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int38_$RF$$u27$a$u20$Int.Sub$LT$BaseInt$GT$3sub20hb984d59c5427283bPTfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22BaseInt.Sub$LT$Int$GT$3sub20h3a13840b8ea870fadUfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int20usize.Sub$LT$Int$GT$3sub20h77155b13679e9959zIfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37BaseInt.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20hd3e0e26c1b7d11a2yUfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int35usize.Sub$LT$$RF$$u27$a$u20$Int$GT$3sub20h2dadf1f9ade6d4e0UIfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int38_$RF$$u27$a$u20$Int.Mul$LT$BaseInt$GT$3mul20h819856be9bf6824bZUfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int36_$RF$$u27$a$u20$Int.Mul$LT$usize$GT$3mul20hd3e9c63860c599d4lJfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22BaseInt.Mul$LT$Int$GT$3mul20ha6c64decb597a4b5pVfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int20usize.Mul$LT$Int$GT$3mul20h16ca3f9ad20c2c2bLJfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37BaseInt.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20h50041ca496be7c09JVfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int35usize.Mul$LT$$RF$$u27$a$u20$Int$GT$3mul20hf02b29450ee6868f5JfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int38_$RF$$u27$a$u20$Int.Div$LT$BaseInt$GT$3div20h73a4e35fb6de47eeiWfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int36_$RF$$u27$a$u20$Int.Div$LT$usize$GT$3div20hd4f85b86a98eb3f2EKfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22BaseInt.Div$LT$Int$GT$3div20h2aa6ac471ec15246RWfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: uwtable
define void @"_ZN3int35Int...std..convert..From$LT$u64$GT$4from20h5209fa81557b5107gmgE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64) unnamed_addr #6 {
tail call void @"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"(%"int::Int"* %0, i64 %1)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37BaseInt.Div$LT$$RF$$u27$a$u20$Int$GT$3div20h8b38b255398ee2c4BXfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int35usize.Div$LT$$RF$$u27$a$u20$Int$GT$3div20hfa008a2b5bdba338XLfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int38_$RF$$u27$a$u20$Int.Rem$LT$BaseInt$GT$3rem20hd8929add2aa76757kYfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), %"int::Int"* noalias nocapture readonly dereferenceable(24), i64) unnamed_addr #11 {
tail call void @"_ZN3int36_$RF$$u27$a$u20$Int.Rem$LT$usize$GT$3rem20h7e3589b1cd225fe6GMfE"(%"int::Int"* %0, %"int::Int"* %1, i64 %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int22BaseInt.Rem$LT$Int$GT$3rem20h97ce37c546d81eb57YfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: inlinehint uwtable
define void @"_ZN3int37BaseInt.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20h4d23868d5f8cb81eVZfE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64, %"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #11 {
tail call void @"_ZN3int35usize.Rem$LT$$RF$$u27$a$u20$Int$GT$3rem20hb76e2579fac3a4b9hOfE"(%"int::Int"* %0, i64 %1, %"int::Int"* %2)
ret void
}
; Function Attrs: uwtable
define void @"_ZN3int37Int...std..convert..From$LT$isize$GT$4from20h5e747bcad08007da8egE"(%"int::Int"* noalias nocapture sret dereferenceable(24), i64) unnamed_addr #6 {
tail call void @"_ZN3int35Int...std..convert..From$LT$i64$GT$4from20hc2e384d8fdc9d396WcgE"(%"int::Int"* %0, i64 %1)
ret void
}
; Function Attrs: uwtable
define i8 @_ZN3int14Int.fmt..Debug3fmt20h8ead17dd6511ab57YrgE(%"int::Int"* noalias nocapture readonly dereferenceable(24), %"2.core::fmt::Formatter"* noalias dereferenceable(96)) unnamed_addr #6 {
%3 = tail call i8 @_ZN3int16Int.fmt..Display3fmt20hbcabc95359686660argE(%"int::Int"* %0, %"2.core::fmt::Formatter"* %1)
ret i8 %3
}
; Function Attrs: nounwind readonly uwtable
define i64 @"_ZN3int52isize...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20hbc4d2b1467d39e07pHgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
%2 = tail call i64 @"_ZN3int50i64...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h2829d464443157eaDFgE"(%"int::Int"* %0)
ret i64 %2
}
; Function Attrs: nounwind readonly uwtable
define i64 @"_ZN3int52usize...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h416f27c33e7c9cd3VOgE"(%"int::Int"* noalias nocapture readonly dereferenceable(24)) unnamed_addr #8 {
%2 = tail call i64 @"_ZN3int50u64...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20habfd399b22f60867uNgE"(%"int::Int"* %0)
ret i64 %2
}
attributes #0 = { nounwind uwtable "split-stack" }
attributes #1 = { nounwind "split-stack" }
attributes #2 = { alwaysinline nounwind uwtable "split-stack" }
attributes #3 = { inlinehint nounwind uwtable "split-stack" }
attributes #4 = { alwaysinline nounwind readonly uwtable "split-stack" }
attributes #5 = { alwaysinline nounwind readnone uwtable "split-stack" }
attributes #6 = { uwtable "split-stack" }
attributes #7 = { "split-stack" }
attributes #8 = { nounwind readonly uwtable "split-stack" }
attributes #9 = { cold noinline noreturn "split-stack" }
attributes #10 = { alwaysinline uwtable "split-stack" }
attributes #11 = { inlinehint uwtable "split-stack" }
attributes #12 = { nounwind readnone "split-stack" }
attributes #13 = { inlinehint nounwind readonly uwtable "split-stack" }
attributes #14 = { inlinehint nounwind readnone uwtable "split-stack" }
attributes #15 = { cold noinline noreturn nounwind uwtable "split-stack" }
attributes #16 = { noreturn nounwind "split-stack" }
attributes #17 = { cold noinline uwtable "split-stack" }
attributes #18 = { noinline uwtable "split-stack" }
attributes #19 = { noinline noreturn "split-stack" }
attributes #20 = { nounwind }
!0 = distinct !{!0, !1, !2}
!1 = !{!"llvm.loop.vectorize.width", i32 1}
!2 = !{!"llvm.loop.interleave.count", i32 1}
!3 = distinct !{!3, !4}
!4 = !{!"llvm.loop.unroll.disable"}
!5 = distinct !{!5, !1, !2}
!6 = distinct !{!6, !1, !2}
!7 = distinct !{!7, !4}
!8 = distinct !{!8, !1, !2}
!9 = distinct !{!9, !1, !2}
!10 = distinct !{!10, !4}
!11 = distinct !{!11, !1, !2}
!12 = !{!13, !15, !17}
!13 = distinct !{!13, !14, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!14 = distinct !{!14, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!15 = distinct !{!15, !16, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!16 = distinct !{!16, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!17 = distinct !{!17, !18, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!18 = distinct !{!18, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!19 = !{i32 568}
!20 = !{!21, !23}
!21 = distinct !{!21, !22, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!22 = distinct !{!22, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!23 = distinct !{!23, !24, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!24 = distinct !{!24, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!25 = !{!26, !28, !30}
!26 = distinct !{!26, !27, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!27 = distinct !{!27, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!28 = distinct !{!28, !29, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!29 = distinct !{!29, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!30 = distinct !{!30, !31, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!31 = distinct !{!31, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!32 = !{!33, !35, !37}
!33 = distinct !{!33, !34, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!34 = distinct !{!34, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!35 = distinct !{!35, !36, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!36 = distinct !{!36, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!37 = distinct !{!37, !38, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!38 = distinct !{!38, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!39 = !{!40, !42, !44}
!40 = distinct !{!40, !41, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!41 = distinct !{!41, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!42 = distinct !{!42, !43, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!43 = distinct !{!43, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!44 = distinct !{!44, !45, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!45 = distinct !{!45, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!46 = !{!47, !49, !51}
!47 = distinct !{!47, !48, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!48 = distinct !{!48, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!49 = distinct !{!49, !50, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!50 = distinct !{!50, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!51 = distinct !{!51, !52, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!52 = distinct !{!52, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!53 = !{!54, !56, !58}
!54 = distinct !{!54, !55, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!55 = distinct !{!55, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!56 = distinct !{!56, !57, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!57 = distinct !{!57, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!58 = distinct !{!58, !59, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!59 = distinct !{!59, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!60 = !{!61, !63}
!61 = distinct !{!61, !62, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!62 = distinct !{!62, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!63 = distinct !{!63, !64, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!64 = distinct !{!64, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!65 = !{!66}
!66 = distinct !{!66, !67, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!67 = distinct !{!67, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!68 = !{!69}
!69 = distinct !{!69, !70, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!70 = distinct !{!70, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!71 = !{!72, !74, !76}
!72 = distinct !{!72, !73, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!73 = distinct !{!73, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!74 = distinct !{!74, !75, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!75 = distinct !{!75, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!76 = distinct !{!76, !77, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!77 = distinct !{!77, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!78 = !{!79, !81, !83}
!79 = distinct !{!79, !80, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!80 = distinct !{!80, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!81 = distinct !{!81, !82, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!82 = distinct !{!82, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!83 = distinct !{!83, !84, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!84 = distinct !{!84, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!85 = !{!86, !88}
!86 = distinct !{!86, !87, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!87 = distinct !{!87, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!88 = distinct !{!88, !89, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!89 = distinct !{!89, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!90 = !{!91}
!91 = distinct !{!91, !92, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!92 = distinct !{!92, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!93 = distinct !{!93, !1, !2}
!94 = distinct !{!94, !4}
!95 = distinct !{!95, !1, !2}
!96 = distinct !{!96, !1, !2}
!97 = distinct !{!97, !4}
!98 = distinct !{!98, !1, !2}
!99 = !{!100}
!100 = distinct !{!100, !101, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!101 = distinct !{!101, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!102 = !{!103}
!103 = distinct !{!103, !104, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 0"}
!104 = distinct !{!104, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE"}
!105 = !{!106}
!106 = distinct !{!106, !104, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 1"}
!107 = distinct !{!107, !1, !2}
!108 = distinct !{!108, !4}
!109 = distinct !{!109, !1, !2}
!110 = !{!111}
!111 = distinct !{!111, !112, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 0"}
!112 = distinct !{!112, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE"}
!113 = !{!114}
!114 = distinct !{!114, !112, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 1"}
!115 = distinct !{!115, !1, !2}
!116 = distinct !{!116, !1, !2}
!117 = distinct !{!117, !1, !2}
!118 = distinct !{!118, !4}
!119 = distinct !{!119, !1, !2}
!120 = distinct !{!120, !4}
!121 = distinct !{!121, !1, !2}
!122 = distinct !{!122, !4}
!123 = distinct !{!123, !1, !2}
!124 = distinct !{!124, !4}
!125 = distinct !{!125, !4}
!126 = distinct !{!126, !4}
!127 = distinct !{!127, !4}
!128 = !{!129, !131, !133}
!129 = distinct !{!129, !130, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!130 = distinct !{!130, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!131 = distinct !{!131, !132, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!132 = distinct !{!132, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!133 = distinct !{!133, !134, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!134 = distinct !{!134, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!135 = !{!136}
!136 = distinct !{!136, !137, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 0"}
!137 = distinct !{!137, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE"}
!138 = !{!139}
!139 = distinct !{!139, !137, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2ne20hdebcc29269979449VfdE: argument 1"}
!140 = distinct !{!140, !4}
!141 = !{!142, !144}
!142 = distinct !{!142, !143, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!143 = distinct !{!143, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!144 = distinct !{!144, !145, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE: argument 0"}
!145 = distinct !{!145, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE"}
!146 = !{i32 583}
!147 = !{!148, !150, !152, !154}
!148 = distinct !{!148, !149, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!149 = distinct !{!149, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!150 = distinct !{!150, !151, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!151 = distinct !{!151, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!152 = distinct !{!152, !153, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!153 = distinct !{!153, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!154 = distinct !{!154, !155, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE: argument 0"}
!155 = distinct !{!155, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE"}
!156 = !{!157, !159, !154}
!157 = distinct !{!157, !158, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!158 = distinct !{!158, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!159 = distinct !{!159, !160, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!160 = distinct !{!160, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!161 = !{i32 573}
!162 = !{!163, !165, !167, !169}
!163 = distinct !{!163, !164, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!164 = distinct !{!164, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!165 = distinct !{!165, !166, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!166 = distinct !{!166, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!167 = distinct !{!167, !168, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!168 = distinct !{!168, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!169 = distinct !{!169, !170, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE: argument 0"}
!170 = distinct !{!170, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE"}
!171 = !{!172, !174, !169}
!172 = distinct !{!172, !173, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!173 = distinct !{!173, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!174 = distinct !{!174, !175, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!175 = distinct !{!175, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!176 = !{!177, !179}
!177 = distinct !{!177, !178, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!178 = distinct !{!178, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!179 = distinct !{!179, !180, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE: argument 0"}
!180 = distinct !{!180, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE"}
!181 = !{!182, !184, !186, !188}
!182 = distinct !{!182, !183, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!183 = distinct !{!183, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!184 = distinct !{!184, !185, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!185 = distinct !{!185, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!186 = distinct !{!186, !187, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!187 = distinct !{!187, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!188 = distinct !{!188, !189, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE: argument 0"}
!189 = distinct !{!189, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE"}
!190 = !{!191, !193, !188}
!191 = distinct !{!191, !192, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!192 = distinct !{!192, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!193 = distinct !{!193, !194, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!194 = distinct !{!194, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!195 = !{!196, !198, !200, !202}
!196 = distinct !{!196, !197, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!197 = distinct !{!197, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!198 = distinct !{!198, !199, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!199 = distinct !{!199, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!200 = distinct !{!200, !201, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!201 = distinct !{!201, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!202 = distinct !{!202, !203, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE: argument 0"}
!203 = distinct !{!203, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE"}
!204 = !{!205, !207, !202}
!205 = distinct !{!205, !206, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!206 = distinct !{!206, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!207 = distinct !{!207, !208, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!208 = distinct !{!208, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!209 = !{!210, !212, !214, !216}
!210 = distinct !{!210, !211, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!211 = distinct !{!211, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!212 = distinct !{!212, !213, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!213 = distinct !{!213, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!214 = distinct !{!214, !215, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!215 = distinct !{!215, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!216 = distinct !{!216, !217, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE: argument 0"}
!217 = distinct !{!217, !"_ZN2ll4limb10div_preinv20headc6f8f43b1ca7c8ndE"}
!218 = !{!219, !221, !216}
!219 = distinct !{!219, !220, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!220 = distinct !{!220, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!221 = distinct !{!221, !222, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!222 = distinct !{!222, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!223 = distinct !{!223, !4}
!224 = distinct !{!224, !1, !2}
!225 = distinct !{!225, !4}
!226 = distinct !{!226, !1, !2}
!227 = !{!228}
!228 = distinct !{!228, !229, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE: argument 0"}
!229 = distinct !{!229, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE"}
!230 = !{!231, !228}
!231 = distinct !{!231, !232, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!232 = distinct !{!232, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!233 = !{!234, !236, !238}
!234 = distinct !{!234, !235, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!235 = distinct !{!235, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!236 = distinct !{!236, !237, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!237 = distinct !{!237, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!238 = distinct !{!238, !239, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!239 = distinct !{!239, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!240 = !{!241, !243}
!241 = distinct !{!241, !242, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!242 = distinct !{!242, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!243 = distinct !{!243, !244, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!244 = distinct !{!244, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!245 = !{!246, !248}
!246 = distinct !{!246, !247, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!247 = distinct !{!247, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!248 = distinct !{!248, !249, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!249 = distinct !{!249, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!250 = !{i32 578}
!251 = !{!252}
!252 = distinct !{!252, !253, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE: argument 0"}
!253 = distinct !{!253, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE"}
!254 = !{!255, !252}
!255 = distinct !{!255, !256, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!256 = distinct !{!256, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!257 = !{!258, !260, !262}
!258 = distinct !{!258, !259, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!259 = distinct !{!259, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!260 = distinct !{!260, !261, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!261 = distinct !{!261, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!262 = distinct !{!262, !263, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!263 = distinct !{!263, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!264 = !{!265, !267, !269, !271}
!265 = distinct !{!265, !266, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!266 = distinct !{!266, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!267 = distinct !{!267, !268, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!268 = distinct !{!268, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!269 = distinct !{!269, !270, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!270 = distinct !{!270, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!271 = distinct !{!271, !272, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE: argument 0"}
!272 = distinct !{!272, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE"}
!273 = !{!274, !276, !271}
!274 = distinct !{!274, !275, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!275 = distinct !{!275, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!276 = distinct !{!276, !277, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!277 = distinct !{!277, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!278 = !{!279, !281, !271}
!279 = distinct !{!279, !280, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!280 = distinct !{!280, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!281 = distinct !{!281, !282, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!282 = distinct !{!282, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!283 = !{!284, !286, !288, !271}
!284 = distinct !{!284, !285, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!285 = distinct !{!285, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!286 = distinct !{!286, !287, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!287 = distinct !{!287, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!288 = distinct !{!288, !289, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!289 = distinct !{!289, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!290 = !{!291, !293, !271}
!291 = distinct !{!291, !292, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!292 = distinct !{!292, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!293 = distinct !{!293, !294, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!294 = distinct !{!294, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!295 = !{!296, !298, !271}
!296 = distinct !{!296, !297, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!297 = distinct !{!297, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!298 = distinct !{!298, !299, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!299 = distinct !{!299, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!300 = !{!301, !303, !271}
!301 = distinct !{!301, !302, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!302 = distinct !{!302, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!303 = distinct !{!303, !304, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!304 = distinct !{!304, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!305 = !{!306, !308, !310, !312}
!306 = distinct !{!306, !307, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!307 = distinct !{!307, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!308 = distinct !{!308, !309, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!309 = distinct !{!309, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!310 = distinct !{!310, !311, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!311 = distinct !{!311, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!312 = distinct !{!312, !313, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE: argument 0"}
!313 = distinct !{!313, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE"}
!314 = !{!315, !317, !312}
!315 = distinct !{!315, !316, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!316 = distinct !{!316, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!317 = distinct !{!317, !318, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!318 = distinct !{!318, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!319 = !{!320, !322, !312}
!320 = distinct !{!320, !321, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!321 = distinct !{!321, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!322 = distinct !{!322, !323, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!323 = distinct !{!323, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!324 = !{!325, !327, !329, !312}
!325 = distinct !{!325, !326, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!326 = distinct !{!326, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!327 = distinct !{!327, !328, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!328 = distinct !{!328, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!329 = distinct !{!329, !330, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!330 = distinct !{!330, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!331 = !{!332, !334, !312}
!332 = distinct !{!332, !333, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!333 = distinct !{!333, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!334 = distinct !{!334, !335, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!335 = distinct !{!335, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!336 = !{!337, !339, !312}
!337 = distinct !{!337, !338, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!338 = distinct !{!338, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!339 = distinct !{!339, !340, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!340 = distinct !{!340, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!341 = !{!342, !344, !312}
!342 = distinct !{!342, !343, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!343 = distinct !{!343, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!344 = distinct !{!344, !345, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!345 = distinct !{!345, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!346 = !{!347}
!347 = distinct !{!347, !348, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!348 = distinct !{!348, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!349 = !{!350}
!350 = distinct !{!350, !351, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!351 = distinct !{!351, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!352 = distinct !{!352, !1, !2}
!353 = distinct !{!353, !4}
!354 = distinct !{!354, !1, !2}
!355 = distinct !{!355, !1, !2}
!356 = distinct !{!356, !4}
!357 = distinct !{!357, !1, !2}
!358 = !{!359, !361}
!359 = distinct !{!359, !360, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!360 = distinct !{!360, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!361 = distinct !{!361, !362, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!362 = distinct !{!362, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!363 = !{!364, !366}
!364 = distinct !{!364, !365, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!365 = distinct !{!365, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!366 = distinct !{!366, !367, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!367 = distinct !{!367, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!368 = distinct !{!368, !4}
!369 = !{!370}
!370 = distinct !{!370, !371, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!371 = distinct !{!371, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!372 = !{!373, !375}
!373 = distinct !{!373, !374, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!374 = distinct !{!374, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!375 = distinct !{!375, !376, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!376 = distinct !{!376, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!377 = !{!378}
!378 = distinct !{!378, !379, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!379 = distinct !{!379, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!380 = !{!381, !383}
!381 = distinct !{!381, !382, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!382 = distinct !{!382, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!383 = distinct !{!383, !384, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!384 = distinct !{!384, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!385 = distinct !{!385, !4}
!386 = !{!387, !389}
!387 = distinct !{!387, !388, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE: argument 0"}
!388 = distinct !{!388, !"_ZN3mem12TmpAllocator14allocate_bytes20h59db1e885346413efFdE"}
!389 = distinct !{!389, !390, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E: argument 0"}
!390 = distinct !{!390, !"_ZN3mem12TmpAllocator8allocate20h9617891001830028207E"}
!391 = distinct !{!391, !4}
!392 = !{!393}
!393 = distinct !{!393, !394, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE: argument 0"}
!394 = distinct !{!394, !"_ZN2ll4limb3div20h34088ac58b3f6132PldE"}
!395 = !{!396, !393}
!396 = distinct !{!396, !397, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!397 = distinct !{!397, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!398 = !{!399, !401, !403}
!399 = distinct !{!399, !400, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!400 = distinct !{!400, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!401 = distinct !{!401, !402, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!402 = distinct !{!402, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!403 = distinct !{!403, !404, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!404 = distinct !{!404, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!405 = !{!406, !408, !410}
!406 = distinct !{!406, !407, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!407 = distinct !{!407, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!408 = distinct !{!408, !409, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!409 = distinct !{!409, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!410 = distinct !{!410, !411, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!411 = distinct !{!411, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!412 = !{!413, !415, !417, !419}
!413 = distinct !{!413, !414, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!414 = distinct !{!414, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!415 = distinct !{!415, !416, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!416 = distinct !{!416, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!417 = distinct !{!417, !418, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!418 = distinct !{!418, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!419 = distinct !{!419, !420, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE: argument 0"}
!420 = distinct !{!420, !"_ZN2ll3div11divrem_3by220hbc3bfb3919e73b46uwbE"}
!421 = !{!422, !424, !419}
!422 = distinct !{!422, !423, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!423 = distinct !{!423, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!424 = distinct !{!424, !425, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!425 = distinct !{!425, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!426 = !{!427, !429, !419}
!427 = distinct !{!427, !428, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!428 = distinct !{!428, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!429 = distinct !{!429, !430, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!430 = distinct !{!430, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!431 = !{!432, !434, !436, !419}
!432 = distinct !{!432, !433, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!433 = distinct !{!433, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!434 = distinct !{!434, !435, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!435 = distinct !{!435, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!436 = distinct !{!436, !437, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!437 = distinct !{!437, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!438 = !{!439, !441, !419}
!439 = distinct !{!439, !440, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!440 = distinct !{!440, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!441 = distinct !{!441, !442, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!442 = distinct !{!442, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!443 = !{!444, !446, !419}
!444 = distinct !{!444, !445, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE: argument 0"}
!445 = distinct !{!445, !"_ZN2ll4limb5add_210add_2_impl20h15f421e68cd3215fAjdE"}
!446 = distinct !{!446, !447, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE: argument 0"}
!447 = distinct !{!447, !"_ZN2ll4limb5add_220h2af897905fcee546hjdE"}
!448 = !{!449, !451, !419}
!449 = distinct !{!449, !450, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE: argument 0"}
!450 = distinct !{!450, !"_ZN2ll4limb5sub_210sub_2_impl20h41453c4006d47d2dRkdE"}
!451 = distinct !{!451, !452, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE: argument 0"}
!452 = distinct !{!452, !"_ZN2ll4limb5sub_220hf7b70c7ae026fd38ykdE"}
!453 = !{!454, !456, !458}
!454 = distinct !{!454, !455, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!455 = distinct !{!455, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!456 = distinct !{!456, !457, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!457 = distinct !{!457, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!458 = distinct !{!458, !459, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!459 = distinct !{!459, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!460 = distinct !{!460, !4}
!461 = !{!462}
!462 = distinct !{!462, !463, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE: argument 0"}
!463 = distinct !{!463, !"_ZN3mem17TmpAllocator.Drop4drop20hba2eb59ed60b0c6ecHdE"}
!464 = distinct !{!464, !4}
!465 = distinct !{!465, !4}
!466 = distinct !{!466, !4}
!467 = distinct !{!467, !4}
!468 = distinct !{!468, !4}
!469 = distinct !{!469, !4}
!470 = distinct !{!470, !4}
!471 = distinct !{!471, !4}
!472 = !{!473}
!473 = distinct !{!473, !474, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!474 = distinct !{!474, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!475 = !{!476}
!476 = distinct !{!476, !474, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!477 = !{!478}
!478 = distinct !{!478, !479, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!479 = distinct !{!479, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!480 = !{!481}
!481 = distinct !{!481, !479, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!482 = !{!"branch_weights", i32 4, i32 64}
!483 = distinct !{!483, !4}
!484 = distinct !{!484, !4}
!485 = distinct !{!485, !4}
!486 = distinct !{!486, !4}
!487 = !{!488, !490, !492}
!488 = distinct !{!488, !489, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!489 = distinct !{!489, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!490 = distinct !{!490, !491, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!491 = distinct !{!491, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!492 = distinct !{!492, !493, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!493 = distinct !{!493, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!494 = !{!495, !497, !499}
!495 = distinct !{!495, !496, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!496 = distinct !{!496, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!497 = distinct !{!497, !498, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!498 = distinct !{!498, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!499 = distinct !{!499, !500, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!500 = distinct !{!500, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!501 = !{!502}
!502 = distinct !{!502, !503, !"_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE: argument 0"}
!503 = distinct !{!503, !"_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE"}
!504 = !{!505}
!505 = distinct !{!505, !503, !"_ZN3cmp5impls7u64.Ord3cmp20h7164b387492e2b49K8sE: argument 1"}
!506 = !{!507, !509}
!507 = distinct !{!507, !508, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!508 = distinct !{!508, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!509 = distinct !{!509, !510, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!510 = distinct !{!510, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!511 = !{!512}
!512 = distinct !{!512, !513, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!513 = distinct !{!513, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!514 = !{!515}
!515 = distinct !{!515, !516, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE: argument 0"}
!516 = distinct !{!516, !"_ZN2ll4limb3div8div_impl20h7956b3c98cfeb1d95ldE"}
!517 = !{!518, !520}
!518 = distinct !{!518, !519, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 0"}
!519 = distinct !{!519, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE"}
!520 = distinct !{!520, !521, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 0"}
!521 = distinct !{!521, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE"}
!522 = !{!523, !524, !526, !527}
!523 = distinct !{!523, !519, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 1"}
!524 = distinct !{!524, !525, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 0"}
!525 = distinct !{!525, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E"}
!526 = distinct !{!526, !525, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 1"}
!527 = distinct !{!527, !521, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 1"}
!528 = !{!523, !527}
!529 = !{!518, !524, !526, !520}
!530 = !{!531, !533}
!531 = distinct !{!531, !532, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 0"}
!532 = distinct !{!532, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE"}
!533 = distinct !{!533, !534, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 0"}
!534 = distinct !{!534, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE"}
!535 = !{!536, !537, !539, !540}
!536 = distinct !{!536, !532, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 1"}
!537 = distinct !{!537, !538, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 0"}
!538 = distinct !{!538, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E"}
!539 = distinct !{!539, !538, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 1"}
!540 = distinct !{!540, !534, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 1"}
!541 = !{!536, !540}
!542 = !{!531, !537, !539, !533}
!543 = distinct !{!543, !1, !2}
!544 = distinct !{!544, !4}
!545 = distinct !{!545, !1, !2}
!546 = !{!547}
!547 = distinct !{!547, !548, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!548 = distinct !{!548, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!549 = !{!550}
!550 = distinct !{!550, !548, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!551 = !{!552}
!552 = distinct !{!552, !553, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E: argument 0"}
!553 = distinct !{!553, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E"}
!554 = !{!555}
!555 = distinct !{!555, !556, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E: argument 0"}
!556 = distinct !{!556, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E"}
!557 = !{}
!558 = !{i8 0, i8 2}
!559 = !{!560, !555}
!560 = distinct !{!560, !561, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE: argument 0"}
!561 = distinct !{!561, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE"}
!562 = !{!563}
!563 = distinct !{!563, !564, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E: argument 0"}
!564 = distinct !{!564, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E"}
!565 = !{i64 0, i64 2}
!566 = !{!567}
!567 = distinct !{!567, !568, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h9352511495736613576E: argument 0"}
!568 = distinct !{!568, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h9352511495736613576E"}
!569 = !{!570}
!570 = distinct !{!570, !568, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h9352511495736613576E: argument 1"}
!571 = !{!572, !574, !575}
!572 = distinct !{!572, !573, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 0"}
!573 = distinct !{!573, !"_ZN2io5Write9write_fmt21h14472377557150804606E"}
!574 = distinct !{!574, !573, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 1"}
!575 = distinct !{!575, !573, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 2"}
!576 = !{!572, !575}
!577 = !{!578}
!578 = distinct !{!578, !579, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E: argument 0"}
!579 = distinct !{!579, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E"}
!580 = !{!581, !578}
!581 = distinct !{!581, !582, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE: argument 0"}
!582 = distinct !{!582, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE"}
!583 = !{!584}
!584 = distinct !{!584, !585, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E: argument 0"}
!585 = distinct !{!585, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E"}
!586 = !{!587}
!587 = distinct !{!587, !588, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4542301533526628222E: argument 0"}
!588 = distinct !{!588, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4542301533526628222E"}
!589 = !{!590}
!590 = distinct !{!590, !588, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4542301533526628222E: argument 1"}
!591 = !{!592, !594, !595}
!592 = distinct !{!592, !593, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 0"}
!593 = distinct !{!593, !"_ZN2io5Write9write_fmt21h14472377557150804606E"}
!594 = distinct !{!594, !593, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 1"}
!595 = distinct !{!595, !593, !"_ZN2io5Write9write_fmt21h14472377557150804606E: argument 2"}
!596 = !{!592, !595}
!597 = !{!598}
!598 = distinct !{!598, !599, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E: argument 0"}
!599 = distinct !{!599, !"_ZN10sys_common7remutex47ReentrantMutexGuard$LT$$u27$a$C$$u20$T$GT$.Drop4drop20h3354561220544390439E"}
!600 = !{!601, !598}
!601 = distinct !{!601, !602, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE: argument 0"}
!602 = distinct !{!602, !"_ZN10sys_common6poison4Flag4done20h851653efea869e95q1qE"}
!603 = !{!604}
!604 = distinct !{!604, !605, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E: argument 0"}
!605 = distinct !{!605, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop20h6084394711246000422E"}
!606 = !{!607}
!607 = distinct !{!607, !608, !"_ZN10sys_common7remutex28ReentrantMutex$LT$T$GT$.Drop4drop19h601611939342486755E: argument 0"}
!608 = distinct !{!608, !"_ZN10sys_common7remutex28ReentrantMutex$LT$T$GT$.Drop4drop19h601611939342486755E"}
!609 = !{!610, !612}
!610 = distinct !{!610, !611, !"_ZN6option15Option$LT$T$GT$7is_some21h17942655746749037876E: argument 0"}
!611 = distinct !{!611, !"_ZN6option15Option$LT$T$GT$7is_some21h17942655746749037876E"}
!612 = distinct !{!612, !613, !"_ZN2io8buffered23BufWriter$LT$W$GT$.Drop4drop21h17195344360648343487E: argument 0"}
!613 = distinct !{!613, !"_ZN2io8buffered23BufWriter$LT$W$GT$.Drop4drop21h17195344360648343487E"}
!614 = !{!615, !617, !612}
!615 = distinct !{!615, !616, !"_ZN3vec12Vec$LT$T$GT$3len21h12828015579860499021E: argument 0"}
!616 = distinct !{!616, !"_ZN3vec12Vec$LT$T$GT$3len21h12828015579860499021E"}
!617 = distinct !{!617, !618, !"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E: argument 1"}
!618 = distinct !{!618, !"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E"}
!619 = !{!620}
!620 = distinct !{!620, !618, !"_ZN2io8buffered18BufWriter$LT$W$GT$9flush_buf20h3996560792254823444E: argument 0"}
!621 = !{!620, !617}
!622 = !{!620, !617, !612}
!623 = !{!624, !626, !617, !612}
!624 = distinct !{!624, !625, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!625 = distinct !{!625, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!626 = distinct !{!626, !627, !"_ZN3vec58Vec$LT$T$GT$.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index21h12054876817784183945E: argument 1"}
!627 = distinct !{!627, !"_ZN3vec58Vec$LT$T$GT$.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index21h12054876817784183945E"}
!628 = !{!629, !630, !620}
!629 = distinct !{!629, !625, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!630 = distinct !{!630, !627, !"_ZN3vec58Vec$LT$T$GT$.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index21h12054876817784183945E: argument 0"}
!631 = !{!632, !617, !612}
!632 = distinct !{!632, !633, !"_ZN6option15Option$LT$T$GT$6as_mut20h2446036601022227102E: argument 0"}
!633 = distinct !{!633, !"_ZN6option15Option$LT$T$GT$6as_mut20h2446036601022227102E"}
!634 = !{!635, !617, !612}
!635 = distinct !{!635, !636, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!636 = distinct !{!636, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!637 = !{!638, !620}
!638 = distinct !{!638, !636, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!639 = !{!640, !617, !612}
!640 = distinct !{!640, !641, !"_ZN3vec12Vec$LT$T$GT$8truncate21h13136722785719343017E: argument 0"}
!641 = distinct !{!641, !"_ZN3vec12Vec$LT$T$GT$8truncate21h13136722785719343017E"}
!642 = !{!643}
!643 = distinct !{!643, !644, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!644 = distinct !{!644, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!645 = !{!646}
!646 = distinct !{!646, !647, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!647 = distinct !{!647, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!648 = !{!649, !651}
!649 = distinct !{!649, !650, !"_ZN7convert15T.Into$LT$U$GT$4into20h9659077375937954061E: argument 0"}
!650 = distinct !{!650, !"_ZN7convert15T.Into$LT$U$GT$4into20h9659077375937954061E"}
!651 = distinct !{!651, !650, !"_ZN7convert15T.Into$LT$U$GT$4into20h9659077375937954061E: argument 1"}
!652 = !{!651}
!653 = !{!654}
!654 = distinct !{!654, !655, !"_ZN5boxed12Box$LT$T$GT$3new21h17823068725172580697E: argument 0"}
!655 = distinct !{!655, !"_ZN5boxed12Box$LT$T$GT$3new21h17823068725172580697E"}
!656 = !{!657, !659, !660, !662}
!657 = distinct !{!657, !658, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 0"}
!658 = distinct !{!658, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE"}
!659 = distinct !{!659, !658, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 1"}
!660 = distinct !{!660, !661, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 0"}
!661 = distinct !{!661, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE"}
!662 = distinct !{!662, !661, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 1"}
!663 = !{!664, !666, !667, !669}
!664 = distinct !{!664, !665, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 0"}
!665 = distinct !{!665, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE"}
!666 = distinct !{!666, !665, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 1"}
!667 = distinct !{!667, !668, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 0"}
!668 = distinct !{!668, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE"}
!669 = distinct !{!669, !668, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 1"}
!670 = !{!671}
!671 = distinct !{!671, !672, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str20h5673162548361446408E: argument 0"}
!672 = distinct !{!672, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str20h5673162548361446408E"}
!673 = !{!674}
!674 = distinct !{!674, !672, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str20h5673162548361446408E: argument 1"}
!675 = !{!671, !674}
!676 = !{!677, !679}
!677 = distinct !{!677, !678, !"_ZN3fmt5Write9write_fmt20h5062359944577624900E: argument 0"}
!678 = distinct !{!678, !"_ZN3fmt5Write9write_fmt20h5062359944577624900E"}
!679 = distinct !{!679, !678, !"_ZN3fmt5Write9write_fmt20h5062359944577624900E: argument 1"}
!680 = !{!679}
!681 = !{!682}
!682 = distinct !{!682, !683, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!683 = distinct !{!683, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!684 = !{!685}
!685 = distinct !{!685, !683, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!686 = !{!687}
!687 = distinct !{!687, !688, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!688 = distinct !{!688, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!689 = !{!690, !691}
!690 = distinct !{!690, !688, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!691 = distinct !{!691, !688, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!692 = !{!693}
!693 = distinct !{!693, !694, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!694 = distinct !{!694, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!695 = !{!696}
!696 = distinct !{!696, !694, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!697 = !{!698, !700}
!698 = distinct !{!698, !699, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!699 = distinct !{!699, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!700 = distinct !{!700, !699, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!701 = !{!702}
!702 = distinct !{!702, !699, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!703 = !{!698}
!704 = !{!700, !702}
!705 = !{!706}
!706 = distinct !{!706, !707, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E: argument 0"}
!707 = distinct !{!707, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E"}
!708 = !{!709}
!709 = distinct !{!709, !710, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E: argument 0"}
!710 = distinct !{!710, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E"}
!711 = !{!712}
!712 = distinct !{!712, !713, !"_ZN10sys_common7remutex28ReentrantMutex$LT$T$GT$.Drop4drop20h7215048283015201662E: argument 0"}
!713 = distinct !{!713, !"_ZN10sys_common7remutex28ReentrantMutex$LT$T$GT$.Drop4drop20h7215048283015201662E"}
!714 = !{!715}
!715 = distinct !{!715, !716, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!716 = distinct !{!716, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!717 = !{!718}
!718 = distinct !{!718, !716, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!719 = !{!720}
!720 = distinct !{!720, !721, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!721 = distinct !{!721, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!722 = !{!723, !724}
!723 = distinct !{!723, !721, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!724 = distinct !{!724, !721, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!725 = !{!726}
!726 = distinct !{!726, !727, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!727 = distinct !{!727, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!728 = !{!729}
!729 = distinct !{!729, !727, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!730 = !{!731}
!731 = distinct !{!731, !732, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!732 = distinct !{!732, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!733 = !{!734}
!734 = distinct !{!734, !732, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!735 = !{!736, !738}
!736 = distinct !{!736, !737, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!737 = distinct !{!737, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!738 = distinct !{!738, !737, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!739 = !{!740}
!740 = distinct !{!740, !737, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!741 = !{!736}
!742 = !{!738, !740}
!743 = !{!744}
!744 = distinct !{!744, !745, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E: argument 0"}
!745 = distinct !{!745, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E"}
!746 = !{!747}
!747 = distinct !{!747, !748, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E: argument 0"}
!748 = distinct !{!748, !"_ZN3arc17Arc$LT$T$GT$.Drop4drop19h554368761024533595E"}
!749 = !{!750}
!750 = distinct !{!750, !751, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!751 = distinct !{!751, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!752 = !{!753, !755, !757, !759}
!753 = distinct !{!753, !754, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!754 = distinct !{!754, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!755 = distinct !{!755, !756, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!756 = distinct !{!756, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!757 = distinct !{!757, !758, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!758 = distinct !{!758, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!759 = distinct !{!759, !760, !"_ZN3int17Int.std..num..One3one20h5277d2bca30dd6a1FQgE: argument 0"}
!760 = distinct !{!760, !"_ZN3int17Int.std..num..One3one20h5277d2bca30dd6a1FQgE"}
!761 = !{!755, !757, !759}
!762 = !{!757, !759}
!763 = !{!764}
!764 = distinct !{!764, !765, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!765 = distinct !{!765, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!766 = !{!767}
!767 = distinct !{!767, !768, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!768 = distinct !{!768, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!769 = !{!770}
!770 = distinct !{!770, !771, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!771 = distinct !{!771, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!772 = !{!773}
!773 = distinct !{!773, !774, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!774 = distinct !{!774, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!775 = !{!776}
!776 = distinct !{!776, !777, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!777 = distinct !{!777, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!778 = !{!779}
!779 = distinct !{!779, !780, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!780 = distinct !{!780, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!781 = !{!782}
!782 = distinct !{!782, !783, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!783 = distinct !{!783, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!784 = !{!785}
!785 = distinct !{!785, !786, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!786 = distinct !{!786, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!787 = !{!788}
!788 = distinct !{!788, !789, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!789 = distinct !{!789, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!790 = !{!791}
!791 = distinct !{!791, !792, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!792 = distinct !{!792, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!793 = !{!794, !796}
!794 = distinct !{!794, !795, !"_ZN6string10T.ToString9to_string20h5537758125275662918E: argument 0"}
!795 = distinct !{!795, !"_ZN6string10T.ToString9to_string20h5537758125275662918E"}
!796 = distinct !{!796, !795, !"_ZN6string10T.ToString9to_string20h5537758125275662918E: argument 1"}
!797 = !{!798, !800, !802}
!798 = distinct !{!798, !799, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E: argument 0"}
!799 = distinct !{!799, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E"}
!800 = distinct !{!800, !801, !"_ZN3vec12Vec$LT$T$GT$3new20h7046059131260133331E: argument 0"}
!801 = distinct !{!801, !"_ZN3vec12Vec$LT$T$GT$3new20h7046059131260133331E"}
!802 = distinct !{!802, !803, !"_ZN6string6String3new20h3734a211828edebaoahE: argument 0"}
!803 = distinct !{!803, !"_ZN6string6String3new20h3734a211828edebaoahE"}
!804 = !{!800, !802}
!805 = !{!806}
!806 = distinct !{!806, !807, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 0"}
!807 = distinct !{!807, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E"}
!808 = !{!809, !794, !796}
!809 = distinct !{!809, !807, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 1"}
!810 = !{!811, !813, !794, !796}
!811 = distinct !{!811, !812, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E: argument 0"}
!812 = distinct !{!812, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E"}
!813 = distinct !{!813, !812, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E: argument 1"}
!814 = !{!794}
!815 = !{!816}
!816 = distinct !{!816, !817, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!817 = distinct !{!817, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!818 = !{!796}
!819 = !{!820, !822}
!820 = distinct !{!820, !821, !"_ZN3vec12Vec$LT$T$GT$13shrink_to_fit21h16812393052943276290E: argument 0"}
!821 = distinct !{!821, !"_ZN3vec12Vec$LT$T$GT$13shrink_to_fit21h16812393052943276290E"}
!822 = distinct !{!822, !823, !"_ZN6string6String13shrink_to_fit20h2464f7195b3ba014tnhE: argument 0"}
!823 = distinct !{!823, !"_ZN6string6String13shrink_to_fit20h2464f7195b3ba014tnhE"}
!824 = !{!820, !822, !794, !796}
!825 = !{!820, !822, !794}
!826 = !{!827}
!827 = distinct !{!827, !828, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!828 = distinct !{!828, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!829 = !{!830, !820, !822, !794, !796}
!830 = distinct !{!830, !828, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!831 = !{!832}
!832 = distinct !{!832, !833, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!833 = distinct !{!833, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!834 = !{!835, !836, !820, !822, !794, !796}
!835 = distinct !{!835, !833, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!836 = distinct !{!836, !833, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!837 = !{!838}
!838 = distinct !{!838, !839, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E: argument 0"}
!839 = distinct !{!839, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E"}
!840 = !{!841}
!841 = distinct !{!841, !839, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E: argument 1"}
!842 = !{!843, !845}
!843 = distinct !{!843, !844, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!844 = distinct !{!844, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!845 = distinct !{!845, !844, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!846 = !{!847}
!847 = distinct !{!847, !844, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!848 = !{!843}
!849 = !{!845, !847}
!850 = !{!851}
!851 = distinct !{!851, !852, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!852 = distinct !{!852, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!853 = !{!854}
!854 = distinct !{!854, !855, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E: argument 0"}
!855 = distinct !{!855, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E"}
!856 = !{!857, !859, !854}
!857 = distinct !{!857, !858, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E: argument 0"}
!858 = distinct !{!858, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E"}
!859 = distinct !{!859, !860, !"_ZN3vec12Vec$LT$T$GT$3new20h7046059131260133331E: argument 0"}
!860 = distinct !{!860, !"_ZN3vec12Vec$LT$T$GT$3new20h7046059131260133331E"}
!861 = !{!859, !854}
!862 = !{!863}
!863 = distinct !{!863, !864, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!864 = distinct !{!864, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!865 = !{!866, !854}
!866 = distinct !{!866, !864, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!867 = !{!868}
!868 = distinct !{!868, !869, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!869 = distinct !{!869, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!870 = !{!871, !872, !854}
!871 = distinct !{!871, !869, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!872 = distinct !{!872, !869, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!873 = !{!874, !854}
!874 = distinct !{!874, !875, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E: argument 0"}
!875 = distinct !{!875, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E"}
!876 = !{!877, !879, !880, !881, !883, !884}
!877 = distinct !{!877, !878, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!878 = distinct !{!878, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!879 = distinct !{!879, !878, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!880 = distinct !{!880, !878, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!881 = distinct !{!881, !882, !"_ZN3int3Int11write_radix20h4083756142845483460E: argument 0"}
!882 = distinct !{!882, !"_ZN3int3Int11write_radix20h4083756142845483460E"}
!883 = distinct !{!883, !882, !"_ZN3int3Int11write_radix20h4083756142845483460E: argument 1"}
!884 = distinct !{!884, !882, !"_ZN3int3Int11write_radix20h4083756142845483460E: argument 2"}
!885 = !{!877, !879, !881, !883, !884}
!886 = !{!887, !881, !883, !884}
!887 = distinct !{!887, !888, !"_ZN2ll4base7to_base21h15446090756808322216E: argument 0"}
!888 = distinct !{!888, !"_ZN2ll4base7to_base21h15446090756808322216E"}
!889 = !{!890, !887, !881, !883, !884}
!890 = distinct !{!890, !891, !"_ZN3int3Int11write_radix12closure.9633E: argument 0"}
!891 = distinct !{!891, !"_ZN3int3Int11write_radix12closure.9633E"}
!892 = !{!893, !895, !896, !890, !887, !881, !883, !884}
!893 = distinct !{!893, !894, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!894 = distinct !{!894, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!895 = distinct !{!895, !894, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!896 = distinct !{!896, !894, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!897 = !{!898, !887, !881, !883, !884}
!898 = distinct !{!898, !899, !"_ZN3int3Int11write_radix12closure.9633E: argument 0"}
!899 = distinct !{!899, !"_ZN3int3Int11write_radix12closure.9633E"}
!900 = !{!901, !903, !904, !898, !887, !881, !883, !884}
!901 = distinct !{!901, !902, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!902 = distinct !{!902, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!903 = distinct !{!903, !902, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!904 = distinct !{!904, !902, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!905 = !{!906, !908, !909, !898, !887, !881, !883, !884}
!906 = distinct !{!906, !907, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!907 = distinct !{!907, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!908 = distinct !{!908, !907, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!909 = distinct !{!909, !907, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!910 = !{!911, !887, !881, !883, !884}
!911 = distinct !{!911, !912, !"_ZN3int3Int11write_radix12closure.9633E: argument 0"}
!912 = distinct !{!912, !"_ZN3int3Int11write_radix12closure.9633E"}
!913 = !{!914, !916, !917, !911, !887, !881, !883, !884}
!914 = distinct !{!914, !915, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!915 = distinct !{!915, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!916 = distinct !{!916, !915, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!917 = distinct !{!917, !915, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!918 = !{!919, !921, !922, !911, !887, !881, !883, !884}
!919 = distinct !{!919, !920, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!920 = distinct !{!920, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!921 = distinct !{!921, !920, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!922 = distinct !{!922, !920, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!923 = !{!924, !887, !881, !883, !884}
!924 = distinct !{!924, !925, !"_ZN2ll4base12to_base_impl20h2475424234299757752E: argument 0"}
!925 = distinct !{!925, !"_ZN2ll4base12to_base_impl20h2475424234299757752E"}
!926 = !{!927, !929, !924, !887, !881, !883, !884}
!927 = distinct !{!927, !928, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E: argument 0"}
!928 = distinct !{!928, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E"}
!929 = distinct !{!929, !930, !"_ZN3vec9from_elem20h9687329583078081599E: argument 0"}
!930 = distinct !{!930, !"_ZN3vec9from_elem20h9687329583078081599E"}
!931 = !{!932}
!932 = distinct !{!932, !933, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!933 = distinct !{!933, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!934 = !{!935, !927, !929, !924, !887, !881, !883, !884}
!935 = distinct !{!935, !933, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!936 = !{!937}
!937 = distinct !{!937, !938, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!938 = distinct !{!938, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!939 = !{!940, !941, !927, !929, !924, !887, !881, !883, !884}
!940 = distinct !{!940, !938, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!941 = distinct !{!941, !938, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!942 = !{!929, !924, !887, !881, !883, !884}
!943 = !{!944, !946, !924, !887, !881, !883, !884}
!944 = distinct !{!944, !945, !"_ZN3vec12Vec$LT$T$GT$13with_capacity21h11700858426728452463E: argument 0"}
!945 = distinct !{!945, !"_ZN3vec12Vec$LT$T$GT$13with_capacity21h11700858426728452463E"}
!946 = distinct !{!946, !947, !"_ZN3vec9from_elem21h15998278747788918580E: argument 0"}
!947 = distinct !{!947, !"_ZN3vec9from_elem21h15998278747788918580E"}
!948 = !{!949, !951, !944, !946, !924, !887, !881, !883, !884}
!949 = distinct !{!949, !950, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E: argument 0"}
!950 = distinct !{!950, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E"}
!951 = distinct !{!951, !950, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E: argument 1"}
!952 = !{!953}
!953 = distinct !{!953, !954, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 0"}
!954 = distinct !{!954, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E"}
!955 = !{!956, !949, !951, !944, !946, !924, !887, !881, !883, !884}
!956 = distinct !{!956, !954, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 1"}
!957 = !{!958}
!958 = distinct !{!958, !959, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!959 = distinct !{!959, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!960 = !{!961, !962, !949, !951, !944, !946, !924, !887, !881, !883, !884}
!961 = distinct !{!961, !959, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!962 = distinct !{!962, !959, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!963 = !{!951}
!964 = !{!949, !944, !946, !924, !887, !881, !883, !884}
!965 = !{!966}
!966 = distinct !{!966, !967, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!967 = distinct !{!967, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!968 = !{!969, !944, !946, !924, !887, !881, !883, !884}
!969 = distinct !{!969, !967, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!970 = !{!971}
!971 = distinct !{!971, !972, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!972 = distinct !{!972, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!973 = !{!974, !975, !944, !946, !924, !887, !881, !883, !884}
!974 = distinct !{!974, !972, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!975 = distinct !{!975, !972, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!976 = !{!946, !924, !887, !881, !883, !884}
!977 = !{!978}
!978 = distinct !{!978, !979, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!979 = distinct !{!979, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!980 = !{!981, !924, !887, !881, !883, !884}
!981 = distinct !{!981, !979, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!982 = !{!983, !985, !987, !924, !887, !881, !883, !884}
!983 = distinct !{!983, !984, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!984 = distinct !{!984, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!985 = distinct !{!985, !986, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!986 = distinct !{!986, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!987 = distinct !{!987, !988, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!988 = distinct !{!988, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!989 = !{!990}
!990 = distinct !{!990, !991, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!991 = distinct !{!991, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!992 = !{!993, !924, !887, !881, !883, !884}
!993 = distinct !{!993, !991, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!994 = !{!995, !997, !999, !924, !887, !881, !883, !884}
!995 = distinct !{!995, !996, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!996 = distinct !{!996, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!997 = distinct !{!997, !998, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!998 = distinct !{!998, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!999 = distinct !{!999, !1000, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!1000 = distinct !{!1000, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!1001 = !{!1002, !924, !887, !881, !883, !884}
!1002 = distinct !{!1002, !1003, !"_ZN3int3Int11write_radix12closure.9633E: argument 0"}
!1003 = distinct !{!1003, !"_ZN3int3Int11write_radix12closure.9633E"}
!1004 = !{!1005, !1007, !1008, !1002, !924, !887, !881, !883, !884}
!1005 = distinct !{!1005, !1006, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!1006 = distinct !{!1006, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!1007 = distinct !{!1007, !1006, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!1008 = distinct !{!1008, !1006, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!1009 = !{!924, !887, !881, !883}
!1010 = !{!1011, !1013, !1014, !1002, !924, !887, !881, !883, !884}
!1011 = distinct !{!1011, !1012, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 0"}
!1012 = distinct !{!1012, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE"}
!1013 = distinct !{!1013, !1012, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 1"}
!1014 = distinct !{!1014, !1012, !"_ZN2io5impls19Vec$LT$u8$GT$.Write9write_all20h83b1c948a218b203TDgE: argument 2"}
!1015 = !{!1016}
!1016 = distinct !{!1016, !1017, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1017 = distinct !{!1017, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1018 = !{!1019, !1021}
!1019 = distinct !{!1019, !1020, !"_ZN6string6String19from_utf8_unchecked20h9e98adc24677cb61bmhE: argument 0"}
!1020 = distinct !{!1020, !"_ZN6string6String19from_utf8_unchecked20h9e98adc24677cb61bmhE"}
!1021 = distinct !{!1021, !1020, !"_ZN6string6String19from_utf8_unchecked20h9e98adc24677cb61bmhE: argument 1"}
!1022 = !{!1023}
!1023 = distinct !{!1023, !1024, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1024 = distinct !{!1024, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1025 = !{!1026, !1028, !1029, !1031}
!1026 = distinct !{!1026, !1027, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE: argument 0"}
!1027 = distinct !{!1027, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE"}
!1028 = distinct !{!1028, !1027, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE: argument 1"}
!1029 = distinct !{!1029, !1030, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE: argument 0"}
!1030 = distinct !{!1030, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE"}
!1031 = distinct !{!1031, !1030, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE: argument 1"}
!1032 = !{!1028, !1031}
!1033 = !{!1034}
!1034 = distinct !{!1034, !1035, !"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E: argument 0"}
!1035 = distinct !{!1035, !"_ZN3vec12Vec$LT$T$GT$7reserve20h2352127970030148534E"}
!1036 = !{!1037, !1039, !1034}
!1037 = distinct !{!1037, !1038, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E: argument 0"}
!1038 = distinct !{!1038, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E"}
!1039 = distinct !{!1039, !1038, !"_ZN6option15Option$LT$T$GT$6expect21h16141866188274436649E: argument 1"}
!1040 = !{!1041}
!1041 = distinct !{!1041, !1042, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 0"}
!1042 = distinct !{!1042, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E"}
!1043 = !{!1044, !1037, !1039, !1034}
!1044 = distinct !{!1044, !1042, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new21h10625591820613044179E: argument 1"}
!1045 = !{!1046}
!1046 = distinct !{!1046, !1047, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!1047 = distinct !{!1047, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!1048 = !{!1049, !1050, !1037, !1039, !1034}
!1049 = distinct !{!1049, !1047, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!1050 = distinct !{!1050, !1047, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!1051 = !{!1037, !1034}
!1052 = !{!1039}
!1053 = !{!1054, !1034}
!1054 = distinct !{!1054, !1055, !"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E: argument 0"}
!1055 = distinct !{!1055, !"_ZN3vec12Vec$LT$T$GT$13grow_capacity20h7867308014352445346E"}
!1056 = !{!1057}
!1057 = distinct !{!1057, !1058, !"_ZN3vec26Vec$LT$T$GT$.ops..DerefMut9deref_mut21h11872976753817499520E: argument 1"}
!1058 = distinct !{!1058, !"_ZN3vec26Vec$LT$T$GT$.ops..DerefMut9deref_mut21h11872976753817499520E"}
!1059 = !{!1060}
!1060 = distinct !{!1060, !1058, !"_ZN3vec26Vec$LT$T$GT$.ops..DerefMut9deref_mut21h11872976753817499520E: argument 0"}
!1061 = !{!1062}
!1062 = distinct !{!1062, !1063, !"_ZN5clone8u8.Clone5clone20hc319f8ab295c47d2EmtE: argument 0"}
!1063 = distinct !{!1063, !"_ZN5clone8u8.Clone5clone20hc319f8ab295c47d2EmtE"}
!1064 = distinct !{!1064, !1, !2}
!1065 = distinct !{!1065, !1, !2}
!1066 = !{!1067, !1069}
!1067 = distinct !{!1067, !1068, !"_ZN3vec12Vec$LT$T$GT$3len21h12828015579860499021E: argument 0"}
!1068 = distinct !{!1068, !"_ZN3vec12Vec$LT$T$GT$3len21h12828015579860499021E"}
!1069 = distinct !{!1069, !1070, !"_ZN3vec12Vec$LT$T$GT$7set_len20h9215955356923630294E: argument 0"}
!1070 = distinct !{!1070, !"_ZN3vec12Vec$LT$T$GT$7set_len20h9215955356923630294E"}
!1071 = !{!1072}
!1072 = distinct !{!1072, !1073, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!1073 = distinct !{!1073, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!1074 = !{!1075}
!1075 = distinct !{!1075, !1073, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!1076 = !{!1077}
!1077 = distinct !{!1077, !1078, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!1078 = distinct !{!1078, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!1079 = !{!1080, !1081}
!1080 = distinct !{!1080, !1078, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!1081 = distinct !{!1081, !1078, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!1082 = !{!1083}
!1083 = distinct !{!1083, !1084, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!1084 = distinct !{!1084, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!1085 = !{!1086}
!1086 = distinct !{!1086, !1084, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!1087 = !{!1088}
!1088 = distinct !{!1088, !1089, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!1089 = distinct !{!1089, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!1090 = !{!1091, !1092}
!1091 = distinct !{!1091, !1089, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!1092 = distinct !{!1092, !1089, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!1093 = !{!1094, !1096, !1097, !1099}
!1094 = distinct !{!1094, !1095, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 0"}
!1095 = distinct !{!1095, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE"}
!1096 = distinct !{!1096, !1095, !"_ZN4char15encode_utf8_raw20h6aa6ba280a1776a84SBE: argument 1"}
!1097 = distinct !{!1097, !1098, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 0"}
!1098 = distinct !{!1098, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE"}
!1099 = distinct !{!1099, !1098, !"_ZN4char12char.CharExt11encode_utf820hc0be0b9a65fef331pSBE: argument 1"}
!1100 = !{!1101}
!1101 = distinct !{!1101, !1102, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str19h802018848175765322E: argument 0"}
!1102 = distinct !{!1102, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str19h802018848175765322E"}
!1103 = !{!1104}
!1104 = distinct !{!1104, !1102, !"_ZN3fmt5Write9write_fmt36Adapter$LT$$u27$a$C$$u20$T$GT$.Write9write_str19h802018848175765322E: argument 1"}
!1105 = !{!1106, !1108, !1109, !1111, !1101, !1104}
!1106 = distinct !{!1106, !1107, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE: argument 0"}
!1107 = distinct !{!1107, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE"}
!1108 = distinct !{!1108, !1107, !"_ZN6string6String8push_str20hb3e8f62a8414a427EmhE: argument 1"}
!1109 = distinct !{!1109, !1110, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE: argument 0"}
!1110 = distinct !{!1110, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE"}
!1111 = distinct !{!1111, !1110, !"_ZN6string17String.fmt..Write9write_str20h464467387b1c391bxUhE: argument 1"}
!1112 = !{!1108, !1111, !1101, !1104}
!1113 = !{!1114, !1116}
!1114 = distinct !{!1114, !1115, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E: argument 0"}
!1115 = distinct !{!1115, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E"}
!1116 = distinct !{!1116, !1115, !"_ZN3fmt5Write9write_fmt21h18419012303191103730E: argument 1"}
!1117 = !{!1116}
!1118 = !{!1119}
!1119 = distinct !{!1119, !1120, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E: argument 0"}
!1120 = distinct !{!1120, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E"}
!1121 = !{!1122}
!1122 = distinct !{!1122, !1120, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h4775048193854572729E: argument 1"}
!1123 = !{!1124, !1126}
!1124 = distinct !{!1124, !1125, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!1125 = distinct !{!1125, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!1126 = distinct !{!1126, !1125, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!1127 = !{!1128}
!1128 = distinct !{!1128, !1125, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!1129 = !{!1124}
!1130 = !{!1126, !1128}
!1131 = !{!1132, !1134, !1136, !1138, !1139, !1141, !1142, !1144, !1146, !1148}
!1132 = distinct !{!1132, !1133, !"_ZN3str15next_code_point20h3cfe780eb721f185yIIE: argument 0"}
!1133 = distinct !{!1133, !"_ZN3str15next_code_point20h3cfe780eb721f185yIIE"}
!1134 = distinct !{!1134, !1135, !"_ZN3str28Chars$LT$$u27$a$GT$.Iterator4next20hfb2003286725f7e1nMIE: argument 0"}
!1135 = distinct !{!1135, !"_ZN3str28Chars$LT$$u27$a$GT$.Iterator4next20hfb2003286725f7e1nMIE"}
!1136 = distinct !{!1136, !1137, !"_ZN3str34CharIndices$LT$$u27$a$GT$.Iterator4next20h9fd58d1ef584156aAOIE: argument 0"}
!1137 = distinct !{!1137, !"_ZN3str34CharIndices$LT$$u27$a$GT$.Iterator4next20h9fd58d1ef584156aAOIE"}
!1138 = distinct !{!1138, !1137, !"_ZN3str34CharIndices$LT$$u27$a$GT$.Iterator4next20h9fd58d1ef584156aAOIE: argument 1"}
!1139 = distinct !{!1139, !1140, !"_ZN3str7pattern60CharEqSearcher$LT$$u27$a$C$$u20$C$GT$.Searcher$LT$$u27$a$GT$4next20h7124412004402734930E: argument 0"}
!1140 = distinct !{!1140, !"_ZN3str7pattern60CharEqSearcher$LT$$u27$a$C$$u20$C$GT$.Searcher$LT$$u27$a$GT$4next20h7124412004402734930E"}
!1141 = distinct !{!1141, !1140, !"_ZN3str7pattern60CharEqSearcher$LT$$u27$a$C$$u20$C$GT$.Searcher$LT$$u27$a$GT$4next20h7124412004402734930E: argument 1"}
!1142 = distinct !{!1142, !1143, !"_ZN3str7pattern7Pattern12is_prefix_of21h16320938115353297734E: argument 0"}
!1143 = distinct !{!1143, !"_ZN3str7pattern7Pattern12is_prefix_of21h16320938115353297734E"}
!1144 = distinct !{!1144, !1145, !"_ZN3str7pattern26char.Pattern$LT$$u27$a$GT$12is_prefix_of20hff08589e7ee898d3toIE: argument 0"}
!1145 = distinct !{!1145, !"_ZN3str7pattern26char.Pattern$LT$$u27$a$GT$12is_prefix_of20hff08589e7ee898d3toIE"}
!1146 = distinct !{!1146, !1147, !"_ZN3str10str.StrExt11starts_with21h10598992127407746639E: argument 0"}
!1147 = distinct !{!1147, !"_ZN3str10str.StrExt11starts_with21h10598992127407746639E"}
!1148 = distinct !{!1148, !1149, !"_ZN3str3str11starts_with20h4002351270733706017E: argument 0"}
!1149 = distinct !{!1149, !"_ZN3str3str11starts_with20h4002351270733706017E"}
!1150 = !{!1151, !1153, !1155}
!1151 = distinct !{!1151, !1152, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!1152 = distinct !{!1152, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!1153 = distinct !{!1153, !1154, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!1154 = distinct !{!1154, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!1155 = distinct !{!1155, !1154, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!1156 = !{!1153, !1155}
!1157 = !{!1158}
!1158 = distinct !{!1158, !1159, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E: argument 0"}
!1159 = distinct !{!1159, !"_ZN3vec12Vec$LT$T$GT$13with_capacity20h2986519150920211867E"}
!1160 = !{!1161}
!1161 = distinct !{!1161, !1162, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 0"}
!1162 = distinct !{!1162, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E"}
!1163 = !{!1164, !1158}
!1164 = distinct !{!1164, !1162, !"_ZN3fmt24ArgumentV1$LT$$u27$a$GT$3new20h1061905976743076506E: argument 1"}
!1165 = !{!1166}
!1166 = distinct !{!1166, !1167, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 0"}
!1167 = distinct !{!1167, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME"}
!1168 = !{!1169, !1170, !1158}
!1169 = distinct !{!1169, !1167, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 1"}
!1170 = distinct !{!1170, !1167, !"_ZN3fmt23Arguments$LT$$u27$a$GT$6new_v120h6ba37d4fdec0cca39ZME: argument 2"}
!1171 = !{!1172, !1158}
!1172 = distinct !{!1172, !1173, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E: argument 0"}
!1173 = distinct !{!1173, !"_ZN3vec12Vec$LT$T$GT$14from_raw_parts20h9245786549435964152E"}
!1174 = !{!1175}
!1175 = distinct !{!1175, !1176, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1176 = distinct !{!1176, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1177 = !{!1178}
!1178 = distinct !{!1178, !1179, !"_ZN4iter14I.IntoIterator9into_iter21h12206056210960736035E: argument 1"}
!1179 = distinct !{!1179, !"_ZN4iter14I.IntoIterator9into_iter21h12206056210960736035E"}
!1180 = !{!1181}
!1181 = distinct !{!1181, !1179, !"_ZN4iter14I.IntoIterator9into_iter21h12206056210960736035E: argument 0"}
!1182 = !{!1183, !1185, !1187}
!1183 = distinct !{!1183, !1184, !"_ZN3str49BytesDeref.Fn$LT$$LP$$RF$$u27$a$u20$u8$C$$RP$$GT$4call20h137e104aaf22e1farRIE: argument 0"}
!1184 = distinct !{!1184, !"_ZN3str49BytesDeref.Fn$LT$$LP$$RF$$u27$a$u20$u8$C$$RP$$GT$4call20h137e104aaf22e1farRIE"}
!1185 = distinct !{!1185, !1186, !"_ZN3str52BytesDeref.FnMut$LT$$LP$$RF$$u27$a$u20$u8$C$$RP$$GT$8call_mut20hdbcd43fc7c96aac1QRIE: argument 0"}
!1186 = distinct !{!1186, !"_ZN3str52BytesDeref.FnMut$LT$$LP$$RF$$u27$a$u20$u8$C$$RP$$GT$8call_mut20hdbcd43fc7c96aac1QRIE"}
!1187 = distinct !{!1187, !1188, !"_ZN4iter30Map$LT$I$C$$u20$F$GT$.Iterator4next12closure.9733E: argument 0"}
!1188 = distinct !{!1188, !"_ZN4iter30Map$LT$I$C$$u20$F$GT$.Iterator4next12closure.9733E"}
!1189 = !{!1190, !1192}
!1190 = distinct !{!1190, !1191, !"_ZN4iter30Map$LT$I$C$$u20$F$GT$.Iterator4next21h12572003563314167726E: argument 0"}
!1191 = distinct !{!1191, !"_ZN4iter30Map$LT$I$C$$u20$F$GT$.Iterator4next21h12572003563314167726E"}
!1192 = distinct !{!1192, !1193, !"_ZN3str28Bytes$LT$$u27$a$GT$.Iterator4next20h76f25d5e15b7bf05RSIE: argument 0"}
!1193 = distinct !{!1193, !"_ZN3str28Bytes$LT$$u27$a$GT$.Iterator4next20h76f25d5e15b7bf05RSIE"}
!1194 = !{!1195}
!1195 = distinct !{!1195, !1196, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1196 = distinct !{!1196, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1197 = !{!1198}
!1198 = distinct !{!1198, !1199, !"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E: argument 0"}
!1199 = distinct !{!1199, !"_ZN3vec12Vec$LT$T$GT$4push19h328413837557913509E"}
!1200 = !{!1201}
!1201 = distinct !{!1201, !1202, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1202 = distinct !{!1202, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1203 = !{!1204}
!1204 = distinct !{!1204, !1205, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!1205 = distinct !{!1205, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!1206 = !{!1207}
!1207 = distinct !{!1207, !1208, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1208 = distinct !{!1208, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1209 = !{!1210}
!1210 = distinct !{!1210, !1211, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1211 = distinct !{!1211, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1212 = !{!1213}
!1213 = distinct !{!1213, !1214, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1214 = distinct !{!1214, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1215 = !{!1216}
!1216 = distinct !{!1216, !1217, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1217 = distinct !{!1217, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1218 = !{!1219}
!1219 = distinct !{!1219, !1220, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1220 = distinct !{!1220, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1221 = !{!1222}
!1222 = distinct !{!1222, !1223, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1223 = distinct !{!1223, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1224 = !{!1225, !1226}
!1225 = distinct !{!1225, !1223, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1226 = distinct !{!1226, !1227, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1227 = distinct !{!1227, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1228 = !{!1229}
!1229 = distinct !{!1229, !1230, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1230 = distinct !{!1230, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1231 = !{!1232, !1233}
!1232 = distinct !{!1232, !1230, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1233 = distinct !{!1233, !1234, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1234 = distinct !{!1234, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1235 = !{!1236}
!1236 = distinct !{!1236, !1237, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1237 = distinct !{!1237, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1238 = !{!1239}
!1239 = distinct !{!1239, !1240, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1240 = distinct !{!1240, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1241 = !{!1242}
!1242 = distinct !{!1242, !1240, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1243 = !{!1244, !1246}
!1244 = distinct !{!1244, !1245, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!1245 = distinct !{!1245, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!1246 = distinct !{!1246, !1247, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!1247 = distinct !{!1247, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!1248 = !{!1249}
!1249 = distinct !{!1249, !1250, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1250 = distinct !{!1250, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1251 = !{!1252, !1249}
!1252 = distinct !{!1252, !1253, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1253 = distinct !{!1253, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1254 = !{!1255}
!1255 = distinct !{!1255, !1256, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1256 = distinct !{!1256, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1257 = !{!1258, !1255}
!1258 = distinct !{!1258, !1259, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1259 = distinct !{!1259, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1260 = !{!1261}
!1261 = distinct !{!1261, !1262, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1262 = distinct !{!1262, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1263 = !{!1264, !1261}
!1264 = distinct !{!1264, !1265, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1265 = distinct !{!1265, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1266 = !{!1267, !1269}
!1267 = distinct !{!1267, !1268, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!1268 = distinct !{!1268, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!1269 = distinct !{!1269, !1270, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!1270 = distinct !{!1270, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!1271 = !{!1272, !1274}
!1272 = distinct !{!1272, !1273, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1273 = distinct !{!1273, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1274 = distinct !{!1274, !1275, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!1275 = distinct !{!1275, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!1276 = !{!1274}
!1277 = !{!1278}
!1278 = distinct !{!1278, !1279, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1279 = distinct !{!1279, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1280 = !{!1281}
!1281 = distinct !{!1281, !1282, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1282 = distinct !{!1282, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1283 = !{!1284, !1281}
!1284 = distinct !{!1284, !1285, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1285 = distinct !{!1285, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1286 = !{!1287}
!1287 = distinct !{!1287, !1288, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1288 = distinct !{!1288, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1289 = !{!1290, !1287}
!1290 = distinct !{!1290, !1291, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1291 = distinct !{!1291, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1292 = !{!1293}
!1293 = distinct !{!1293, !1294, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1294 = distinct !{!1294, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1295 = !{!1296}
!1296 = distinct !{!1296, !1297, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1297 = distinct !{!1297, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1298 = !{!1299}
!1299 = distinct !{!1299, !1300, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1300 = distinct !{!1300, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1301 = !{!1302, !1299}
!1302 = distinct !{!1302, !1303, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1303 = distinct !{!1303, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1304 = !{!1305, !1307}
!1305 = distinct !{!1305, !1306, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!1306 = distinct !{!1306, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!1307 = distinct !{!1307, !1308, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!1308 = distinct !{!1308, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!1309 = !{!1310}
!1310 = distinct !{!1310, !1311, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1311 = distinct !{!1311, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1312 = !{!1313, !1310}
!1313 = distinct !{!1313, !1314, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1314 = distinct !{!1314, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1315 = !{!1316, !1318}
!1316 = distinct !{!1316, !1317, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1317 = distinct !{!1317, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1318 = distinct !{!1318, !1319, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!1319 = distinct !{!1319, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!1320 = !{!1318}
!1321 = !{!1322}
!1322 = distinct !{!1322, !1323, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1323 = distinct !{!1323, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1324 = !{!1325, !1322}
!1325 = distinct !{!1325, !1326, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1326 = distinct !{!1326, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1327 = !{!1328}
!1328 = distinct !{!1328, !1329, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1329 = distinct !{!1329, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1330 = !{!1331}
!1331 = distinct !{!1331, !1332, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1332 = distinct !{!1332, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1333 = !{!1334, !1336, !1338}
!1334 = distinct !{!1334, !1335, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE: argument 0"}
!1335 = distinct !{!1335, !"_ZN2ll4limb3mul8mul_impl20h7241fe6d25884b48vidE"}
!1336 = distinct !{!1336, !1337, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE: argument 0"}
!1337 = distinct !{!1337, !"_ZN2ll4limb3mul20h78d6ade0e9d551a7iidE"}
!1338 = distinct !{!1338, !1339, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE: argument 0"}
!1339 = distinct !{!1339, !"_ZN2ll4limb4Limb8mul_hilo20h07101b84f40787fan1cE"}
!1340 = !{!1341}
!1341 = distinct !{!1341, !1342, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1342 = distinct !{!1342, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1343 = !{!1344}
!1344 = distinct !{!1344, !1345, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1345 = distinct !{!1345, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1346 = !{!1347, !1349}
!1347 = distinct !{!1347, !1348, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!1348 = distinct !{!1348, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!1349 = distinct !{!1349, !1350, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!1350 = distinct !{!1350, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!1351 = !{!1352, !1354, !1356}
!1352 = distinct !{!1352, !1353, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1353 = distinct !{!1353, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1354 = distinct !{!1354, !1355, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1355 = distinct !{!1355, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1356 = distinct !{!1356, !1355, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1357 = !{!1358, !1356}
!1358 = distinct !{!1358, !1359, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1359 = distinct !{!1359, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1360 = !{!1354}
!1361 = !{!1354, !1356}
!1362 = distinct !{!1362, !1, !2}
!1363 = distinct !{!1363, !4}
!1364 = distinct !{!1364, !1, !2}
!1365 = !{!1356}
!1366 = !{!1367}
!1367 = distinct !{!1367, !1368, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1368 = distinct !{!1368, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1369 = !{!1370}
!1370 = distinct !{!1370, !1371, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1371 = distinct !{!1371, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1372 = !{!1373, !1375, !1377}
!1373 = distinct !{!1373, !1374, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1374 = distinct !{!1374, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1375 = distinct !{!1375, !1376, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1376 = distinct !{!1376, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1377 = distinct !{!1377, !1376, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1378 = !{!1379, !1377}
!1379 = distinct !{!1379, !1380, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1380 = distinct !{!1380, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1381 = !{!1375}
!1382 = !{!1375, !1377}
!1383 = distinct !{!1383, !1, !2}
!1384 = distinct !{!1384, !4}
!1385 = distinct !{!1385, !1, !2}
!1386 = !{!1377}
!1387 = !{!1388}
!1388 = distinct !{!1388, !1389, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1389 = distinct !{!1389, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1390 = !{!1391}
!1391 = distinct !{!1391, !1392, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1392 = distinct !{!1392, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1393 = !{!1394}
!1394 = distinct !{!1394, !1395, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1395 = distinct !{!1395, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1396 = !{!1397}
!1397 = distinct !{!1397, !1398, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1398 = distinct !{!1398, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1399 = !{!1400, !1401}
!1400 = distinct !{!1400, !1398, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1401 = distinct !{!1401, !1402, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1402 = distinct !{!1402, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1403 = !{!1404}
!1404 = distinct !{!1404, !1405, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1405 = distinct !{!1405, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1406 = !{!1407}
!1407 = distinct !{!1407, !1408, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1408 = distinct !{!1408, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1409 = !{!1410}
!1410 = distinct !{!1410, !1411, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1411 = distinct !{!1411, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1412 = !{!1413, !1410}
!1413 = distinct !{!1413, !1414, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1414 = distinct !{!1414, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1415 = !{!1416}
!1416 = distinct !{!1416, !1417, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1417 = distinct !{!1417, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1418 = !{!1419, !1421}
!1419 = distinct !{!1419, !1420, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!1420 = distinct !{!1420, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!1421 = distinct !{!1421, !1422, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!1422 = distinct !{!1422, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!1423 = !{!1424}
!1424 = distinct !{!1424, !1425, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1425 = distinct !{!1425, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1426 = !{!1427}
!1427 = distinct !{!1427, !1428, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1428 = distinct !{!1428, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1429 = distinct !{!1429, !1, !2}
!1430 = distinct !{!1430, !4}
!1431 = distinct !{!1431, !1, !2}
!1432 = !{!1433}
!1433 = distinct !{!1433, !1434, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1434 = distinct !{!1434, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1435 = !{!1436}
!1436 = distinct !{!1436, !1437, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1437 = distinct !{!1437, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1438 = !{!1439}
!1439 = distinct !{!1439, !1440, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1440 = distinct !{!1440, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1441 = !{!1442, !1436}
!1442 = distinct !{!1442, !1443, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1443 = distinct !{!1443, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1444 = !{!1445}
!1445 = distinct !{!1445, !1446, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1446 = distinct !{!1446, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1447 = distinct !{!1447, !1, !2}
!1448 = distinct !{!1448, !4}
!1449 = distinct !{!1449, !1, !2}
!1450 = !{!1451}
!1451 = distinct !{!1451, !1452, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1452 = distinct !{!1452, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1453 = !{!1454}
!1454 = distinct !{!1454, !1455, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1455 = distinct !{!1455, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1456 = !{!1457}
!1457 = distinct !{!1457, !1458, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1458 = distinct !{!1458, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1459 = !{!1460}
!1460 = distinct !{!1460, !1458, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1461 = !{!1462}
!1462 = distinct !{!1462, !1463, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1463 = distinct !{!1463, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1464 = !{!1465}
!1465 = distinct !{!1465, !1466, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!1466 = distinct !{!1466, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!1467 = !{!1468}
!1468 = distinct !{!1468, !1466, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!1469 = !{!1470, !1472}
!1470 = distinct !{!1470, !1471, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1471 = distinct !{!1471, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1472 = distinct !{!1472, !1473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!1473 = distinct !{!1473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!1474 = !{!1475, !1476}
!1475 = distinct !{!1475, !1471, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1476 = distinct !{!1476, !1473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!1477 = !{!1476}
!1478 = !{!1472}
!1479 = !{!1480, !1476}
!1480 = distinct !{!1480, !1481, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1481 = distinct !{!1481, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1482 = !{!1483}
!1483 = distinct !{!1483, !1484, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!1484 = distinct !{!1484, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!1485 = !{!1486, !1476, !1472}
!1486 = distinct !{!1486, !1484, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!1487 = !{!1488}
!1488 = distinct !{!1488, !1489, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1489 = distinct !{!1489, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1490 = !{!1491}
!1491 = distinct !{!1491, !1492, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1492 = distinct !{!1492, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1493 = !{!1494}
!1494 = distinct !{!1494, !1495, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1495 = distinct !{!1495, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1496 = !{!1497}
!1497 = distinct !{!1497, !1498, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1498 = distinct !{!1498, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1499 = !{!1500}
!1500 = distinct !{!1500, !1501, !"_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE: argument 0"}
!1501 = distinct !{!1501, !"_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE"}
!1502 = !{!1503}
!1503 = distinct !{!1503, !1501, !"_ZN3int7Int.Ord3cmp20hbd090e695a2b8b8dkceE: argument 1"}
!1504 = !{!1505, !1500}
!1505 = distinct !{!1505, !1506, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1506 = distinct !{!1506, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1507 = !{!1508, !1503}
!1508 = distinct !{!1508, !1509, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1509 = distinct !{!1509, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1510 = !{!1500, !1503}
!1511 = !{!1512, !1503}
!1512 = distinct !{!1512, !1513, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1513 = distinct !{!1513, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1514 = !{!1515, !1500}
!1515 = distinct !{!1515, !1516, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1516 = distinct !{!1516, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1517 = !{!1518, !1520}
!1518 = distinct !{!1518, !1519, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1519 = distinct !{!1519, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1520 = distinct !{!1520, !1521, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!1521 = distinct !{!1521, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!1522 = !{!1523, !1524}
!1523 = distinct !{!1523, !1519, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1524 = distinct !{!1524, !1521, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!1525 = !{!1524}
!1526 = !{!1520}
!1527 = !{!1528, !1524}
!1528 = distinct !{!1528, !1529, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1529 = distinct !{!1529, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1530 = !{!1531}
!1531 = distinct !{!1531, !1532, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!1532 = distinct !{!1532, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!1533 = !{!1534, !1524, !1520}
!1534 = distinct !{!1534, !1532, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!1535 = !{!1536}
!1536 = distinct !{!1536, !1537, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1537 = distinct !{!1537, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1538 = !{!1539, !1541, !1543}
!1539 = distinct !{!1539, !1540, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 0"}
!1540 = distinct !{!1540, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE"}
!1541 = distinct !{!1541, !1542, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 0"}
!1542 = distinct !{!1542, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE"}
!1543 = distinct !{!1543, !1544, !"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$11partial_cmp20hf74118d512b49711gedE: argument 0"}
!1544 = distinct !{!1544, !"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$11partial_cmp20hf74118d512b49711gedE"}
!1545 = !{!1546, !1547, !1549, !1550, !1551}
!1546 = distinct !{!1546, !1540, !"_ZN3cmp5impls14u64.PartialOrd2le20h6694f6b7a16632fe9PsE: argument 1"}
!1547 = distinct !{!1547, !1548, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 0"}
!1548 = distinct !{!1548, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E"}
!1549 = distinct !{!1549, !1548, !"_ZN3cmp5impls52_$RF$$u27$a$u20$A.PartialOrd$LT$$RF$$u27$b$u20$B$GT$2le21h11080845668664144778E: argument 1"}
!1550 = distinct !{!1550, !1542, !"_ZN3cmp5impls14u64.PartialOrd11partial_cmp20h66e6e70bf8b40fc73OsE: argument 1"}
!1551 = distinct !{!1551, !1544, !"_ZN2ll4limb27Limb.PartialOrd$LT$Limb$GT$11partial_cmp20hf74118d512b49711gedE: argument 1"}
!1552 = !{!1553, !1555, !1557}
!1553 = distinct !{!1553, !1554, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1554 = distinct !{!1554, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1555 = distinct !{!1555, !1556, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!1556 = distinct !{!1556, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!1557 = distinct !{!1557, !1558, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!1558 = distinct !{!1558, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!1559 = !{!1560, !1561, !1562}
!1560 = distinct !{!1560, !1554, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1561 = distinct !{!1561, !1556, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!1562 = distinct !{!1562, !1558, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!1563 = !{!1561, !1562}
!1564 = !{!1555, !1557}
!1565 = !{!1566, !1561, !1562}
!1566 = distinct !{!1566, !1567, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1567 = distinct !{!1567, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1568 = !{!1569}
!1569 = distinct !{!1569, !1570, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!1570 = distinct !{!1570, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!1571 = !{!1572, !1561, !1555, !1562, !1557}
!1572 = distinct !{!1572, !1570, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!1573 = !{!1574}
!1574 = distinct !{!1574, !1575, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1575 = distinct !{!1575, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1576 = !{!1577, !1574}
!1577 = distinct !{!1577, !1578, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1578 = distinct !{!1578, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1579 = !{!1580}
!1580 = distinct !{!1580, !1581, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!1581 = distinct !{!1581, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!1582 = !{!1583}
!1583 = distinct !{!1583, !1584, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1584 = distinct !{!1584, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1585 = !{!1586}
!1586 = distinct !{!1586, !1587, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1587 = distinct !{!1587, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1588 = !{!1589}
!1589 = distinct !{!1589, !1590, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1590 = distinct !{!1590, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1591 = !{!1592}
!1592 = distinct !{!1592, !1593, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1593 = distinct !{!1593, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1594 = !{!1595, !1592}
!1595 = distinct !{!1595, !1596, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1596 = distinct !{!1596, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1597 = !{!1598}
!1598 = distinct !{!1598, !1599, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1599 = distinct !{!1599, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1600 = !{!1601}
!1601 = distinct !{!1601, !1602, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1602 = distinct !{!1602, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1603 = !{!1604, !1601}
!1604 = distinct !{!1604, !1605, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1605 = distinct !{!1605, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1606 = !{!1607}
!1607 = distinct !{!1607, !1608, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1608 = distinct !{!1608, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1609 = !{!1610}
!1610 = distinct !{!1610, !1611, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1611 = distinct !{!1611, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1612 = distinct !{!1612, !1, !2}
!1613 = distinct !{!1613, !4}
!1614 = distinct !{!1614, !1, !2}
!1615 = !{!1616}
!1616 = distinct !{!1616, !1617, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1617 = distinct !{!1617, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1618 = !{!1619}
!1619 = distinct !{!1619, !1620, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1620 = distinct !{!1620, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1621 = !{!1622, !1616}
!1622 = distinct !{!1622, !1620, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1623 = !{!1624}
!1624 = distinct !{!1624, !1625, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1625 = distinct !{!1625, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1626 = !{!1627, !1624}
!1627 = distinct !{!1627, !1628, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1628 = distinct !{!1628, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1629 = !{!1630, !1632}
!1630 = distinct !{!1630, !1631, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1631 = distinct !{!1631, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1632 = distinct !{!1632, !1633, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE: argument 0"}
!1633 = distinct !{!1633, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE"}
!1634 = !{!1635}
!1635 = distinct !{!1635, !1633, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE: argument 1"}
!1636 = !{!1637, !1635}
!1637 = distinct !{!1637, !1638, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1638 = distinct !{!1638, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1639 = !{!1632}
!1640 = !{!1632, !1635}
!1641 = !{!1642}
!1642 = distinct !{!1642, !1643, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1643 = distinct !{!1643, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1644 = distinct !{!1644, !1, !2}
!1645 = distinct !{!1645, !4}
!1646 = distinct !{!1646, !1, !2}
!1647 = !{!1648}
!1648 = distinct !{!1648, !1649, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1649 = distinct !{!1649, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1650 = !{!1651}
!1651 = distinct !{!1651, !1652, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1652 = distinct !{!1652, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1653 = !{!1654, !1648}
!1654 = distinct !{!1654, !1652, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1655 = !{!1656}
!1656 = distinct !{!1656, !1657, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1657 = distinct !{!1657, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1658 = !{!1659}
!1659 = distinct !{!1659, !1660, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1660 = distinct !{!1660, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1661 = !{!1662, !1659}
!1662 = distinct !{!1662, !1663, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1663 = distinct !{!1663, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1664 = !{!1665}
!1665 = distinct !{!1665, !1666, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1666 = distinct !{!1666, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1667 = !{!1668, !1665}
!1668 = distinct !{!1668, !1669, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1669 = distinct !{!1669, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1670 = !{!1671}
!1671 = distinct !{!1671, !1672, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1672 = distinct !{!1672, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1673 = !{!1674, !1671}
!1674 = distinct !{!1674, !1675, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1675 = distinct !{!1675, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1676 = !{!1677}
!1677 = distinct !{!1677, !1678, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1678 = distinct !{!1678, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1679 = !{!1680, !1677}
!1680 = distinct !{!1680, !1681, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1681 = distinct !{!1681, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1682 = !{!1683}
!1683 = distinct !{!1683, !1684, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1684 = distinct !{!1684, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1685 = !{!1686}
!1686 = distinct !{!1686, !1687, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1687 = distinct !{!1687, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1688 = !{!1689, !1691, !1693}
!1689 = distinct !{!1689, !1690, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!1690 = distinct !{!1690, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!1691 = distinct !{!1691, !1692, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!1692 = distinct !{!1692, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!1693 = distinct !{!1693, !1694, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1694 = distinct !{!1694, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1695 = !{!1696}
!1696 = distinct !{!1696, !1694, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1697 = !{!1698, !1693, !1696}
!1698 = distinct !{!1698, !1699, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1699 = distinct !{!1699, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1700 = !{!1701, !1696}
!1701 = distinct !{!1701, !1702, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1702 = distinct !{!1702, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1703 = !{!1693}
!1704 = !{!1693, !1696}
!1705 = distinct !{!1705, !1, !2}
!1706 = distinct !{!1706, !4}
!1707 = distinct !{!1707, !1, !2}
!1708 = !{!1709, !1711, !1713}
!1709 = distinct !{!1709, !1710, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1710 = distinct !{!1710, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1711 = distinct !{!1711, !1712, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1712 = distinct !{!1712, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1713 = distinct !{!1713, !1712, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1714 = !{!1715, !1713}
!1715 = distinct !{!1715, !1716, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1716 = distinct !{!1716, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1717 = !{!1711}
!1718 = !{!1711, !1713}
!1719 = distinct !{!1719, !1, !2}
!1720 = distinct !{!1720, !4}
!1721 = distinct !{!1721, !1, !2}
!1722 = !{!1713}
!1723 = !{!1724, !1726, !1728}
!1724 = distinct !{!1724, !1725, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1725 = distinct !{!1725, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1726 = distinct !{!1726, !1727, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1727 = distinct !{!1727, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1728 = distinct !{!1728, !1727, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1729 = !{!1730, !1728}
!1730 = distinct !{!1730, !1731, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1731 = distinct !{!1731, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1732 = !{!1726}
!1733 = !{!1726, !1728}
!1734 = distinct !{!1734, !1, !2}
!1735 = distinct !{!1735, !4}
!1736 = distinct !{!1736, !1, !2}
!1737 = !{!1728}
!1738 = !{!1739, !1741, !1743}
!1739 = distinct !{!1739, !1740, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1740 = distinct !{!1740, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1741 = distinct !{!1741, !1742, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1742 = distinct !{!1742, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1743 = distinct !{!1743, !1742, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1744 = !{!1745, !1743}
!1745 = distinct !{!1745, !1746, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1746 = distinct !{!1746, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1747 = !{!1741}
!1748 = !{!1741, !1743}
!1749 = distinct !{!1749, !1, !2}
!1750 = distinct !{!1750, !4}
!1751 = distinct !{!1751, !1, !2}
!1752 = !{!1743}
!1753 = !{!1754}
!1754 = distinct !{!1754, !1755, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1755 = distinct !{!1755, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1756 = !{!1757, !1754}
!1757 = distinct !{!1757, !1758, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1758 = distinct !{!1758, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1759 = !{!1760}
!1760 = distinct !{!1760, !1761, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!1761 = distinct !{!1761, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!1762 = !{!1763}
!1763 = distinct !{!1763, !1764, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1764 = distinct !{!1764, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1765 = !{!1766}
!1766 = distinct !{!1766, !1767, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1767 = distinct !{!1767, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1768 = !{!1769}
!1769 = distinct !{!1769, !1770, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1770 = distinct !{!1770, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1771 = !{!1772}
!1772 = distinct !{!1772, !1773, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1773 = distinct !{!1773, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1774 = !{!1775, !1769}
!1775 = distinct !{!1775, !1773, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1776 = !{!1777}
!1777 = distinct !{!1777, !1778, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1778 = distinct !{!1778, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1779 = !{!1780}
!1780 = distinct !{!1780, !1781, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1781 = distinct !{!1781, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1782 = !{!1783, !1780}
!1783 = distinct !{!1783, !1784, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1784 = distinct !{!1784, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1785 = !{!1786}
!1786 = distinct !{!1786, !1787, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1787 = distinct !{!1787, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1788 = !{!1789, !1786}
!1789 = distinct !{!1789, !1790, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1790 = distinct !{!1790, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1791 = !{!1792}
!1792 = distinct !{!1792, !1793, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1793 = distinct !{!1793, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1794 = !{!1795, !1797}
!1795 = distinct !{!1795, !1796, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1796 = distinct !{!1796, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1797 = distinct !{!1797, !1798, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE: argument 0"}
!1798 = distinct !{!1798, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE"}
!1799 = !{!1800}
!1800 = distinct !{!1800, !1798, !"_ZN3int3Int7abs_cmp20h5f49ad93866abe31bLdE: argument 1"}
!1801 = !{!1802, !1800}
!1802 = distinct !{!1802, !1803, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1803 = distinct !{!1803, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1804 = !{!1797}
!1805 = !{!1797, !1800}
!1806 = !{!1807}
!1807 = distinct !{!1807, !1808, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1808 = distinct !{!1808, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1809 = !{!1810, !1807}
!1810 = distinct !{!1810, !1811, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1811 = distinct !{!1811, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1812 = !{!1813}
!1813 = distinct !{!1813, !1814, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1814 = distinct !{!1814, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1815 = distinct !{!1815, !1, !2}
!1816 = distinct !{!1816, !4}
!1817 = distinct !{!1817, !1, !2}
!1818 = !{!1819}
!1819 = distinct !{!1819, !1820, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1820 = distinct !{!1820, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1821 = !{!1822}
!1822 = distinct !{!1822, !1823, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1823 = distinct !{!1823, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1824 = !{!1825, !1819}
!1825 = distinct !{!1825, !1823, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1826 = !{!1827}
!1827 = distinct !{!1827, !1828, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!1828 = distinct !{!1828, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!1829 = !{!1830, !1827}
!1830 = distinct !{!1830, !1831, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1831 = distinct !{!1831, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1832 = !{!1833}
!1833 = distinct !{!1833, !1834, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1834 = distinct !{!1834, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1835 = !{!1836}
!1836 = distinct !{!1836, !1837, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!1837 = distinct !{!1837, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!1838 = !{!1839}
!1839 = distinct !{!1839, !1840, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1840 = distinct !{!1840, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1841 = distinct !{!1841, !1, !2}
!1842 = distinct !{!1842, !4}
!1843 = distinct !{!1843, !1, !2}
!1844 = !{!1845}
!1845 = distinct !{!1845, !1846, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!1846 = distinct !{!1846, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!1847 = !{!1848}
!1848 = distinct !{!1848, !1849, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!1849 = distinct !{!1849, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!1850 = !{!1851, !1845}
!1851 = distinct !{!1851, !1849, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!1852 = !{!1853}
!1853 = distinct !{!1853, !1854, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1854 = distinct !{!1854, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1855 = !{!1856}
!1856 = distinct !{!1856, !1857, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1857 = distinct !{!1857, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1858 = !{!1859, !1856}
!1859 = distinct !{!1859, !1860, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1860 = distinct !{!1860, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1861 = !{!1862}
!1862 = distinct !{!1862, !1863, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1863 = distinct !{!1863, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1864 = !{!1865}
!1865 = distinct !{!1865, !1866, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 1"}
!1866 = distinct !{!1866, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE"}
!1867 = !{!1868}
!1868 = distinct !{!1868, !1866, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 0"}
!1869 = !{!1868, !1865}
!1870 = !{!1871}
!1871 = distinct !{!1871, !1872, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1872 = distinct !{!1872, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1873 = !{!1874}
!1874 = distinct !{!1874, !1875, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1875 = distinct !{!1875, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1876 = !{!1877, !1874}
!1877 = distinct !{!1877, !1878, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1878 = distinct !{!1878, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1879 = !{!1880}
!1880 = distinct !{!1880, !1881, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1881 = distinct !{!1881, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1882 = !{!1883, !1880}
!1883 = distinct !{!1883, !1884, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1884 = distinct !{!1884, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1885 = !{!1886}
!1886 = distinct !{!1886, !1887, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1887 = distinct !{!1887, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1888 = !{!1889, !1886}
!1889 = distinct !{!1889, !1890, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1890 = distinct !{!1890, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1891 = !{!1892}
!1892 = distinct !{!1892, !1893, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1893 = distinct !{!1893, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1894 = !{!1895}
!1895 = distinct !{!1895, !1896, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1896 = distinct !{!1896, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1897 = !{!1898, !1900, !1902}
!1898 = distinct !{!1898, !1899, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1899 = distinct !{!1899, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1900 = distinct !{!1900, !1901, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1901 = distinct !{!1901, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1902 = distinct !{!1902, !1903, !"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE: argument 1"}
!1903 = distinct !{!1903, !"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE"}
!1904 = !{!1905, !1906}
!1905 = distinct !{!1905, !1901, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1906 = distinct !{!1906, !1903, !"_ZN3int23_$RF$$u27$a$u20$Int.Neg3neg20ha81769c18ad93c64SXeE: argument 0"}
!1907 = !{!1908, !1905, !1900, !1906, !1902}
!1908 = distinct !{!1908, !1909, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1909 = distinct !{!1909, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1910 = !{!1911, !1900, !1902}
!1911 = distinct !{!1911, !1912, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1912 = distinct !{!1912, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1913 = !{!1905, !1900, !1906, !1902}
!1914 = distinct !{!1914, !1, !2}
!1915 = distinct !{!1915, !4}
!1916 = distinct !{!1916, !1, !2}
!1917 = !{!1906, !1902}
!1918 = !{!1906}
!1919 = !{!1902}
!1920 = !{!1921}
!1921 = distinct !{!1921, !1922, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1922 = distinct !{!1922, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1923 = !{!1924, !1926, !1928}
!1924 = distinct !{!1924, !1925, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1925 = distinct !{!1925, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1926 = distinct !{!1926, !1927, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1927 = distinct !{!1927, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1928 = distinct !{!1928, !1927, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1929 = !{!1930, !1928}
!1930 = distinct !{!1930, !1931, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1931 = distinct !{!1931, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1932 = !{!1926}
!1933 = !{!1926, !1928}
!1934 = distinct !{!1934, !1, !2}
!1935 = distinct !{!1935, !4}
!1936 = distinct !{!1936, !1, !2}
!1937 = !{!1928}
!1938 = !{!1939, !1941, !1943}
!1939 = distinct !{!1939, !1940, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1940 = distinct !{!1940, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1941 = distinct !{!1941, !1942, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1942 = distinct !{!1942, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1943 = distinct !{!1943, !1942, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1944 = !{!1945, !1943}
!1945 = distinct !{!1945, !1946, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1946 = distinct !{!1946, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1947 = !{!1941}
!1948 = !{!1941, !1943}
!1949 = distinct !{!1949, !1, !2}
!1950 = distinct !{!1950, !4}
!1951 = distinct !{!1951, !1, !2}
!1952 = !{!1943}
!1953 = !{!1954, !1956}
!1954 = distinct !{!1954, !1955, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1955 = distinct !{!1955, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1956 = distinct !{!1956, !1957, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!1957 = distinct !{!1957, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!1958 = !{!1959}
!1959 = distinct !{!1959, !1957, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!1960 = !{!1961, !1959, !1956}
!1961 = distinct !{!1961, !1962, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!1962 = distinct !{!1962, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!1963 = !{!1964, !1956}
!1964 = distinct !{!1964, !1965, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!1965 = distinct !{!1965, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!1966 = !{!1959, !1956}
!1967 = distinct !{!1967, !1, !2}
!1968 = distinct !{!1968, !4}
!1969 = distinct !{!1969, !1, !2}
!1970 = !{!1971}
!1971 = distinct !{!1971, !1972, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1972 = distinct !{!1972, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1973 = !{!1974}
!1974 = distinct !{!1974, !1975, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1975 = distinct !{!1975, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1976 = !{!1977, !1974}
!1977 = distinct !{!1977, !1978, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1978 = distinct !{!1978, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1979 = !{!1980}
!1980 = distinct !{!1980, !1981, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1981 = distinct !{!1981, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1982 = !{!1983, !1980}
!1983 = distinct !{!1983, !1984, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1984 = distinct !{!1984, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1985 = !{!1986}
!1986 = distinct !{!1986, !1987, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!1987 = distinct !{!1987, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!1988 = !{!1989}
!1989 = distinct !{!1989, !1990, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1990 = distinct !{!1990, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1991 = !{!1992, !1989}
!1992 = distinct !{!1992, !1993, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1993 = distinct !{!1993, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!1994 = !{!1995}
!1995 = distinct !{!1995, !1996, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!1996 = distinct !{!1996, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!1997 = !{!1998, !1995}
!1998 = distinct !{!1998, !1999, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!1999 = distinct !{!1999, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2000 = !{!2001}
!2001 = distinct !{!2001, !2002, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2002 = distinct !{!2002, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2003 = !{!2004}
!2004 = distinct !{!2004, !2005, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2005 = distinct !{!2005, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2006 = !{!2007}
!2007 = distinct !{!2007, !2008, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2008 = distinct !{!2008, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2009 = !{!2010}
!2010 = distinct !{!2010, !2011, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2011 = distinct !{!2011, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2012 = !{!2013}
!2013 = distinct !{!2013, !2014, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2014 = distinct !{!2014, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2015 = !{!2016}
!2016 = distinct !{!2016, !2017, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2017 = distinct !{!2017, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2018 = !{!2019, !2013}
!2019 = distinct !{!2019, !2017, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2020 = !{!2021}
!2021 = distinct !{!2021, !2022, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2022 = distinct !{!2022, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2023 = !{!2024}
!2024 = distinct !{!2024, !2025, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2025 = distinct !{!2025, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2026 = !{!2027}
!2027 = distinct !{!2027, !2028, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2028 = distinct !{!2028, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2029 = !{!2030, !2032, !2034}
!2030 = distinct !{!2030, !2031, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2031 = distinct !{!2031, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2032 = distinct !{!2032, !2033, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2033 = distinct !{!2033, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2034 = distinct !{!2034, !2033, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2035 = !{!2036, !2034}
!2036 = distinct !{!2036, !2037, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2037 = distinct !{!2037, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2038 = !{!2032}
!2039 = !{!2032, !2034}
!2040 = distinct !{!2040, !1, !2}
!2041 = distinct !{!2041, !4}
!2042 = distinct !{!2042, !1, !2}
!2043 = !{!2044, !2046}
!2044 = distinct !{!2044, !2045, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2045 = distinct !{!2045, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2046 = distinct !{!2046, !2045, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2047 = !{!2048}
!2048 = distinct !{!2048, !2049, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2049 = distinct !{!2049, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2050 = !{!2051, !2052, !2044, !2046}
!2051 = distinct !{!2051, !2049, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2052 = distinct !{!2052, !2053, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2053 = distinct !{!2053, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2054 = !{!2055}
!2055 = distinct !{!2055, !2056, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2056 = distinct !{!2056, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2057 = !{!2058, !2055}
!2058 = distinct !{!2058, !2059, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2059 = distinct !{!2059, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2060 = !{!2061}
!2061 = distinct !{!2061, !2062, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2062 = distinct !{!2062, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2063 = !{!2064, !2061}
!2064 = distinct !{!2064, !2065, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2065 = distinct !{!2065, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2066 = !{!2067}
!2067 = distinct !{!2067, !2068, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2068 = distinct !{!2068, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2069 = !{!2070, !2067}
!2070 = distinct !{!2070, !2071, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2071 = distinct !{!2071, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2072 = !{!2073}
!2073 = distinct !{!2073, !2074, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2074 = distinct !{!2074, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2075 = !{!2076, !2073}
!2076 = distinct !{!2076, !2077, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2077 = distinct !{!2077, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2078 = !{!2079}
!2079 = distinct !{!2079, !2080, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2080 = distinct !{!2080, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2081 = !{!2082, !2079}
!2082 = distinct !{!2082, !2083, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2083 = distinct !{!2083, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2084 = !{!2085}
!2085 = distinct !{!2085, !2086, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2086 = distinct !{!2086, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2087 = !{!2088, !2085}
!2088 = distinct !{!2088, !2089, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2089 = distinct !{!2089, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2090 = !{!2091}
!2091 = distinct !{!2091, !2092, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2092 = distinct !{!2092, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2093 = !{!2094, !2091}
!2094 = distinct !{!2094, !2095, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2095 = distinct !{!2095, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2096 = !{!2097}
!2097 = distinct !{!2097, !2098, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2098 = distinct !{!2098, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2099 = !{!2100, !2097}
!2100 = distinct !{!2100, !2101, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2101 = distinct !{!2101, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2102 = !{!2103}
!2103 = distinct !{!2103, !2104, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2104 = distinct !{!2104, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2105 = !{!2106, !2103}
!2106 = distinct !{!2106, !2107, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2107 = distinct !{!2107, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2108 = !{!2109}
!2109 = distinct !{!2109, !2110, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2110 = distinct !{!2110, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2111 = !{!2112}
!2112 = distinct !{!2112, !2113, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2113 = distinct !{!2113, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2114 = !{!2115, !2117}
!2115 = distinct !{!2115, !2116, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2116 = distinct !{!2116, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2117 = distinct !{!2117, !2118, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2118 = distinct !{!2118, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2119 = !{!2120}
!2120 = distinct !{!2120, !2121, !"_ZN3int3Int13shrink_to_fit20h031467e6934aa0cbQLdE: argument 0"}
!2121 = distinct !{!2121, !"_ZN3int3Int13shrink_to_fit20h031467e6934aa0cbQLdE"}
!2122 = !{!2123}
!2123 = distinct !{!2123, !2124, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2124 = distinct !{!2124, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2125 = !{!2126}
!2126 = distinct !{!2126, !2127, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2127 = distinct !{!2127, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2128 = !{!2129, !2131}
!2129 = distinct !{!2129, !2130, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2130 = distinct !{!2130, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2131 = distinct !{!2131, !2132, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2132 = distinct !{!2132, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2133 = !{!2134}
!2134 = distinct !{!2134, !2132, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2135 = !{!2136, !2138, !2134}
!2136 = distinct !{!2136, !2137, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2137 = distinct !{!2137, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2138 = distinct !{!2138, !2139, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2139 = distinct !{!2139, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2140 = !{!2131}
!2141 = !{!2142, !2134, !2131}
!2142 = distinct !{!2142, !2143, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2143 = distinct !{!2143, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2144 = !{!2145, !2131}
!2145 = distinct !{!2145, !2146, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2146 = distinct !{!2146, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2147 = !{!2134, !2131}
!2148 = distinct !{!2148, !1, !2}
!2149 = distinct !{!2149, !4}
!2150 = distinct !{!2150, !1, !2}
!2151 = !{!2152}
!2152 = distinct !{!2152, !2153, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2153 = distinct !{!2153, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2154 = !{!2155, !2152}
!2155 = distinct !{!2155, !2156, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2156 = distinct !{!2156, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2157 = !{!2158}
!2158 = distinct !{!2158, !2159, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2159 = distinct !{!2159, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2160 = !{!2161, !2158}
!2161 = distinct !{!2161, !2162, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2162 = distinct !{!2162, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2163 = !{!2164}
!2164 = distinct !{!2164, !2165, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2165 = distinct !{!2165, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2166 = !{!2167, !2164}
!2167 = distinct !{!2167, !2168, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2168 = distinct !{!2168, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2169 = !{!2170}
!2170 = distinct !{!2170, !2171, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2171 = distinct !{!2171, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2172 = !{!2173, !2170}
!2173 = distinct !{!2173, !2174, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2174 = distinct !{!2174, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2175 = !{!2176}
!2176 = distinct !{!2176, !2177, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2177 = distinct !{!2177, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2178 = !{!2179, !2176}
!2179 = distinct !{!2179, !2180, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2180 = distinct !{!2180, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2181 = !{!2182}
!2182 = distinct !{!2182, !2183, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2183 = distinct !{!2183, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2184 = !{!2185, !2182}
!2185 = distinct !{!2185, !2186, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2186 = distinct !{!2186, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2187 = !{!2188}
!2188 = distinct !{!2188, !2189, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2189 = distinct !{!2189, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2190 = !{!2191, !2188}
!2191 = distinct !{!2191, !2192, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2192 = distinct !{!2192, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2193 = !{!2194}
!2194 = distinct !{!2194, !2195, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2195 = distinct !{!2195, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2196 = !{!2197, !2194}
!2197 = distinct !{!2197, !2198, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2198 = distinct !{!2198, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2199 = !{!2200}
!2200 = distinct !{!2200, !2201, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2201 = distinct !{!2201, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2202 = !{!2203, !2200}
!2203 = distinct !{!2203, !2204, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2204 = distinct !{!2204, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2205 = !{!2206}
!2206 = distinct !{!2206, !2207, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2207 = distinct !{!2207, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2208 = !{!2209}
!2209 = distinct !{!2209, !2210, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2210 = distinct !{!2210, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2211 = !{!2212, !2209}
!2212 = distinct !{!2212, !2213, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2213 = distinct !{!2213, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2214 = !{!2215}
!2215 = distinct !{!2215, !2216, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!2216 = distinct !{!2216, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!2217 = !{!2218}
!2218 = distinct !{!2218, !2219, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2219 = distinct !{!2219, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2220 = !{!2221, !2215}
!2221 = distinct !{!2221, !2222, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2222 = distinct !{!2222, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2223 = !{!2224}
!2224 = distinct !{!2224, !2225, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2225 = distinct !{!2225, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2226 = distinct !{!2226, !4}
!2227 = !{!2228, !2230}
!2228 = distinct !{!2228, !2229, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2229 = distinct !{!2229, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2230 = distinct !{!2230, !2231, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2231 = distinct !{!2231, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2232 = !{!2233}
!2233 = distinct !{!2233, !2231, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2234 = !{!2235, !2237, !2233}
!2235 = distinct !{!2235, !2236, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2236 = distinct !{!2236, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2237 = distinct !{!2237, !2238, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2238 = distinct !{!2238, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2239 = !{!2230}
!2240 = !{!2241, !2233, !2230}
!2241 = distinct !{!2241, !2242, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2242 = distinct !{!2242, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2243 = !{!2244, !2230}
!2244 = distinct !{!2244, !2245, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2245 = distinct !{!2245, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2246 = !{!2233, !2230}
!2247 = distinct !{!2247, !1, !2}
!2248 = distinct !{!2248, !4}
!2249 = distinct !{!2249, !1, !2}
!2250 = !{!2251}
!2251 = distinct !{!2251, !2252, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2252 = distinct !{!2252, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2253 = !{!2254, !2256}
!2254 = distinct !{!2254, !2255, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2255 = distinct !{!2255, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2256 = distinct !{!2256, !2257, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2257 = distinct !{!2257, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2258 = !{!2259}
!2259 = distinct !{!2259, !2260, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2260 = distinct !{!2260, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2261 = !{!2262, !2259}
!2262 = distinct !{!2262, !2263, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2263 = distinct !{!2263, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2264 = !{!2265}
!2265 = distinct !{!2265, !2266, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2266 = distinct !{!2266, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2267 = distinct !{!2267, !1, !2}
!2268 = distinct !{!2268, !4}
!2269 = distinct !{!2269, !1, !2}
!2270 = !{!2271}
!2271 = distinct !{!2271, !2272, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2272 = distinct !{!2272, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2273 = distinct !{!2273, !4}
!2274 = !{!2275, !2277}
!2275 = distinct !{!2275, !2276, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2276 = distinct !{!2276, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2277 = distinct !{!2277, !2278, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2278 = distinct !{!2278, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2279 = !{!2277}
!2280 = !{!2281}
!2281 = distinct !{!2281, !2282, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2282 = distinct !{!2282, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2283 = !{!2284, !2277}
!2284 = distinct !{!2284, !2282, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2285 = !{!2286}
!2286 = distinct !{!2286, !2287, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2287 = distinct !{!2287, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2288 = !{!2289}
!2289 = distinct !{!2289, !2290, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2290 = distinct !{!2290, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2291 = !{!2292}
!2292 = distinct !{!2292, !2293, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2293 = distinct !{!2293, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2294 = !{!2295, !2292}
!2295 = distinct !{!2295, !2296, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2296 = distinct !{!2296, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2297 = !{!2298}
!2298 = distinct !{!2298, !2299, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2299 = distinct !{!2299, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2300 = !{!2301}
!2301 = distinct !{!2301, !2302, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2302 = distinct !{!2302, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2303 = distinct !{!2303, !4}
!2304 = !{!2305}
!2305 = distinct !{!2305, !2306, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2306 = distinct !{!2306, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2307 = !{!2308}
!2308 = distinct !{!2308, !2309, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2309 = distinct !{!2309, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2310 = !{!2311, !2305}
!2311 = distinct !{!2311, !2309, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2312 = !{!2313}
!2313 = distinct !{!2313, !2314, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!2314 = distinct !{!2314, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!2315 = !{!2316}
!2316 = distinct !{!2316, !2317, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!2317 = distinct !{!2317, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!2318 = distinct !{!2318, !1, !2}
!2319 = distinct !{!2319, !4}
!2320 = distinct !{!2320, !1, !2}
!2321 = !{!2322}
!2322 = distinct !{!2322, !2323, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2323 = distinct !{!2323, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2324 = !{!2325}
!2325 = distinct !{!2325, !2326, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2326 = distinct !{!2326, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2327 = !{!2328, !2322}
!2328 = distinct !{!2328, !2326, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2329 = !{!2330}
!2330 = distinct !{!2330, !2331, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2331 = distinct !{!2331, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2332 = !{!2333}
!2333 = distinct !{!2333, !2334, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2334 = distinct !{!2334, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2335 = !{!2336, !2330}
!2336 = distinct !{!2336, !2334, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2337 = distinct !{!2337, !4}
!2338 = !{!2339, !2341}
!2339 = distinct !{!2339, !2340, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2340 = distinct !{!2340, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2341 = distinct !{!2341, !2342, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2342 = distinct !{!2342, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2343 = !{!2341}
!2344 = !{!2345}
!2345 = distinct !{!2345, !2346, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2346 = distinct !{!2346, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2347 = !{!2348, !2341}
!2348 = distinct !{!2348, !2346, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2349 = !{!2350}
!2350 = distinct !{!2350, !2351, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!2351 = distinct !{!2351, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!2352 = !{!2353}
!2353 = distinct !{!2353, !2354, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!2354 = distinct !{!2354, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!2355 = distinct !{!2355, !1, !2}
!2356 = distinct !{!2356, !4}
!2357 = distinct !{!2357, !1, !2}
!2358 = !{!2359}
!2359 = distinct !{!2359, !2360, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2360 = distinct !{!2360, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2361 = !{!2362}
!2362 = distinct !{!2362, !2363, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2363 = distinct !{!2363, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2364 = !{!2365}
!2365 = distinct !{!2365, !2366, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2366 = distinct !{!2366, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2367 = !{!2368, !2362}
!2368 = distinct !{!2368, !2366, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2369 = !{!2370}
!2370 = distinct !{!2370, !2371, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE: argument 0"}
!2371 = distinct !{!2371, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE"}
!2372 = distinct !{!2372, !4}
!2373 = !{!2374}
!2374 = distinct !{!2374, !2375, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2375 = distinct !{!2375, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2376 = !{!2377}
!2377 = distinct !{!2377, !2378, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2378 = distinct !{!2378, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2379 = !{!2380, !2374}
!2380 = distinct !{!2380, !2378, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2381 = !{!2382}
!2382 = distinct !{!2382, !2383, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2383 = distinct !{!2383, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2384 = !{!2385}
!2385 = distinct !{!2385, !2386, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2386 = distinct !{!2386, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2387 = !{!2388}
!2388 = distinct !{!2388, !2389, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2389 = distinct !{!2389, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2390 = !{!2391}
!2391 = distinct !{!2391, !2389, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2392 = !{!2393, !2395}
!2393 = distinct !{!2393, !2394, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2394 = distinct !{!2394, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2395 = distinct !{!2395, !2396, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!2396 = distinct !{!2396, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!2397 = !{!2398}
!2398 = distinct !{!2398, !2396, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!2399 = !{!2400}
!2400 = distinct !{!2400, !2401, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!2401 = distinct !{!2401, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!2402 = !{!2403, !2395, !2398}
!2403 = distinct !{!2403, !2401, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!2404 = !{!2405, !2407}
!2405 = distinct !{!2405, !2406, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2406 = distinct !{!2406, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2407 = distinct !{!2407, !2408, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2408 = distinct !{!2408, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2409 = !{!2410}
!2410 = distinct !{!2410, !2408, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2411 = !{!2412, !2414, !2410}
!2412 = distinct !{!2412, !2413, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2413 = distinct !{!2413, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2414 = distinct !{!2414, !2415, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2415 = distinct !{!2415, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2416 = !{!2407}
!2417 = !{!2418, !2410, !2407}
!2418 = distinct !{!2418, !2419, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2419 = distinct !{!2419, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2420 = !{!2421, !2407}
!2421 = distinct !{!2421, !2422, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2422 = distinct !{!2422, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2423 = !{!2410, !2407}
!2424 = distinct !{!2424, !1, !2}
!2425 = distinct !{!2425, !4}
!2426 = distinct !{!2426, !1, !2}
!2427 = !{!2428}
!2428 = distinct !{!2428, !2429, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2429 = distinct !{!2429, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2430 = !{!2431, !2428}
!2431 = distinct !{!2431, !2432, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2432 = distinct !{!2432, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2433 = !{!2434}
!2434 = distinct !{!2434, !2435, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2435 = distinct !{!2435, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2436 = !{!2437, !2434}
!2437 = distinct !{!2437, !2438, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2438 = distinct !{!2438, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2439 = !{!2440, !2442}
!2440 = distinct !{!2440, !2441, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2441 = distinct !{!2441, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2442 = distinct !{!2442, !2443, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!2443 = distinct !{!2443, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!2444 = !{!2445}
!2445 = distinct !{!2445, !2443, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!2446 = !{!2447}
!2447 = distinct !{!2447, !2448, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2448 = distinct !{!2448, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2449 = !{!2450, !2447}
!2450 = distinct !{!2450, !2451, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2451 = distinct !{!2451, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2452 = !{!2453, !2455}
!2453 = distinct !{!2453, !2454, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2454 = distinct !{!2454, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2455 = distinct !{!2455, !2456, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!2456 = distinct !{!2456, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!2457 = !{!2458}
!2458 = distinct !{!2458, !2456, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!2459 = !{!2460}
!2460 = distinct !{!2460, !2461, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2461 = distinct !{!2461, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2462 = !{!2463}
!2463 = distinct !{!2463, !2464, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2464 = distinct !{!2464, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2465 = !{!2466}
!2466 = distinct !{!2466, !2467, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2467 = distinct !{!2467, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2468 = !{!2469}
!2469 = distinct !{!2469, !2470, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!2470 = distinct !{!2470, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!2471 = !{!2472}
!2472 = distinct !{!2472, !2473, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!2473 = distinct !{!2473, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!2474 = distinct !{!2474, !1, !2}
!2475 = distinct !{!2475, !4}
!2476 = distinct !{!2476, !1, !2}
!2477 = !{!2478}
!2478 = distinct !{!2478, !2479, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE: argument 0"}
!2479 = distinct !{!2479, !"_ZN3int3Int8abs_size20h9c1c47a444bd9ff31KdE"}
!2480 = distinct !{!2480, !4}
!2481 = !{!2482}
!2482 = distinct !{!2482, !2483, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2483 = distinct !{!2483, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2484 = !{!2485}
!2485 = distinct !{!2485, !2486, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2486 = distinct !{!2486, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2487 = !{!2488, !2482}
!2488 = distinct !{!2488, !2486, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2489 = !{!2490}
!2490 = distinct !{!2490, !2491, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2491 = distinct !{!2491, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2492 = !{!2493}
!2493 = distinct !{!2493, !2494, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2494 = distinct !{!2494, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2495 = !{!2496, !2490}
!2496 = distinct !{!2496, !2494, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2497 = !{!2498}
!2498 = distinct !{!2498, !2499, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE: argument 0"}
!2499 = distinct !{!2499, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE"}
!2500 = distinct !{!2500, !4}
!2501 = distinct !{!2501, !4}
!2502 = !{!2503}
!2503 = distinct !{!2503, !2504, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2504 = distinct !{!2504, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2505 = !{!2506}
!2506 = distinct !{!2506, !2507, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2507 = distinct !{!2507, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2508 = !{!2509, !2503}
!2509 = distinct !{!2509, !2507, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2510 = !{!2511}
!2511 = distinct !{!2511, !2512, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE: argument 0"}
!2512 = distinct !{!2512, !"_ZN3int3Int15ensure_capacity20h33eab947147ab970K0dE"}
!2513 = !{!2514}
!2514 = distinct !{!2514, !2515, !"_ZN3int16complement_split20hafd10d453e8db564B8eE: argument 0"}
!2515 = distinct !{!2515, !"_ZN3int16complement_split20hafd10d453e8db564B8eE"}
!2516 = !{!2517}
!2517 = distinct !{!2517, !2518, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2518 = distinct !{!2518, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2519 = !{!2520, !2514}
!2520 = distinct !{!2520, !2518, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2521 = distinct !{!2521, !1, !2}
!2522 = distinct !{!2522, !4}
!2523 = distinct !{!2523, !1, !2}
!2524 = !{!2525}
!2525 = distinct !{!2525, !2526, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE: argument 0"}
!2526 = distinct !{!2526, !"_ZN3int15ComplementSplit10split_limb20h1d6e4f9800548894k8eE"}
!2527 = distinct !{!2527, !4}
!2528 = !{!2529}
!2529 = distinct !{!2529, !2530, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2530 = distinct !{!2530, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2531 = !{!2532}
!2532 = distinct !{!2532, !2533, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2533 = distinct !{!2533, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2534 = !{!2535, !2529}
!2535 = distinct !{!2535, !2533, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2536 = !{!2537, !2539}
!2537 = distinct !{!2537, !2538, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2538 = distinct !{!2538, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2539 = distinct !{!2539, !2540, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2540 = distinct !{!2540, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2541 = !{!2542}
!2542 = distinct !{!2542, !2540, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2543 = !{!2544, !2546, !2542}
!2544 = distinct !{!2544, !2545, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2545 = distinct !{!2545, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2546 = distinct !{!2546, !2547, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2547 = distinct !{!2547, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2548 = !{!2539}
!2549 = !{!2550, !2542, !2539}
!2550 = distinct !{!2550, !2551, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2551 = distinct !{!2551, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2552 = !{!2553, !2539}
!2553 = distinct !{!2553, !2554, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2554 = distinct !{!2554, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2555 = !{!2542, !2539}
!2556 = distinct !{!2556, !1, !2}
!2557 = distinct !{!2557, !4}
!2558 = distinct !{!2558, !1, !2}
!2559 = !{!2560}
!2560 = distinct !{!2560, !2561, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2561 = distinct !{!2561, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2562 = !{!2563, !2560}
!2563 = distinct !{!2563, !2564, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2564 = distinct !{!2564, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2565 = !{!2566}
!2566 = distinct !{!2566, !2567, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2567 = distinct !{!2567, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2568 = !{!2569, !2566}
!2569 = distinct !{!2569, !2570, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2570 = distinct !{!2570, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2571 = !{!2572}
!2572 = distinct !{!2572, !2573, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2573 = distinct !{!2573, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2574 = !{!2575}
!2575 = distinct !{!2575, !2576, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2576 = distinct !{!2576, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2577 = !{!2578, !2575}
!2578 = distinct !{!2578, !2579, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2579 = distinct !{!2579, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2580 = !{!2581}
!2581 = distinct !{!2581, !2582, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2582 = distinct !{!2582, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2583 = !{!2584, !2586}
!2584 = distinct !{!2584, !2585, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2585 = distinct !{!2585, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2586 = distinct !{!2586, !2585, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2587 = !{!2588}
!2588 = distinct !{!2588, !2589, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2589 = distinct !{!2589, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2590 = !{!2591, !2592, !2584, !2586}
!2591 = distinct !{!2591, !2589, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2592 = distinct !{!2592, !2593, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2593 = distinct !{!2593, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2594 = !{!2595, !2597}
!2595 = distinct !{!2595, !2596, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2596 = distinct !{!2596, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2597 = distinct !{!2597, !2596, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2598 = !{!2599}
!2599 = distinct !{!2599, !2600, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2600 = distinct !{!2600, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2601 = !{!2602, !2603, !2595, !2597}
!2602 = distinct !{!2602, !2600, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2603 = distinct !{!2603, !2604, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2604 = distinct !{!2604, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2605 = !{!2606}
!2606 = distinct !{!2606, !2607, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2607 = distinct !{!2607, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2608 = !{!2609, !2611}
!2609 = distinct !{!2609, !2610, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2610 = distinct !{!2610, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2611 = distinct !{!2611, !2610, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2612 = !{!2613}
!2613 = distinct !{!2613, !2614, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2614 = distinct !{!2614, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2615 = !{!2616, !2617, !2609, !2611}
!2616 = distinct !{!2616, !2614, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2617 = distinct !{!2617, !2618, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2618 = distinct !{!2618, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2619 = !{!2620, !2622}
!2620 = distinct !{!2620, !2621, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2621 = distinct !{!2621, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2622 = distinct !{!2622, !2623, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2623 = distinct !{!2623, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2624 = !{!2625}
!2625 = distinct !{!2625, !2623, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2626 = !{!2627, !2625, !2622}
!2627 = distinct !{!2627, !2628, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2628 = distinct !{!2628, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2629 = !{!2630, !2622}
!2630 = distinct !{!2630, !2631, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2631 = distinct !{!2631, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2632 = !{!2625, !2622}
!2633 = distinct !{!2633, !1, !2}
!2634 = distinct !{!2634, !4}
!2635 = distinct !{!2635, !1, !2}
!2636 = !{!2637, !2639}
!2637 = distinct !{!2637, !2638, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 0"}
!2638 = distinct !{!2638, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE"}
!2639 = distinct !{!2639, !2638, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 1"}
!2640 = !{!2639}
!2641 = !{!2642, !2644}
!2642 = distinct !{!2642, !2643, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 0"}
!2643 = distinct !{!2643, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE"}
!2644 = distinct !{!2644, !2643, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 1"}
!2645 = !{!2642}
!2646 = !{!2644}
!2647 = !{!2648, !2650}
!2648 = distinct !{!2648, !2649, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2649 = distinct !{!2649, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2650 = distinct !{!2650, !2651, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2651 = distinct !{!2651, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2652 = !{!2653}
!2653 = distinct !{!2653, !2651, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2654 = !{!2655, !2653, !2650}
!2655 = distinct !{!2655, !2656, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2656 = distinct !{!2656, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2657 = !{!2658, !2650}
!2658 = distinct !{!2658, !2659, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2659 = distinct !{!2659, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2660 = !{!2653, !2650}
!2661 = distinct !{!2661, !1, !2}
!2662 = distinct !{!2662, !4}
!2663 = distinct !{!2663, !1, !2}
!2664 = !{!2665, !2667}
!2665 = distinct !{!2665, !2666, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 0"}
!2666 = distinct !{!2666, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE"}
!2667 = distinct !{!2667, !2666, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 1"}
!2668 = !{!2667}
!2669 = !{!2670, !2672}
!2670 = distinct !{!2670, !2671, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2671 = distinct !{!2671, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2672 = distinct !{!2672, !2673, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2673 = distinct !{!2673, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2674 = !{!2675}
!2675 = distinct !{!2675, !2673, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2676 = !{!2677, !2675, !2672}
!2677 = distinct !{!2677, !2678, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2678 = distinct !{!2678, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2679 = !{!2680, !2672}
!2680 = distinct !{!2680, !2681, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2681 = distinct !{!2681, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2682 = !{!2675, !2672}
!2683 = distinct !{!2683, !1, !2}
!2684 = distinct !{!2684, !4}
!2685 = distinct !{!2685, !1, !2}
!2686 = !{!2687, !2689}
!2687 = distinct !{!2687, !2688, !"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE: argument 0"}
!2688 = distinct !{!2688, !"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE"}
!2689 = distinct !{!2689, !2688, !"_ZN3int18Int.Sub$LT$i32$GT$3sub20hd451b7dba8b8aaa22qfE: argument 1"}
!2690 = !{!2689}
!2691 = !{!2692, !2694}
!2692 = distinct !{!2692, !2693, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 0"}
!2693 = distinct !{!2693, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE"}
!2694 = distinct !{!2694, !2693, !"_ZN3int18Int.Add$LT$i32$GT$3add20h8f8ad36be30a1429dqfE: argument 1"}
!2695 = !{!2694}
!2696 = !{!2697}
!2697 = distinct !{!2697, !2698, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 1"}
!2698 = distinct !{!2698, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE"}
!2699 = !{!2700}
!2700 = distinct !{!2700, !2698, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 0"}
!2701 = !{!2700, !2697}
!2702 = !{!2703, !2705}
!2703 = distinct !{!2703, !2704, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2704 = distinct !{!2704, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2705 = distinct !{!2705, !2706, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2706 = distinct !{!2706, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2707 = !{!2708}
!2708 = distinct !{!2708, !2706, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2709 = !{!2710, !2712, !2708}
!2710 = distinct !{!2710, !2711, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2711 = distinct !{!2711, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2712 = distinct !{!2712, !2713, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2713 = distinct !{!2713, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2714 = !{!2705}
!2715 = !{!2716, !2708, !2705}
!2716 = distinct !{!2716, !2717, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2717 = distinct !{!2717, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2718 = !{!2719, !2705}
!2719 = distinct !{!2719, !2720, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2720 = distinct !{!2720, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2721 = !{!2708, !2705}
!2722 = distinct !{!2722, !1, !2}
!2723 = distinct !{!2723, !4}
!2724 = distinct !{!2724, !1, !2}
!2725 = !{!2726, !2728}
!2726 = distinct !{!2726, !2727, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2727 = distinct !{!2727, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2728 = distinct !{!2728, !2729, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2729 = distinct !{!2729, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2730 = !{!2731, !2733}
!2731 = distinct !{!2731, !2732, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2732 = distinct !{!2732, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2733 = distinct !{!2733, !2734, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2734 = distinct !{!2734, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2735 = !{!2736}
!2736 = distinct !{!2736, !2734, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2737 = !{!2738, !2740, !2736}
!2738 = distinct !{!2738, !2739, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2739 = distinct !{!2739, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2740 = distinct !{!2740, !2741, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2741 = distinct !{!2741, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2742 = !{!2733}
!2743 = !{!2744, !2736, !2733}
!2744 = distinct !{!2744, !2745, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2745 = distinct !{!2745, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2746 = !{!2747, !2733}
!2747 = distinct !{!2747, !2748, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2748 = distinct !{!2748, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2749 = !{!2736, !2733}
!2750 = distinct !{!2750, !1, !2}
!2751 = distinct !{!2751, !4}
!2752 = distinct !{!2752, !1, !2}
!2753 = !{!2754, !2756}
!2754 = distinct !{!2754, !2755, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2755 = distinct !{!2755, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2756 = distinct !{!2756, !2757, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2757 = distinct !{!2757, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2758 = !{!2759}
!2759 = distinct !{!2759, !2757, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2760 = !{!2761, !2763, !2759}
!2761 = distinct !{!2761, !2762, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2762 = distinct !{!2762, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2763 = distinct !{!2763, !2764, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2764 = distinct !{!2764, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2765 = !{!2756}
!2766 = !{!2767, !2759, !2756}
!2767 = distinct !{!2767, !2768, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2768 = distinct !{!2768, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2769 = !{!2770, !2756}
!2770 = distinct !{!2770, !2771, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2771 = distinct !{!2771, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2772 = !{!2759, !2756}
!2773 = distinct !{!2773, !1, !2}
!2774 = distinct !{!2774, !4}
!2775 = distinct !{!2775, !1, !2}
!2776 = !{!2777}
!2777 = distinct !{!2777, !2778, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2778 = distinct !{!2778, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2779 = !{!2780}
!2780 = distinct !{!2780, !2781, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2781 = distinct !{!2781, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2782 = !{!2783, !2780}
!2783 = distinct !{!2783, !2784, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2784 = distinct !{!2784, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2785 = !{!2786, !2788}
!2786 = distinct !{!2786, !2787, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!2787 = distinct !{!2787, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!2788 = distinct !{!2788, !2789, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!2789 = distinct !{!2789, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!2790 = !{!2788}
!2791 = !{!2792, !2794}
!2792 = distinct !{!2792, !2793, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2793 = distinct !{!2793, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2794 = distinct !{!2794, !2795, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2795 = distinct !{!2795, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2796 = !{!2797}
!2797 = distinct !{!2797, !2798, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2798 = distinct !{!2798, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2799 = !{!2800, !2802, !2804}
!2800 = distinct !{!2800, !2801, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2801 = distinct !{!2801, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2802 = distinct !{!2802, !2803, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2803 = distinct !{!2803, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2804 = distinct !{!2804, !2803, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2805 = !{!2806, !2804}
!2806 = distinct !{!2806, !2807, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2807 = distinct !{!2807, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2808 = !{!2802}
!2809 = !{!2802, !2804}
!2810 = distinct !{!2810, !1, !2}
!2811 = distinct !{!2811, !4}
!2812 = distinct !{!2812, !1, !2}
!2813 = !{!2814, !2816}
!2814 = distinct !{!2814, !2815, !"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE: argument 0"}
!2815 = distinct !{!2815, !"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE"}
!2816 = distinct !{!2816, !2815, !"_ZN3int18i32.Div$LT$Int$GT$3div20he9971b5bc1a93dfczzfE: argument 1"}
!2817 = !{!2818, !2820, !2814, !2816}
!2818 = distinct !{!2818, !2819, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!2819 = distinct !{!2819, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!2820 = distinct !{!2820, !2821, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!2821 = distinct !{!2821, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!2822 = !{!2820}
!2823 = !{!2816}
!2824 = !{!2825}
!2825 = distinct !{!2825, !2826, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2826 = distinct !{!2826, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2827 = !{!2828, !2830}
!2828 = distinct !{!2828, !2829, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2829 = distinct !{!2829, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2830 = distinct !{!2830, !2831, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2831 = distinct !{!2831, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2832 = !{!2833, !2835, !2837}
!2833 = distinct !{!2833, !2834, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2834 = distinct !{!2834, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2835 = distinct !{!2835, !2836, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2836 = distinct !{!2836, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2837 = distinct !{!2837, !2836, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2838 = !{!2839, !2837}
!2839 = distinct !{!2839, !2840, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2840 = distinct !{!2840, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2841 = !{!2835}
!2842 = !{!2835, !2837}
!2843 = distinct !{!2843, !1, !2}
!2844 = distinct !{!2844, !4}
!2845 = distinct !{!2845, !1, !2}
!2846 = !{!2847, !2849}
!2847 = distinct !{!2847, !2848, !"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE: argument 0"}
!2848 = distinct !{!2848, !"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE"}
!2849 = distinct !{!2849, !2848, !"_ZN3int18Int.Rem$LT$i32$GT$3rem20h1350716acbc4f733qufE: argument 1"}
!2850 = !{!2851, !2853, !2847, !2849}
!2851 = distinct !{!2851, !2852, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2852 = distinct !{!2852, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2853 = distinct !{!2853, !2852, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2854 = !{!2847}
!2855 = !{!2849}
!2856 = !{!2857}
!2857 = distinct !{!2857, !2858, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2858 = distinct !{!2858, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2859 = !{!2860, !2861, !2851, !2853, !2847, !2849}
!2860 = distinct !{!2860, !2858, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2861 = distinct !{!2861, !2862, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2862 = distinct !{!2862, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2863 = !{!2864, !2866}
!2864 = distinct !{!2864, !2865, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2865 = distinct !{!2865, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2866 = distinct !{!2866, !2867, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!2867 = distinct !{!2867, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!2868 = !{!2869}
!2869 = distinct !{!2869, !2867, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!2870 = !{!2871, !2873, !2866}
!2871 = distinct !{!2871, !2872, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2872 = distinct !{!2872, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2873 = distinct !{!2873, !2874, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!2874 = distinct !{!2874, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!2875 = !{!2876, !2869}
!2876 = distinct !{!2876, !2874, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!2877 = !{!2878}
!2878 = distinct !{!2878, !2879, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!2879 = distinct !{!2879, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!2880 = !{!2881, !2873, !2876, !2866, !2869}
!2881 = distinct !{!2881, !2879, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!2882 = !{!2883}
!2883 = distinct !{!2883, !2884, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!2884 = distinct !{!2884, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!2885 = !{!2886, !2883}
!2886 = distinct !{!2886, !2887, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!2887 = distinct !{!2887, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!2888 = !{!2889, !2891}
!2889 = distinct !{!2889, !2890, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!2890 = distinct !{!2890, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!2891 = distinct !{!2891, !2892, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!2892 = distinct !{!2892, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!2893 = !{!2891}
!2894 = !{!2895, !2897}
!2895 = distinct !{!2895, !2896, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!2896 = distinct !{!2896, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!2897 = distinct !{!2897, !2898, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!2898 = distinct !{!2898, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!2899 = !{!2900}
!2900 = distinct !{!2900, !2901, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2901 = distinct !{!2901, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2902 = !{!2903, !2905, !2907}
!2903 = distinct !{!2903, !2904, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2904 = distinct !{!2904, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2905 = distinct !{!2905, !2906, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2906 = distinct !{!2906, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2907 = distinct !{!2907, !2906, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2908 = !{!2909, !2907}
!2909 = distinct !{!2909, !2910, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2910 = distinct !{!2910, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2911 = !{!2905}
!2912 = !{!2905, !2907}
!2913 = distinct !{!2913, !1, !2}
!2914 = distinct !{!2914, !4}
!2915 = distinct !{!2915, !1, !2}
!2916 = !{!2917}
!2917 = distinct !{!2917, !2918, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!2918 = distinct !{!2918, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!2919 = !{!2920, !2921, !2923, !2924, !2926, !2927, !2929}
!2920 = distinct !{!2920, !2918, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!2921 = distinct !{!2921, !2922, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!2922 = distinct !{!2922, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!2923 = distinct !{!2923, !2922, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!2924 = distinct !{!2924, !2925, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!2925 = distinct !{!2925, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!2926 = distinct !{!2926, !2925, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!2927 = distinct !{!2927, !2928, !"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE: argument 0"}
!2928 = distinct !{!2928, !"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE"}
!2929 = distinct !{!2929, !2928, !"_ZN3int18i32.Rem$LT$Int$GT$3rem20h7db9410f8345f344PBfE: argument 1"}
!2930 = !{!2927, !2929}
!2931 = !{!2932, !2934, !2927, !2929}
!2932 = distinct !{!2932, !2933, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!2933 = distinct !{!2933, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!2934 = distinct !{!2934, !2935, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE: argument 0"}
!2935 = distinct !{!2935, !"_ZN3int35Int...std..convert..From$LT$i32$GT$4from20h1fcf502a863854bdKagE"}
!2936 = !{!2934}
!2937 = !{!2929}
!2938 = !{!2939}
!2939 = distinct !{!2939, !2940, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2940 = distinct !{!2940, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2941 = !{!2942}
!2942 = distinct !{!2942, !2943, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2943 = distinct !{!2943, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2944 = !{!2945, !2947}
!2945 = distinct !{!2945, !2946, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2946 = distinct !{!2946, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2947 = distinct !{!2947, !2946, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2948 = !{!2949}
!2949 = distinct !{!2949, !2950, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2950 = distinct !{!2950, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2951 = !{!2952, !2953, !2945, !2947}
!2952 = distinct !{!2952, !2950, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2953 = distinct !{!2953, !2954, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2954 = distinct !{!2954, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2955 = !{!2956}
!2956 = distinct !{!2956, !2957, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2957 = distinct !{!2957, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2958 = !{!2959, !2961}
!2959 = distinct !{!2959, !2960, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!2960 = distinct !{!2960, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!2961 = distinct !{!2961, !2960, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!2962 = !{!2963}
!2963 = distinct !{!2963, !2964, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!2964 = distinct !{!2964, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!2965 = !{!2966, !2967, !2959, !2961}
!2966 = distinct !{!2966, !2964, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!2967 = distinct !{!2967, !2968, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!2968 = distinct !{!2968, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!2969 = !{!2970, !2972}
!2970 = distinct !{!2970, !2971, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2971 = distinct !{!2971, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!2972 = distinct !{!2972, !2973, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!2973 = distinct !{!2973, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!2974 = !{!2975}
!2975 = distinct !{!2975, !2973, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!2976 = !{!2977, !2975, !2972}
!2977 = distinct !{!2977, !2978, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!2978 = distinct !{!2978, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!2979 = !{!2980, !2972}
!2980 = distinct !{!2980, !2981, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!2981 = distinct !{!2981, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!2982 = !{!2975, !2972}
!2983 = distinct !{!2983, !1, !2}
!2984 = distinct !{!2984, !4}
!2985 = distinct !{!2985, !1, !2}
!2986 = !{!2987, !2989}
!2987 = distinct !{!2987, !2988, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 0"}
!2988 = distinct !{!2988, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"}
!2989 = distinct !{!2989, !2988, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 1"}
!2990 = !{!2989}
!2991 = !{!2992, !2994}
!2992 = distinct !{!2992, !2993, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 0"}
!2993 = distinct !{!2993, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"}
!2994 = distinct !{!2994, !2993, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 1"}
!2995 = !{!2992}
!2996 = !{!2994}
!2997 = !{!2998, !3000}
!2998 = distinct !{!2998, !2999, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!2999 = distinct !{!2999, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3000 = distinct !{!3000, !3001, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3001 = distinct !{!3001, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3002 = !{!3003}
!3003 = distinct !{!3003, !3001, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3004 = !{!3005, !3003, !3000}
!3005 = distinct !{!3005, !3006, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3006 = distinct !{!3006, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3007 = !{!3008, !3000}
!3008 = distinct !{!3008, !3009, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3009 = distinct !{!3009, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3010 = !{!3003, !3000}
!3011 = distinct !{!3011, !1, !2}
!3012 = distinct !{!3012, !4}
!3013 = distinct !{!3013, !1, !2}
!3014 = !{!3015, !3017}
!3015 = distinct !{!3015, !3016, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 0"}
!3016 = distinct !{!3016, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"}
!3017 = distinct !{!3017, !3016, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 1"}
!3018 = !{!3017}
!3019 = !{!3020, !3022}
!3020 = distinct !{!3020, !3021, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3021 = distinct !{!3021, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3022 = distinct !{!3022, !3023, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3023 = distinct !{!3023, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3024 = !{!3025}
!3025 = distinct !{!3025, !3023, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3026 = !{!3027, !3025, !3022}
!3027 = distinct !{!3027, !3028, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3028 = distinct !{!3028, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3029 = !{!3030, !3022}
!3030 = distinct !{!3030, !3031, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3031 = distinct !{!3031, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3032 = !{!3025, !3022}
!3033 = distinct !{!3033, !1, !2}
!3034 = distinct !{!3034, !4}
!3035 = distinct !{!3035, !1, !2}
!3036 = !{!3037, !3039}
!3037 = distinct !{!3037, !3038, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE: argument 0"}
!3038 = distinct !{!3038, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE"}
!3039 = distinct !{!3039, !3038, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE: argument 1"}
!3040 = !{!3039}
!3041 = !{!3042, !3044}
!3042 = distinct !{!3042, !3043, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 0"}
!3043 = distinct !{!3043, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE"}
!3044 = distinct !{!3044, !3043, !"_ZN3int20Int.Add$LT$usize$GT$3add20ha334cc6613aba992mDfE: argument 1"}
!3045 = !{!3044}
!3046 = !{!3047, !3049, !3051}
!3047 = distinct !{!3047, !3048, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3048 = distinct !{!3048, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3049 = distinct !{!3049, !3050, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3050 = distinct !{!3050, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3051 = distinct !{!3051, !3052, !"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE: argument 1"}
!3052 = distinct !{!3052, !"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE"}
!3053 = !{!3054, !3055}
!3054 = distinct !{!3054, !3050, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3055 = distinct !{!3055, !3052, !"_ZN3int36_$RF$$u27$a$u20$Int.Sub$LT$usize$GT$3sub20hc640d5ef8fcc6539bIfE: argument 0"}
!3056 = !{!3057, !3054, !3049, !3055, !3051}
!3057 = distinct !{!3057, !3058, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3058 = distinct !{!3058, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3059 = !{!3060, !3049, !3051}
!3060 = distinct !{!3060, !3061, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3061 = distinct !{!3061, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3062 = !{!3054, !3049, !3055, !3051}
!3063 = distinct !{!3063, !1, !2}
!3064 = distinct !{!3064, !4}
!3065 = distinct !{!3065, !1, !2}
!3066 = !{!3055, !3051}
!3067 = !{!3055}
!3068 = !{!3051}
!3069 = !{!3070, !3072, !3055, !3051}
!3070 = distinct !{!3070, !3071, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE: argument 0"}
!3071 = distinct !{!3071, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE"}
!3072 = distinct !{!3072, !3071, !"_ZN3int20Int.Sub$LT$usize$GT$3sub20h5b56bcad7ef04e39VDfE: argument 1"}
!3073 = !{!3072, !3051}
!3074 = !{!3075}
!3075 = distinct !{!3075, !3076, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 1"}
!3076 = distinct !{!3076, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE"}
!3077 = !{!3078}
!3078 = distinct !{!3078, !3076, !"_ZN3int7Int.Neg3neg20h2c475002148903ed5WeE: argument 0"}
!3079 = !{!3078, !3075}
!3080 = !{!3081, !3083}
!3081 = distinct !{!3081, !3082, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3082 = distinct !{!3082, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3083 = distinct !{!3083, !3084, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3084 = distinct !{!3084, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3085 = !{!3086}
!3086 = distinct !{!3086, !3084, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3087 = !{!3088, !3086, !3083}
!3088 = distinct !{!3088, !3089, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3089 = distinct !{!3089, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3090 = !{!3091, !3083}
!3091 = distinct !{!3091, !3092, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3092 = distinct !{!3092, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3093 = !{!3086, !3083}
!3094 = distinct !{!3094, !1, !2}
!3095 = distinct !{!3095, !4}
!3096 = distinct !{!3096, !1, !2}
!3097 = !{!3098, !3100}
!3098 = distinct !{!3098, !3099, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 0"}
!3099 = distinct !{!3099, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE"}
!3100 = distinct !{!3100, !3099, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 1"}
!3101 = !{!3100}
!3102 = !{!3103, !3105}
!3103 = distinct !{!3103, !3104, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 0"}
!3104 = distinct !{!3104, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE"}
!3105 = distinct !{!3105, !3104, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 1"}
!3106 = !{!3105}
!3107 = !{!3108, !3110}
!3108 = distinct !{!3108, !3109, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3109 = distinct !{!3109, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3110 = distinct !{!3110, !3111, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3111 = distinct !{!3111, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3112 = !{!3113, !3115}
!3113 = distinct !{!3113, !3114, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3114 = distinct !{!3114, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3115 = distinct !{!3115, !3116, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3116 = distinct !{!3116, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3117 = !{!3118}
!3118 = distinct !{!3118, !3116, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3119 = !{!3120, !3118, !3115}
!3120 = distinct !{!3120, !3121, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3121 = distinct !{!3121, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3122 = !{!3123, !3115}
!3123 = distinct !{!3123, !3124, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3124 = distinct !{!3124, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3125 = !{!3118, !3115}
!3126 = distinct !{!3126, !1, !2}
!3127 = distinct !{!3127, !4}
!3128 = distinct !{!3128, !1, !2}
!3129 = !{!3130, !3132}
!3130 = distinct !{!3130, !3131, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 0"}
!3131 = distinct !{!3131, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE"}
!3132 = distinct !{!3132, !3131, !"_ZN3int20Int.Mul$LT$usize$GT$3mul20h919dfe7ebbdc9ce9uEfE: argument 1"}
!3133 = !{!3132}
!3134 = !{!3135, !3137}
!3135 = distinct !{!3135, !3136, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3136 = distinct !{!3136, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3137 = distinct !{!3137, !3138, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3138 = distinct !{!3138, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3139 = !{!3140}
!3140 = distinct !{!3140, !3138, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3141 = !{!3142, !3140, !3137}
!3142 = distinct !{!3142, !3143, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3143 = distinct !{!3143, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3144 = !{!3145, !3137}
!3145 = distinct !{!3145, !3146, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3146 = distinct !{!3146, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3147 = !{!3140, !3137}
!3148 = distinct !{!3148, !1, !2}
!3149 = distinct !{!3149, !4}
!3150 = distinct !{!3150, !1, !2}
!3151 = !{!3152, !3154}
!3152 = distinct !{!3152, !3153, !"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE: argument 0"}
!3153 = distinct !{!3153, !"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE"}
!3154 = distinct !{!3154, !3153, !"_ZN3int20Int.Div$LT$usize$GT$3div20hc8b2d82b8ba09483mFfE: argument 1"}
!3155 = !{!3156, !3158, !3152, !3154}
!3156 = distinct !{!3156, !3157, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!3157 = distinct !{!3157, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!3158 = distinct !{!3158, !3157, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!3159 = !{!3160}
!3160 = distinct !{!3160, !3161, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!3161 = distinct !{!3161, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!3162 = !{!3163, !3164, !3156, !3158, !3152, !3154}
!3163 = distinct !{!3163, !3161, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!3164 = distinct !{!3164, !3165, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!3165 = distinct !{!3165, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!3166 = !{!3152}
!3167 = !{!3154}
!3168 = !{!3169}
!3169 = distinct !{!3169, !3170, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3170 = distinct !{!3170, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3171 = !{!3172}
!3172 = distinct !{!3172, !3173, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!3173 = distinct !{!3173, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!3174 = !{!3175, !3172}
!3175 = distinct !{!3175, !3176, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!3176 = distinct !{!3176, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!3177 = !{!3178, !3180}
!3178 = distinct !{!3178, !3179, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3179 = distinct !{!3179, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3180 = distinct !{!3180, !3181, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE: argument 0"}
!3181 = distinct !{!3181, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"}
!3182 = !{!3180}
!3183 = !{!3184, !3186}
!3184 = distinct !{!3184, !3185, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3185 = distinct !{!3185, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3186 = distinct !{!3186, !3187, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3187 = distinct !{!3187, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3188 = !{!3189, !3191}
!3189 = distinct !{!3189, !3190, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3190 = distinct !{!3190, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3191 = distinct !{!3191, !3192, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3192 = distinct !{!3192, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3193 = !{!3191}
!3194 = !{!3195, !3197}
!3195 = distinct !{!3195, !3196, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3196 = distinct !{!3196, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3197 = distinct !{!3197, !3198, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3198 = distinct !{!3198, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3199 = !{!3200}
!3200 = distinct !{!3200, !3201, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3201 = distinct !{!3201, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3202 = !{!3203, !3205, !3207}
!3203 = distinct !{!3203, !3204, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3204 = distinct !{!3204, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3205 = distinct !{!3205, !3206, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3206 = distinct !{!3206, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3207 = distinct !{!3207, !3206, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3208 = !{!3209, !3207}
!3209 = distinct !{!3209, !3210, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3210 = distinct !{!3210, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3211 = !{!3205}
!3212 = !{!3205, !3207}
!3213 = distinct !{!3213, !1, !2}
!3214 = distinct !{!3214, !4}
!3215 = distinct !{!3215, !1, !2}
!3216 = !{!3217, !3219}
!3217 = distinct !{!3217, !3218, !"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE: argument 0"}
!3218 = distinct !{!3218, !"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE"}
!3219 = distinct !{!3219, !3218, !"_ZN3int20usize.Div$LT$Int$GT$3div20hd352afd97ded65b7dLfE: argument 1"}
!3220 = !{!3221, !3223, !3217, !3219}
!3221 = distinct !{!3221, !3222, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3222 = distinct !{!3222, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3223 = distinct !{!3223, !3224, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE: argument 0"}
!3224 = distinct !{!3224, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"}
!3225 = !{!3221, !3223}
!3226 = !{!3223}
!3227 = !{!3219}
!3228 = !{!3229}
!3229 = distinct !{!3229, !3230, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3230 = distinct !{!3230, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3231 = !{!3232, !3234}
!3232 = distinct !{!3232, !3233, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3233 = distinct !{!3233, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3234 = distinct !{!3234, !3235, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3235 = distinct !{!3235, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3236 = !{!3237, !3239, !3241}
!3237 = distinct !{!3237, !3238, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3238 = distinct !{!3238, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3239 = distinct !{!3239, !3240, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3240 = distinct !{!3240, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3241 = distinct !{!3241, !3240, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3242 = !{!3243, !3241}
!3243 = distinct !{!3243, !3244, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3244 = distinct !{!3244, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3245 = !{!3239}
!3246 = !{!3239, !3241}
!3247 = distinct !{!3247, !1, !2}
!3248 = distinct !{!3248, !4}
!3249 = distinct !{!3249, !1, !2}
!3250 = !{!3251, !3253}
!3251 = distinct !{!3251, !3252, !"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE: argument 0"}
!3252 = distinct !{!3252, !"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE"}
!3253 = distinct !{!3253, !3252, !"_ZN3int20Int.Rem$LT$usize$GT$3rem20h889c11a673518a719FfE: argument 1"}
!3254 = !{!3255, !3257, !3251, !3253}
!3255 = distinct !{!3255, !3256, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 0"}
!3256 = distinct !{!3256, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE"}
!3257 = distinct !{!3257, !3256, !"_ZN3int19Int.Div$LT$Limb$GT$3div20h718d23dca3d944b4TMeE: argument 1"}
!3258 = !{!3259}
!3259 = distinct !{!3259, !3260, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!3260 = distinct !{!3260, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!3261 = !{!3262, !3263, !3255, !3257, !3251, !3253}
!3262 = distinct !{!3262, !3260, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!3263 = distinct !{!3263, !3264, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE: argument 0"}
!3264 = distinct !{!3264, !"_ZN3int3Int9normalize20h48da099921c57a57x3dE"}
!3265 = !{!3251}
!3266 = !{!3253}
!3267 = !{!3268, !3270}
!3268 = distinct !{!3268, !3269, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3269 = distinct !{!3269, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3270 = distinct !{!3270, !3271, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!3271 = distinct !{!3271, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!3272 = !{!3273}
!3273 = distinct !{!3273, !3271, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!3274 = !{!3275, !3277, !3270}
!3275 = distinct !{!3275, !3276, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3276 = distinct !{!3276, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3277 = distinct !{!3277, !3278, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3278 = distinct !{!3278, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3279 = !{!3280, !3273}
!3280 = distinct !{!3280, !3278, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3281 = !{!3282}
!3282 = distinct !{!3282, !3283, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3283 = distinct !{!3283, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3284 = !{!3285, !3277, !3280, !3270, !3273}
!3285 = distinct !{!3285, !3283, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3286 = !{!3287}
!3287 = distinct !{!3287, !3288, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE: argument 0"}
!3288 = distinct !{!3288, !"_ZN3int8Int.Drop4drop20h7d1f2b7ada921d19I8dE"}
!3289 = !{!3290, !3287}
!3290 = distinct !{!3290, !3291, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E: argument 0"}
!3291 = distinct !{!3291, !"_ZN3ptr15Unique$LT$T$GT$7get_mut20h5789387123786096517E"}
!3292 = !{!3293, !3295}
!3293 = distinct !{!3293, !3294, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3294 = distinct !{!3294, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3295 = distinct !{!3295, !3296, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE: argument 0"}
!3296 = distinct !{!3296, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"}
!3297 = !{!3295}
!3298 = !{!3299, !3301}
!3299 = distinct !{!3299, !3300, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3300 = distinct !{!3300, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3301 = distinct !{!3301, !3302, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3302 = distinct !{!3302, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3303 = !{!3304}
!3304 = distinct !{!3304, !3305, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3305 = distinct !{!3305, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3306 = !{!3307, !3309, !3311}
!3307 = distinct !{!3307, !3308, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3308 = distinct !{!3308, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3309 = distinct !{!3309, !3310, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 0"}
!3310 = distinct !{!3310, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE"}
!3311 = distinct !{!3311, !3310, !"_ZN3int9Int.Clone5clone20h508b4568c80592e9F5dE: argument 1"}
!3312 = !{!3313, !3311}
!3313 = distinct !{!3313, !3314, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3314 = distinct !{!3314, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3315 = !{!3309}
!3316 = !{!3309, !3311}
!3317 = distinct !{!3317, !1, !2}
!3318 = distinct !{!3318, !4}
!3319 = distinct !{!3319, !1, !2}
!3320 = !{!3321}
!3321 = distinct !{!3321, !3322, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3322 = distinct !{!3322, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3323 = !{!3324, !3325, !3327, !3328, !3330, !3331, !3333}
!3324 = distinct !{!3324, !3322, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3325 = distinct !{!3325, !3326, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3326 = distinct !{!3326, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3327 = distinct !{!3327, !3326, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3328 = distinct !{!3328, !3329, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!3329 = distinct !{!3329, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!3330 = distinct !{!3330, !3329, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!3331 = distinct !{!3331, !3332, !"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE: argument 0"}
!3332 = distinct !{!3332, !"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE"}
!3333 = distinct !{!3333, !3332, !"_ZN3int20usize.Rem$LT$Int$GT$3rem20h46fa34384d498fcdtNfE: argument 1"}
!3334 = !{!3331, !3333}
!3335 = !{!3336, !3338, !3331, !3333}
!3336 = distinct !{!3336, !3337, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3337 = distinct !{!3337, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3338 = distinct !{!3338, !3339, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE: argument 0"}
!3339 = distinct !{!3339, !"_ZN3int37Int...std..convert..From$LT$usize$GT$4from20hca0ec16dd925e9b3UngE"}
!3340 = !{!3336, !3338}
!3341 = !{!3338}
!3342 = !{!3333}
!3343 = !{!3344}
!3344 = distinct !{!3344, !3345, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!3345 = distinct !{!3345, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!3346 = !{!3347}
!3347 = distinct !{!3347, !3345, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!3348 = !{!3349, !3347}
!3349 = distinct !{!3349, !3350, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3350 = distinct !{!3350, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3351 = !{!3352, !3347}
!3352 = distinct !{!3352, !3353, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3353 = distinct !{!3353, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3354 = !{!3355}
!3355 = distinct !{!3355, !3356, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 0"}
!3356 = distinct !{!3356, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE"}
!3357 = !{!3358, !3347, !3344}
!3358 = distinct !{!3358, !3356, !"_ZN2ll4limb29Limb.PartialEq$LT$BaseInt$GT$2eq20h35f4bea9be51284eFfdE: argument 1"}
!3359 = !{!3360, !3362, !3347}
!3360 = distinct !{!3360, !3361, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3361 = distinct !{!3361, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3362 = distinct !{!3362, !3363, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3363 = distinct !{!3363, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3364 = !{!3365, !3344}
!3365 = distinct !{!3365, !3363, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3366 = !{!3367}
!3367 = distinct !{!3367, !3368, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3368 = distinct !{!3368, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3369 = !{!3370, !3362, !3365, !3347, !3344}
!3370 = distinct !{!3370, !3368, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3371 = !{!3372}
!3372 = distinct !{!3372, !3373, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3373 = distinct !{!3373, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3374 = !{!3375, !3377}
!3375 = distinct !{!3375, !3376, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3376 = distinct !{!3376, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3377 = distinct !{!3377, !3378, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3378 = distinct !{!3378, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3379 = !{!3377}
!3380 = !{!3381, !3383, !3385}
!3381 = distinct !{!3381, !3382, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3382 = distinct !{!3382, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3383 = distinct !{!3383, !3384, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3384 = distinct !{!3384, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3385 = distinct !{!3385, !3386, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!3386 = distinct !{!3386, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!3387 = !{!3388, !3389}
!3388 = distinct !{!3388, !3384, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3389 = distinct !{!3389, !3386, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!3390 = !{!3391}
!3391 = distinct !{!3391, !3392, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3392 = distinct !{!3392, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3393 = !{!3394, !3383, !3388, !3385, !3389}
!3394 = distinct !{!3394, !3392, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3395 = !{!3396}
!3396 = distinct !{!3396, !3397, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE: argument 1"}
!3397 = distinct !{!3397, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE"}
!3398 = !{!3399}
!3399 = distinct !{!3399, !3397, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE: argument 0"}
!3400 = !{!3401, !3399}
!3401 = distinct !{!3401, !3402, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3402 = distinct !{!3402, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3403 = !{!3404, !3406, !3399}
!3404 = distinct !{!3404, !3405, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3405 = distinct !{!3405, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3406 = distinct !{!3406, !3407, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3407 = distinct !{!3407, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3408 = !{!3406, !3399, !3396}
!3409 = !{!3410, !3412, !3414, !3399}
!3410 = distinct !{!3410, !3411, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3411 = distinct !{!3411, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3412 = distinct !{!3412, !3413, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3413 = distinct !{!3413, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3414 = distinct !{!3414, !3415, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!3415 = distinct !{!3415, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!3416 = !{!3417, !3418, !3396}
!3417 = distinct !{!3417, !3413, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3418 = distinct !{!3418, !3415, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!3419 = !{!3420}
!3420 = distinct !{!3420, !3421, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3421 = distinct !{!3421, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3422 = !{!3423, !3412, !3417, !3414, !3418, !3399, !3396}
!3423 = distinct !{!3423, !3421, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3424 = !{!3425}
!3425 = distinct !{!3425, !3426, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3426 = distinct !{!3426, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3427 = !{!3428}
!3428 = distinct !{!3428, !3426, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3429 = !{!3430, !3425}
!3430 = distinct !{!3430, !3431, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3431 = distinct !{!3431, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3432 = !{!3433}
!3433 = distinct !{!3433, !3434, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3434 = distinct !{!3434, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3435 = !{!3436, !3425, !3428}
!3436 = distinct !{!3436, !3434, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3437 = !{!3438}
!3438 = distinct !{!3438, !3439, !"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE: argument 1"}
!3439 = distinct !{!3439, !"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE"}
!3440 = !{!3441}
!3441 = distinct !{!3441, !3439, !"_ZN3int26Int.PartialEq$LT$usize$GT$2eq20h891cf2abc5407b20N4fE: argument 0"}
!3442 = !{!3443, !3441}
!3443 = distinct !{!3443, !3444, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3444 = distinct !{!3444, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3445 = !{!3446, !3438}
!3446 = distinct !{!3446, !3444, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3447 = !{!3448, !3443, !3441}
!3448 = distinct !{!3448, !3449, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3449 = distinct !{!3449, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3450 = !{!3451}
!3451 = distinct !{!3451, !3452, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3452 = distinct !{!3452, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3453 = !{!3454, !3443, !3446, !3441, !3438}
!3454 = distinct !{!3454, !3452, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3455 = !{!3456, !3458}
!3456 = distinct !{!3456, !3457, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3457 = distinct !{!3457, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3458 = distinct !{!3458, !3459, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!3459 = distinct !{!3459, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!3460 = !{!3461, !3462}
!3461 = distinct !{!3461, !3457, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3462 = distinct !{!3462, !3459, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!3463 = !{!3464, !3456, !3458}
!3464 = distinct !{!3464, !3465, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3465 = distinct !{!3465, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3466 = !{!3467}
!3467 = distinct !{!3467, !3468, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3468 = distinct !{!3468, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3469 = !{!3470, !3456, !3461, !3458, !3462}
!3470 = distinct !{!3470, !3468, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3471 = !{!3472, !3474, !3476}
!3472 = distinct !{!3472, !3473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3473 = distinct !{!3473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3474 = distinct !{!3474, !3475, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!3475 = distinct !{!3475, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!3476 = distinct !{!3476, !3477, !"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE: argument 1"}
!3477 = distinct !{!3477, !"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE"}
!3478 = !{!3479, !3480, !3481}
!3479 = distinct !{!3479, !3473, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3480 = distinct !{!3480, !3475, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!3481 = distinct !{!3481, !3477, !"_ZN3int26Limb.PartialOrd$LT$Int$GT$11partial_cmp20heab942b08b699484KeeE: argument 0"}
!3482 = !{!3483, !3472, !3474, !3476}
!3483 = distinct !{!3483, !3484, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3484 = distinct !{!3484, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3485 = !{!3486}
!3486 = distinct !{!3486, !3487, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3487 = distinct !{!3487, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3488 = !{!3489, !3472, !3479, !3474, !3480, !3481, !3476}
!3489 = distinct !{!3489, !3487, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3490 = !{!3491, !3493}
!3491 = distinct !{!3491, !3492, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3492 = distinct !{!3492, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3493 = distinct !{!3493, !3494, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3494 = distinct !{!3494, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3495 = !{!3496, !3498}
!3496 = distinct !{!3496, !3497, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3497 = distinct !{!3497, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3498 = distinct !{!3498, !3499, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3499 = distinct !{!3499, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3500 = !{!3498}
!3501 = !{!3502, !3504}
!3502 = distinct !{!3502, !3503, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3503 = distinct !{!3503, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3504 = distinct !{!3504, !3505, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3505 = distinct !{!3505, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3506 = !{!3507, !3509}
!3507 = distinct !{!3507, !3508, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3508 = distinct !{!3508, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3509 = distinct !{!3509, !3510, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3510 = distinct !{!3510, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3511 = !{!3509}
!3512 = !{!3513, !3515}
!3513 = distinct !{!3513, !3514, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3514 = distinct !{!3514, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3515 = distinct !{!3515, !3516, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3516 = distinct !{!3516, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3517 = !{!3518, !3520}
!3518 = distinct !{!3518, !3519, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3519 = distinct !{!3519, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3520 = distinct !{!3520, !3521, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3521 = distinct !{!3521, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3522 = !{!3520}
!3523 = !{!3524, !3526}
!3524 = distinct !{!3524, !3525, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3525 = distinct !{!3525, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3526 = distinct !{!3526, !3527, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3527 = distinct !{!3527, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3528 = !{!3529, !3531}
!3529 = distinct !{!3529, !3530, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3530 = distinct !{!3530, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3531 = distinct !{!3531, !3532, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3532 = distinct !{!3532, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3533 = !{!3531}
!3534 = !{!3535, !3537}
!3535 = distinct !{!3535, !3536, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3536 = distinct !{!3536, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3537 = distinct !{!3537, !3538, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3538 = distinct !{!3538, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3539 = !{!3540, !3542}
!3540 = distinct !{!3540, !3541, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3541 = distinct !{!3541, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3542 = distinct !{!3542, !3543, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3543 = distinct !{!3543, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3544 = !{!3542}
!3545 = !{!3546, !3548}
!3546 = distinct !{!3546, !3547, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE: argument 0"}
!3547 = distinct !{!3547, !"_ZN3int18Int.std..num..Zero4zero20h1866f9e9302bd6b9mQgE"}
!3548 = distinct !{!3548, !3549, !"_ZN3int3Int4zero20h73cd13321f814714HIdE: argument 0"}
!3549 = distinct !{!3549, !"_ZN3int3Int4zero20h73cd13321f814714HIdE"}
!3550 = !{!3551, !3553}
!3551 = distinct !{!3551, !3552, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE: argument 0"}
!3552 = distinct !{!3552, !"_ZN3int3Int13with_capacity20h478043ffe5613a47oJdE"}
!3553 = distinct !{!3553, !3554, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE: argument 0"}
!3554 = distinct !{!3554, !"_ZN3int3Int16from_single_limb20h602a08dc8919fb1eVIdE"}
!3555 = !{!3553}
!3556 = !{!3557, !3559, !3561}
!3557 = distinct !{!3557, !3558, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!3558 = distinct !{!3558, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!3559 = distinct !{!3559, !3560, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 1"}
!3560 = distinct !{!3560, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E"}
!3561 = distinct !{!3561, !3562, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 1"}
!3562 = distinct !{!3562, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE"}
!3563 = !{!3564, !3565, !3566}
!3564 = distinct !{!3564, !3558, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!3565 = distinct !{!3565, !3560, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 0"}
!3566 = distinct !{!3566, !3562, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 0"}
!3567 = !{!3568}
!3568 = distinct !{!3568, !3569, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3569 = distinct !{!3569, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3570 = !{!3571, !3573, !3575}
!3571 = distinct !{!3571, !3572, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!3572 = distinct !{!3572, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!3573 = distinct !{!3573, !3574, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!3574 = distinct !{!3574, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!3575 = distinct !{!3575, !3574, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!3576 = !{!3573, !3575}
!3577 = !{!3578}
!3578 = distinct !{!3578, !3579, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3579 = distinct !{!3579, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3580 = !{!3581}
!3581 = distinct !{!3581, !3582, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3582 = distinct !{!3582, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3583 = !{!3584, !3586, !3588}
!3584 = distinct !{!3584, !3585, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!3585 = distinct !{!3585, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!3586 = distinct !{!3586, !3587, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 1"}
!3587 = distinct !{!3587, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E"}
!3588 = distinct !{!3588, !3589, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 1"}
!3589 = distinct !{!3589, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE"}
!3590 = !{!3591, !3592, !3593}
!3591 = distinct !{!3591, !3585, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!3592 = distinct !{!3592, !3587, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 0"}
!3593 = distinct !{!3593, !3589, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 0"}
!3594 = !{!3595}
!3595 = distinct !{!3595, !3596, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3596 = distinct !{!3596, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3597 = !{!3598, !3600, !3602}
!3598 = distinct !{!3598, !3599, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!3599 = distinct !{!3599, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!3600 = distinct !{!3600, !3601, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!3601 = distinct !{!3601, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!3602 = distinct !{!3602, !3601, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!3603 = !{!3600, !3602}
!3604 = !{!3605}
!3605 = distinct !{!3605, !3606, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3606 = distinct !{!3606, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3607 = !{!3608}
!3608 = distinct !{!3608, !3609, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3609 = distinct !{!3609, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3610 = !{!3611, !3613, !3615}
!3611 = distinct !{!3611, !3612, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!3612 = distinct !{!3612, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!3613 = distinct !{!3613, !3614, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 1"}
!3614 = distinct !{!3614, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E"}
!3615 = distinct !{!3615, !3616, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 1"}
!3616 = distinct !{!3616, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE"}
!3617 = !{!3618, !3619, !3620}
!3618 = distinct !{!3618, !3612, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!3619 = distinct !{!3619, !3614, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 0"}
!3620 = distinct !{!3620, !3616, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 0"}
!3621 = !{!3622}
!3622 = distinct !{!3622, !3623, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3623 = distinct !{!3623, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3624 = !{!3625, !3627, !3629}
!3625 = distinct !{!3625, !3626, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!3626 = distinct !{!3626, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!3627 = distinct !{!3627, !3628, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!3628 = distinct !{!3628, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!3629 = distinct !{!3629, !3628, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!3630 = !{!3627, !3629}
!3631 = !{!3632}
!3632 = distinct !{!3632, !3633, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3633 = distinct !{!3633, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3634 = !{!3635}
!3635 = distinct !{!3635, !3636, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3636 = distinct !{!3636, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3637 = !{!3638, !3640, !3642}
!3638 = distinct !{!3638, !3639, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!3639 = distinct !{!3639, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!3640 = distinct !{!3640, !3641, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 1"}
!3641 = distinct !{!3641, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E"}
!3642 = distinct !{!3642, !3643, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 1"}
!3643 = distinct !{!3643, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE"}
!3644 = !{!3645, !3646, !3647}
!3645 = distinct !{!3645, !3639, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!3646 = distinct !{!3646, !3641, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 0"}
!3647 = distinct !{!3647, !3643, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 0"}
!3648 = !{!3649}
!3649 = distinct !{!3649, !3650, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3650 = distinct !{!3650, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3651 = !{!3652, !3654, !3656}
!3652 = distinct !{!3652, !3653, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!3653 = distinct !{!3653, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!3654 = distinct !{!3654, !3655, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!3655 = distinct !{!3655, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!3656 = distinct !{!3656, !3655, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!3657 = !{!3654, !3656}
!3658 = !{!3659}
!3659 = distinct !{!3659, !3660, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3660 = distinct !{!3660, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3661 = !{!3662}
!3662 = distinct !{!3662, !3663, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3663 = distinct !{!3663, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3664 = !{!3665, !3667, !3669}
!3665 = distinct !{!3665, !3666, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 1"}
!3666 = distinct !{!3666, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E"}
!3667 = distinct !{!3667, !3668, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 1"}
!3668 = distinct !{!3668, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E"}
!3669 = distinct !{!3669, !3670, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 1"}
!3670 = distinct !{!3670, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE"}
!3671 = !{!3672, !3673, !3674}
!3672 = distinct !{!3672, !3666, !"_ZN3vec23Vec$LT$T$GT$.ops..Deref5deref21h10736786393553254217E: argument 0"}
!3673 = distinct !{!3673, !3668, !"_ZN3vec45Vec$LT$T$GT$.ops..Index$LT$ops..RangeFull$GT$5index20h4253727423201846084E: argument 0"}
!3674 = distinct !{!3674, !3670, !"_ZN6string17String.ops..Deref5deref20hf476501def19c75f5MhE: argument 0"}
!3675 = !{!3676}
!3676 = distinct !{!3676, !3677, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3677 = distinct !{!3677, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3678 = !{!3679, !3681, !3683}
!3679 = distinct !{!3679, !3680, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE: argument 0"}
!3680 = distinct !{!3680, !"_ZN3str10str.StrExt16is_char_boundary20h1a0dcee65d75ecf7VcKE"}
!3681 = distinct !{!3681, !3682, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 0"}
!3682 = distinct !{!3682, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE"}
!3683 = distinct !{!3683, !3682, !"_ZN3str6traits49str.ops..Index$LT$ops..RangeFrom$LT$usize$GT$$GT$5index20h8cc9882e1a3077bewOJE: argument 1"}
!3684 = !{!3681, !3683}
!3685 = !{!3686}
!3686 = distinct !{!3686, !3687, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3687 = distinct !{!3687, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3688 = !{!3689}
!3689 = distinct !{!3689, !3690, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E: argument 0"}
!3690 = distinct !{!3690, !"_ZN3vec17Vec$LT$T$GT$.Drop4drop20h3523324069760055170E"}
!3691 = !{!3692}
!3692 = distinct !{!3692, !3693, !"_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE: argument 1"}
!3693 = distinct !{!3693, !"_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE"}
!3694 = !{!3695}
!3695 = distinct !{!3695, !3693, !"_ZN3int31ErrorKind...std..cmp..PartialEq2eq20h5cac9947d500d922qwgE: argument 0"}
!3696 = !{!3697}
!3697 = distinct !{!3697, !3698, !"_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE: argument 1"}
!3698 = distinct !{!3698, !"_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE"}
!3699 = !{!3700}
!3700 = distinct !{!3700, !3698, !"_ZN3int31ErrorKind...std..cmp..PartialEq2ne20hfb896987fcd0364enxgE: argument 0"}
!3701 = !{!3702}
!3702 = distinct !{!3702, !3703, !"_ZN3int29ErrorKind...std..clone..Clone5clone20hf0484924b71d5807oygE: argument 0"}
!3703 = distinct !{!3703, !"_ZN3int29ErrorKind...std..clone..Clone5clone20hf0484924b71d5807oygE"}
!3704 = !{!3705, !3707, !3708}
!3705 = distinct !{!3705, !3706, !"_ZN3fmt23Formatter$LT$$u27$a$GT$12debug_struct20hea6b45b64e25056b9sNE: argument 0"}
!3706 = distinct !{!3706, !"_ZN3fmt23Formatter$LT$$u27$a$GT$12debug_struct20hea6b45b64e25056b9sNE"}
!3707 = distinct !{!3707, !3706, !"_ZN3fmt23Formatter$LT$$u27$a$GT$12debug_struct20hea6b45b64e25056b9sNE: argument 1"}
!3708 = distinct !{!3708, !3706, !"_ZN3fmt23Formatter$LT$$u27$a$GT$12debug_struct20hea6b45b64e25056b9sNE: argument 2"}
!3709 = !{!3705, !3707}
!3710 = !{!3708}
!3711 = !{!3712}
!3712 = distinct !{!3712, !3713, !"_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE: argument 0"}
!3713 = distinct !{!3713, !"_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE"}
!3714 = !{!3715}
!3715 = distinct !{!3715, !3713, !"_ZN3int27ErrorKind...std..fmt..Debug3fmt20h05dc67b635fdfde7MygE: argument 1"}
!3716 = !{!3712, !3715}
!3717 = !{!3718, !3720, !3721, !3712, !3715}
!3718 = distinct !{!3718, !3719, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 0"}
!3719 = distinct !{!3719, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE"}
!3720 = distinct !{!3720, !3719, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 1"}
!3721 = distinct !{!3721, !3719, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 2"}
!3722 = !{!3718, !3720, !3712}
!3723 = !{!3721, !3712}
!3724 = !{!3725, !3727, !3728, !3712, !3715}
!3725 = distinct !{!3725, !3726, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 0"}
!3726 = distinct !{!3726, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE"}
!3727 = distinct !{!3727, !3726, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 1"}
!3728 = distinct !{!3728, !3726, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 2"}
!3729 = !{!3725, !3727, !3712}
!3730 = !{!3728, !3712}
!3731 = !{!3732, !3734, !3735}
!3732 = distinct !{!3732, !3733, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 0"}
!3733 = distinct !{!3733, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE"}
!3734 = distinct !{!3734, !3733, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 1"}
!3735 = distinct !{!3735, !3733, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 2"}
!3736 = !{!3732, !3734}
!3737 = !{!3735}
!3738 = !{!3739, !3741, !3742}
!3739 = distinct !{!3739, !3740, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 0"}
!3740 = distinct !{!3740, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE"}
!3741 = distinct !{!3741, !3740, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 1"}
!3742 = distinct !{!3742, !3740, !"_ZN3fmt23Formatter$LT$$u27$a$GT$11debug_tuple20h91a1d91fff9e077estNE: argument 2"}
!3743 = !{!3739, !3741}
!3744 = !{!3742}
!3745 = !{!3746}
!3746 = distinct !{!3746, !3747, !"_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE: argument 1"}
!3747 = distinct !{!3747, !"_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE"}
!3748 = !{!3749}
!3749 = distinct !{!3749, !3747, !"_ZN3int19ParseIntError.Error11description20hfb20e0cf2111c29ckzgE: argument 0"}
!3750 = !{!3749, !3746}
!3751 = !{!3752}
!3752 = distinct !{!3752, !3753, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3753 = distinct !{!3753, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3754 = !{!3755, !3757}
!3755 = distinct !{!3755, !3756, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3756 = distinct !{!3756, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3757 = distinct !{!3757, !3758, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3758 = distinct !{!3758, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3759 = !{!3757}
!3760 = !{!3761}
!3761 = distinct !{!3761, !3762, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3762 = distinct !{!3762, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3763 = !{!3764, !3766}
!3764 = distinct !{!3764, !3765, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3765 = distinct !{!3765, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3766 = distinct !{!3766, !3767, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3767 = distinct !{!3767, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3768 = !{!3766}
!3769 = !{!3770}
!3770 = distinct !{!3770, !3771, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3771 = distinct !{!3771, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3772 = !{!3773, !3775}
!3773 = distinct !{!3773, !3774, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3774 = distinct !{!3774, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3775 = distinct !{!3775, !3776, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3776 = distinct !{!3776, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3777 = !{!3775}
!3778 = !{!3779}
!3779 = distinct !{!3779, !3780, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3780 = distinct !{!3780, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3781 = !{!3782, !3784}
!3782 = distinct !{!3782, !3783, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3783 = distinct !{!3783, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3784 = distinct !{!3784, !3785, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3785 = distinct !{!3785, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3786 = !{!3784}
!3787 = !{!3788}
!3788 = distinct !{!3788, !3789, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3789 = distinct !{!3789, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3790 = !{!3791, !3793}
!3791 = distinct !{!3791, !3792, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3792 = distinct !{!3792, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3793 = distinct !{!3793, !3794, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3794 = distinct !{!3794, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3795 = !{!3793}
!3796 = !{!3797}
!3797 = distinct !{!3797, !3798, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3798 = distinct !{!3798, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3799 = !{!3800, !3802}
!3800 = distinct !{!3800, !3801, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3801 = distinct !{!3801, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3802 = distinct !{!3802, !3803, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3803 = distinct !{!3803, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3804 = !{!3802}
!3805 = !{!3806}
!3806 = distinct !{!3806, !3807, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3807 = distinct !{!3807, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3808 = !{!3809, !3811}
!3809 = distinct !{!3809, !3810, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3810 = distinct !{!3810, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3811 = distinct !{!3811, !3812, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3812 = distinct !{!3812, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3813 = !{!3811}
!3814 = !{!3815}
!3815 = distinct !{!3815, !3816, !"_ZN3int3Int4sign20he27417198f6be603VJdE: argument 0"}
!3816 = distinct !{!3816, !"_ZN3int3Int4sign20he27417198f6be603VJdE"}
!3817 = !{!3818, !3820}
!3818 = distinct !{!3818, !3819, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3819 = distinct !{!3819, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3820 = distinct !{!3820, !3821, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3821 = distinct !{!3821, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3822 = !{!3820}
!3823 = !{!3824, !3826}
!3824 = distinct !{!3824, !3825, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE: argument 0"}
!3825 = distinct !{!3825, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE"}
!3826 = distinct !{!3826, !3827, !"_ZN3cmp10PartialOrd2le20h9428514766350064483E: argument 0"}
!3827 = distinct !{!3827, !"_ZN3cmp10PartialOrd2le20h9428514766350064483E"}
!3828 = !{!3829}
!3829 = distinct !{!3829, !3825, !"_ZN3int25Int.PartialOrd$LT$i32$GT$11partial_cmp20h893679b653b5d3dcu2fE: argument 1"}
!3830 = !{!3831}
!3831 = distinct !{!3831, !3832, !"_ZN3int3Int3abs20h5abd7cbfb9f35df9kKdE: argument 1"}
!3832 = distinct !{!3832, !"_ZN3int3Int3abs20h5abd7cbfb9f35df9kKdE"}
!3833 = !{!3834}
!3834 = distinct !{!3834, !3832, !"_ZN3int3Int3abs20h5abd7cbfb9f35df9kKdE: argument 0"}
!3835 = !{!3836, !3838, !3840, !3842}
!3836 = distinct !{!3836, !3837, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E: argument 0"}
!3837 = distinct !{!3837, !"_ZN3ptr15Unique$LT$T$GT$3get21h18410595942240949523E"}
!3838 = distinct !{!3838, !3839, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3839 = distinct !{!3839, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3840 = distinct !{!3840, !3841, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 0"}
!3841 = distinct !{!3841, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE"}
!3842 = distinct !{!3842, !3843, !"_ZN3cmp9PartialEq2ne20h3701970621904719227E: argument 0"}
!3843 = distinct !{!3843, !"_ZN3cmp9PartialEq2ne20h3701970621904719227E"}
!3844 = !{!3845, !3846}
!3845 = distinct !{!3845, !3839, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3846 = distinct !{!3846, !3841, !"_ZN3int24Int.PartialEq$LT$i32$GT$2eq20h5beecea93d1a24faC0fE: argument 1"}
!3847 = !{!3848}
!3848 = distinct !{!3848, !3849, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3849 = distinct !{!3849, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3850 = !{!3851, !3838, !3845, !3840, !3846, !3842}
!3851 = distinct !{!3851, !3849, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3852 = !{!3853}
!3853 = distinct !{!3853, !3854, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 0"}
!3854 = distinct !{!3854, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE"}
!3855 = !{!3856, !3857, !3859, !3860, !3862, !3863, !3865, !3866}
!3856 = distinct !{!3856, !3854, !"_ZN2ll4limb26Limb.PartialEq$LT$Limb$GT$2eq20h4cb2b7fcb0b87c8aFddE: argument 1"}
!3857 = distinct !{!3857, !3858, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 0"}
!3858 = distinct !{!3858, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE"}
!3859 = distinct !{!3859, !3858, !"_ZN3int25Int.PartialEq$LT$Limb$GT$2eq20hfda5b821e01449d6ebeE: argument 1"}
!3860 = distinct !{!3860, !3861, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 0"}
!3861 = distinct !{!3861, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE"}
!3862 = distinct !{!3862, !3861, !"_ZN3int26Int.PartialOrd$LT$Limb$GT$11partial_cmp20hd9b2c4ef87c045d3RdeE: argument 1"}
!3863 = distinct !{!3863, !3864, !"_ZN3int27Int.PartialOrd$LT$usize$GT$11partial_cmp20hd2708848c5c470b2x5fE: argument 0"}
!3864 = distinct !{!3864, !"_ZN3int27Int.PartialOrd$LT$usize$GT$11partial_cmp20hd2708848c5c470b2x5fE"}
!3865 = distinct !{!3865, !3864, !"_ZN3int27Int.PartialOrd$LT$usize$GT$11partial_cmp20hd2708848c5c470b2x5fE: argument 1"}
!3866 = distinct !{!3866, !3867, !"_ZN3cmp10PartialOrd2gt20h4874158518261656904E: argument 0"}
!3867 = distinct !{!3867, !"_ZN3cmp10PartialOrd2gt20h4874158518261656904E"}
!3868 = !{!3869, !3871}
!3869 = distinct !{!3869, !3870, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE: argument 0"}
!3870 = distinct !{!3870, !"_ZN3int3Int14to_single_limb20h2f2d1e1d0b823aa6zKdE"}
!3871 = distinct !{!3871, !3872, !"_ZN3int52usize...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h416f27c33e7c9cd3VOgE: argument 0"}
!3872 = distinct !{!3872, !"_ZN3int52usize...std..convert..From$LT$$RF$$u27$a$u20$Int$GT$4from20h416f27c33e7c9cd3VOgE"}